--- src/lib/libc/stdlib/getopt_long.c 2004/01/31 13:38:48 1.1 +++ src/lib/libc/stdlib/getopt_long.c 2005/01/10 14:11:40 1.2 @@ -68,6 +68,7 @@ char *optarg; /* argument associated #define INORDER (int)1 static int getopt_internal(int, char * const *, const char *); +static int getopt_internal_short(int, char * const *, const char *); static int gcd(int, int); static void permute_args(int, int, int, char * const *); @@ -150,9 +151,6 @@ permute_args(int panonopt_start, int pan static int getopt_internal(int nargc, char * const *nargv, const char *options) { - char *oli; /* option letter list index */ - int optchar; - optarg = NULL; /* @@ -225,6 +223,15 @@ start: return -2; } } + return getopt_internal_short(nargc, nargv, options); +} + +static int +getopt_internal_short(int nargc, char * const *nargv, const char *options) +{ + const char *oli; /* option letter list index */ + int optchar; + if ((optchar = (int)*place++) == (int)':' || (oli = strchr(options + (IGNORE_FIRST ? 1 : 0), optchar)) == NULL) { /* option letter unknown or ':' */