getopt: return '?' if user wants an arg, but none is provided
authorshefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Tue, 3 Mar 2009 01:05:53 +0000 (01:05 +0000)
committershefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Tue, 3 Mar 2009 01:05:53 +0000 (01:05 +0000)
If the user specifies that an argument is required, but none is provided, return '?' as the option, rather than NULL as the optarg.  This fixes an issue if the last option specified in the option list requires an argument, but none is provided.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2000 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

etc/user/getopt.c

index 1282f1b..9e05699 100644 (file)
@@ -79,9 +79,9 @@ int getopt(int argc, char * const argv[], char const *opts)
                goto out;\r
  \r
        optarg = argv[++optind];\r
-       while(optarg && *optarg && (*optarg == ' ' || *optarg == '      ')) optarg++;\r
-       if (optarg && !(*optarg))\r
-               optarg = NULL; \r
+       if (!optarg || !(*optarg)) {\r
+               return '?';\r
+       }\r
 \r
 out:\r
        optind++;\r