moved getopt to stdio, because it uses it
authorceriel <none@none>
Wed, 3 Aug 1988 14:42:47 +0000 (14:42 +0000)
committerceriel <none@none>
Wed, 3 Aug 1988 14:42:47 +0000 (14:42 +0000)
lang/cem/libcc/gen/LIST
lang/cem/libcc/stdio/LIST
lang/cem/libcc/stdio/getopt.c [new file with mode: 0644]

index 24f2814..97fac09 100644 (file)
@@ -17,7 +17,6 @@ ffs.c
 gcvt.c
 ecvt.c
 getlogin.c
-getopt.c
 index.c
 l3.c
 ldexp.c
index a9249f2..eea742c 100644 (file)
@@ -1,5 +1,6 @@
 tail_cc.1s.a
 termcap.c
+getopt.c
 clearerr.c
 fgetc.c
 fgets.c
diff --git a/lang/cem/libcc/stdio/getopt.c b/lang/cem/libcc/stdio/getopt.c
new file mode 100644 (file)
index 0000000..7e4b0d3
--- /dev/null
@@ -0,0 +1,58 @@
+/* $Header$ */
+#include       <stdio.h>
+#define ERR(s, c)       if(opterr){\
+       fputs(argv[0], stderr);\
+       fputs(s, stderr);\
+       fputc(c, stderr);\
+       fputc('\n', stderr);}
+
+int     opterr = 1;
+int     optind = 1;
+int    optopt;
+char    *optarg;
+char    *index();
+
+int
+getopt (argc, argv, opts)
+char **argv, *opts;
+{
+       static int sp = 1;
+       register c;
+       register char *cp;
+
+       if (sp == 1)
+               if (optind >= argc ||
+                  argv[optind][0] != '-' || argv[optind][1] == '\0')
+                       return EOF;
+               else if (strcmp(argv[optind], "--") == NULL) {
+                       optind++;
+                       return EOF;
+               }
+       optopt = c = argv[optind][sp];
+       if (c == ':' || (cp=index(opts, c)) == NULL) {
+               ERR (": illegal option -- ", c);
+               if (argv[optind][++sp] == '\0') {
+                       optind++;
+                       sp = 1;
+               }
+               return '?';
+       }
+       if (*++cp == ':') {
+               if (argv[optind][sp+1] != '\0')
+                       optarg = &argv[optind++][sp+1];
+               else if (++optind >= argc) {
+                       ERR (": option requires an argument -- ", c);
+                       sp = 1;
+                       return '?';
+               } else
+                       optarg = argv[optind++];
+               sp = 1;
+       } else {
+               if (argv[optind][++sp] == '\0') {
+                       sp = 1;
+                       optind++;
+               }
+               optarg = NULL;
+       }
+       return c;
+}