#include <unistd.h> char *optarg; static const char *match(char c, const char *optstring) { int i; for (i=0;optstring[i]; i++) if (c == optstring[i]) return &optstring[i]; return 0; } int getopt(int argc, char * const argv[], const char *optstring) { static int lastargc = 0; char *arg; const char *theopt; if (lastargc == 0) { lastargc = 1; } optarg = 0; if (lastargc >= argc) { lastargc = 0; return -1; } arg = argv[lastargc++]; if (arg[0] != '-') { lastargc = 0; return -1; } theopt = match(arg[1], optstring); if (!theopt) { lastargc = 0; return -1; } if (theopt[1] == ':') { if (arg[2]) optarg = &arg[2]; else if (lastargc >= argc) { lastargc = 0; return -1; } else optarg = argv[lastargc++]; } return theopt[0]; }