1: #ifndef lint
   2: static char sccsid[] = "@(#)getopt.c	5.1 (Berkeley) 7/2/83";
   3: #endif
   4: 
   5: #include    <stdio.h>
   6: #define ERR(s, c)   if(opterr){\
   7:     fputs(argv[0], stderr);\
   8:     fputs(s, stderr);\
   9:     fputc(c, stderr);\
  10:     fputc('\n', stderr);} else
  11: 
  12: int opterr = 1;
  13: int optind = 1;
  14: int optopt;
  15: char    *optarg;
  16: 
  17: extern char *index();
  18: 
  19: int
  20: getopt (argc, argv, opts)
  21: char **argv, *opts;
  22: {
  23:     static int sp = 1;
  24:     register c;
  25:     register char *cp;
  26: 
  27:     if (sp == 1)
  28:         if (optind >= argc ||
  29:            argv[optind][0] != '-' || argv[optind][1] == '\0')
  30:             return EOF;
  31:         else if (strcmp(argv[optind], "--") == NULL) {
  32:             optind++;
  33:             return EOF;
  34:         }
  35:     optopt = c = argv[optind][sp];
  36:     if (c == ':' || (cp=index(opts, c)) == NULL) {
  37:         ERR (": illegal option -- ", c);
  38:         if (argv[optind][++sp] == '\0') {
  39:             optind++;
  40:             sp = 1;
  41:         }
  42:         return '?';
  43:     }
  44:     if (*++cp == ':') {
  45:         if (argv[optind][sp+1] != '\0')
  46:             optarg = &argv[optind++][sp+1];
  47:         else if (++optind >= argc) {
  48:             ERR (": option requires an argument -- ", c);
  49:             sp = 1;
  50:             return '?';
  51:         } else
  52:             optarg = argv[optind++];
  53:         sp = 1;
  54:     }
  55:     else {
  56:         if (argv[optind][++sp] == '\0') {
  57:             sp = 1;
  58:             optind++;
  59:         }
  60:         optarg = NULL;
  61:     }
  62:     return c;
  63: }

Defined functions

getopt defined in line 19; never used

Defined variables

optarg defined in line 15; used 3 times
opterr defined in line 12; used 1 times
  • in line 6
optind defined in line 13; used 14 times
optopt defined in line 14; used 1 times
  • in line 35
sccsid defined in line 2; never used

Defined macros

ERR defined in line 6; used 2 times
Last modified: 1983-07-27
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 662
Valid CSS Valid XHTML 1.0 Strict