home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / disk / mkisofs-1.00.7.lha / mkisofs / unix / getopt.c < prev    next >
C/C++ Source or Header  |  1994-05-29  |  848b  |  47 lines

  1. /* getopt.c: */
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6. char *optarg;
  7. int optind = 0;
  8.  
  9. int getopt (int argc, char *argv[], char *p_format)
  10. {
  11.   static char *cp = 0;
  12.   char c, *pos;
  13.  
  14.   while (1) {
  15.     if (cp && *cp) {
  16.       if (*cp != ':' && (pos = strchr (p_format, *cp))) {
  17.         if (pos[1] != ':')
  18.           return *cp++;
  19.     if (cp[1])
  20.       optarg = cp+1;
  21.     else
  22.       optarg = argv[++optind];
  23.     if (optind == argc) {
  24.       fprintf (stderr, "missing argument for option '-%c'", *cp);
  25.       return -1;
  26.     }
  27.     c = *cp;
  28.     cp = 0;
  29.     return c;
  30.       }
  31.       fprintf (stderr, "-- unknown option character '%c'\n", *cp++);
  32.       return '?';
  33.     }
  34.     if (++optind == argc)
  35.        return -1;
  36.     cp = argv[optind];
  37.     if (cp[0] == '-') {
  38.       if (cp[1] == '-' && cp[2] == 0) {
  39.          optind++;
  40.          return -1;
  41.       }
  42.       cp++;
  43.     } else
  44.       return -1;
  45.   }
  46. }
  47.