Mercurial > cpython-lru_cache-weakref
diff Python/getopt.c @ 1585:7c75f60468f8 legacy-trunk
A getopt.c for your amusement
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 14 Apr 1994 14:08:22 +0000 |
| parents | |
| children | ecbadb818847 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Python/getopt.c Thu Apr 14 14:08:22 1994 +0000 @@ -0,0 +1,54 @@ +/* An implementation of getopt() by Amrit Prem */ + +#include <stdio.h> +#include <string.h> + +#define bool int +#define TRUE 1 +#define FALSE 0 +#define EOS '\0' + +bool opterr = TRUE; /* generate error messages */ +int optind = 1; /* index into argv array */ +char * optarg = NULL; /* optional argument */ + + +int getopt(int argc, char *argv[], const char optstring[]) +{ + static char *opt_ptr = ""; + register char *ptr; + int option; + + if (*opt_ptr == EOS) { + + if (optind >= argc || argv[optind][0] != '-') + return -1; + + else if (strcmp(argv[optind], "--") == 0) { + ++optind; + return -1; + } + + opt_ptr = argv[optind++] + 1; + } + + if ((ptr = strchr(optstring, option = *opt_ptr++)) == NULL) { + if (opterr) + fprintf(stderr, "Unknown option: -%c\n", option); + + return '?'; + } + + if (*(ptr + 1) == ':') { + if (optind >= argc) { + if (opterr) + fprintf(stderr, "Argument expected for the -%c option\n", option); + + return '?'; + } + + optarg = argv[optind++]; + } + + return option; +}
