diff options
Diffstat (limited to 'emulator/opengl/host/tools/emugen/getopt.c')
-rw-r--r-- | emulator/opengl/host/tools/emugen/getopt.c | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/emulator/opengl/host/tools/emugen/getopt.c b/emulator/opengl/host/tools/emugen/getopt.c deleted file mode 100644 index 3523538..0000000 --- a/emulator/opengl/host/tools/emugen/getopt.c +++ /dev/null @@ -1,76 +0,0 @@ -#include "getopt.h" - -#include <stdio.h> -#include <string.h> - -#define _getprogname() nargv[0] - -int opterr = 1; -int optind = 1; -int optopt = 0; -char* optarg; - -int getopt(int argc, char* const argv[], const char* ostr) { - static const char kEmpty[] = ""; - static const char* place = kEmpty; - if (!*place) { - if (optind >= argc) - return -1; - - const char* arg = argv[optind]; - if (arg[0] != '-') { - // Not an option. - return -1; - } - if (arg[1] == '-' && !arg[2]) { - // '--' -> end of options. - return -1; - } - if (!arg[1]) { - // Single '-', If the program wants it, treat it as an option. - // Otherwise, it's the end of options. - if (!strchr(ostr, '-')) { - return -1; - } - optopt = '-'; - place = arg + 1; - } else { - optopt = arg[1]; - place = arg + 2; - } - }; - - char* oindex = strchr(ostr, optopt); - if (!oindex) { - // Unsupported option. - (void)fprintf(stderr, "%s: illegal option -- %c\n", argv[0]); - return '?'; - } - if (oindex[1] != ':') { - // No argument needed. - optarg = NULL; - if (!*place) - optind++; - return optopt; - } - - // This option needs an argument. Either after the option character, - // or the argument that follows. - if (*place) { - optarg = (char *)place; - } else if (argc > ++optind) { - optarg = (char *)argv[optind]; - } else if (oindex[2] == ':') { - // Optional argument is missing. - place = kEmpty; - optarg = NULL; - return optopt; - } else { - // Missing argument. - place = kEmpty; - (void)fprintf(stderr, "%s: option requires an argument --%c\n", - argv[0], optopt); - return ':'; - } - return optopt; -} |