home *** CD-ROM | disk | FTP | other *** search
- extern int strcmp();
- extern char *strchr();
- extern int strlen();
-
- int optind = 1;
- int optopt;
- char *optarg;
-
- int
- getopt(argc, argv, opts)
- int argc;
- char **argv;
- char *opts;
- {
- static int sp = 1;
- register int c;
- register char *cp;
-
- if (sp == 1)
- {
- if
- (
- optind >= argc
- ||
- argv[optind][0] != '-'
- ||
- argv[optind][1] == '\0'
- )
- return -1;
-
- if (strcmp(argv[optind], "--") == 0)
- {
- optind++;
- return -1;
- }
- }
-
- c = argv[optind][sp];
- optopt = c;
-
- if (c == ':' || (cp = strchr(opts, c)) == (char *)0)
- {
- 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)
- {
- sp = 1;
- return '?';
- }
- else
- optarg = argv[optind++];
- sp = 1;
- }
- else
- {
- if (argv[optind][++sp] == '\0')
- {
- sp = 1;
- optind++;
- }
- optarg = (char *)0;
- }
-
- return c;
- }
-