summaryrefslogtreecommitdiff
path: root/dviware/quicspool/libtrw/getopt.c
diff options
context:
space:
mode:
Diffstat (limited to 'dviware/quicspool/libtrw/getopt.c')
-rw-r--r--dviware/quicspool/libtrw/getopt.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/dviware/quicspool/libtrw/getopt.c b/dviware/quicspool/libtrw/getopt.c
new file mode 100644
index 0000000000..b81dc931c3
--- /dev/null
+++ b/dviware/quicspool/libtrw/getopt.c
@@ -0,0 +1,61 @@
+static char *rcs = "$Header: getopt.c,v 1.1 88/01/15 12:56:30 simpson Rel $";
+/*
+$Log: getopt.c,v $
+ * Revision 1.1 88/01/15 12:56:30 simpson
+ * initial release
+ *
+ * Revision 0.1 87/12/11 17:14:09 simpson
+ * beta test
+ *
+*/
+#include <stdio.h>
+
+/*
+ * get option letter from argument vector
+ */
+int opterr = 1, /* useless, never set or used */
+ optind = 1, /* index into parent argv vector */
+ optopt; /* character checked for validity */
+char *optarg; /* argument associated with option */
+
+#define BADCH (int)'?'
+#define EMSG ""
+#define tell(s) fputs(*nargv,stderr);fputs(s,stderr); \
+ fputc(optopt,stderr);fputc('\n',stderr);return(BADCH);
+
+getopt(nargc,nargv,ostr)
+int nargc;
+char **nargv,
+ *ostr;
+{
+ static char *place = EMSG; /* option letter processing */
+ register char *oli; /* option letter list index */
+ char *index();
+
+ if(!*place) { /* update scanning pointer */
+ if(optind >= nargc || *(place = nargv[optind]) != '-' || !*++place) return(EOF);
+ if (*place == '-') { /* found "--" */
+ ++optind;
+ return(EOF);
+ }
+ } /* option letter okay? */
+ if ((optopt = (int)*place++) == (int)':' || !(oli = index(ostr,optopt))) {
+ if(!*place) ++optind;
+ tell(": illegal option -- ");
+ }
+ if (*++oli != ':') { /* don't need argument */
+ optarg = NULL;
+ if (!*place) ++optind;
+ }
+ else { /* need an argument */
+ if (*place) optarg = place; /* no white space */
+ else if (nargc <= ++optind) { /* no arg */
+ place = EMSG;
+ tell(": option requires an argument -- ");
+ }
+ else optarg = nargv[optind]; /* white space */
+ place = EMSG;
+ ++optind;
+ }
+ return(optopt); /* dump back option letter */
+}