From caf948e80ea1a7f8e7b1cf5335f72dd95145116c Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 3 Aug 1988 14:42:47 +0000 Subject: [PATCH] moved getopt to stdio, because it uses it --- lang/cem/libcc/gen/LIST | 1 - lang/cem/libcc/stdio/LIST | 1 + lang/cem/libcc/stdio/getopt.c | 58 +++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 lang/cem/libcc/stdio/getopt.c diff --git a/lang/cem/libcc/gen/LIST b/lang/cem/libcc/gen/LIST index 24f2814d0..97fac09bd 100644 --- a/lang/cem/libcc/gen/LIST +++ b/lang/cem/libcc/gen/LIST @@ -17,7 +17,6 @@ ffs.c gcvt.c ecvt.c getlogin.c -getopt.c index.c l3.c ldexp.c diff --git a/lang/cem/libcc/stdio/LIST b/lang/cem/libcc/stdio/LIST index a9249f2b2..eea742c0d 100644 --- a/lang/cem/libcc/stdio/LIST +++ b/lang/cem/libcc/stdio/LIST @@ -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 index 000000000..7e4b0d3dd --- /dev/null +++ b/lang/cem/libcc/stdio/getopt.c @@ -0,0 +1,58 @@ +/* $Header$ */ +#include +#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; +} -- 2.34.1