/*
 * getopt - get option letter from argv
 */

#include <stdio.h>

char *optarg; /* Global argument pointer. */
int optind = 0; /* Global argv index. */
static char *scan = NULL; /* Private scan pointer. */
extern char *index();


int getopt(int argc, char *argv[], char *optstring) {
     register char c;
     register char *place;

     optarg = NULL;

     if (scan == NULL || *scan == '\0') {
          if (optind == 0)
               optind++;
 
          if (optind >= argc || argv[optind][0] != '-' ||
                                   argv[optind][1] == '\0')
               return(EOF);

          if (strcmp(argv[optind], "--")==0) {
               optind++;
               return(EOF);
          }
 
          scan = argv[optind]+1;
          optind++;
     }

     c = *scan++;
     place = index(optstring, c);
     if (place == NULL || c == ':') {
          fprintf(stderr, "%s: unknown option -%c\n", argv[0], c);
          return('?');
     }

     place++;
     if (*place == ':') {
          if (*scan != '\0') {
               optarg = scan;
               scan = NULL;
          } else if (optind < argc) {
               optarg = argv[optind];
               optind++;
          } else {
               fprintf(stderr, "%s: -%c argument missing\n", argv[0], c);
               return('?');
          }
     }

     return(c);
}
