/* ** This is part of a changed public domain getopt implementation that ** had the following text on top: ** ** I got this off net.sources from Henry Spencer. ** It is a public domain getopt(3) like in System V. ** I have made the following modifications: ** ** A test main program was added, ifdeffed by GETOPT. ** This main program is a public domain implementation ** of the getopt(1) program like in System V. The getopt ** program can be used to standardize shell option handling. ** e.g. cc -DGETOPT getopt.c -o getopt */ #include #include #include #include #define ARGCH ':' #define BADCH '?' #define ENDARGS "--" #define NUMARGS 2 int main (int argc, char **argv) { char *optstring = argv[1]; char *argv0 = argv[0]; int opterr = 0; int C; char *opi; if (argc != NUMARGS) { fprintf (stderr, "Usage: %s optstring args\n", argv0); exit (EXIT_FAILURE); } argv++; argc--; argv[0] = argv0; while ((C = getopt (argc, argv, optstring)) != EOF) { if (C == BADCH) opterr++; printf ("-%c ", C); opi = strchr (optstring, C); if (opi && opi[1] == ARGCH) if (optarg) printf ("\"%s\" ", optarg); else opterr++; } printf ("%s", ENDARGS); while (optind < argc) printf (" \"%s\"", argv[optind++]); putchar ('\n'); return opterr; }