]> granicus.if.org Git - postgresql/blobdiff - src/port/getopt_long.c
Remove optreset from src/port/ implementations of getopt and getopt_long.
[postgresql] / src / port / getopt_long.c
index 418cce7c8baf71560b4652b42245baa9043b4bdd..d624216ad03749ae4ea4e7b0b8909a38231f0427 100644 (file)
 
 #include "getopt_long.h"
 
-#ifndef HAVE_INT_OPTRESET
-int                    optreset;
-
-/* else the "extern" was provided by getopt_long.h */
-#endif
-
 #define BADCH  '?'
 #define BADARG ':'
 #define EMSG   ""
 
 
+/*
+ * getopt_long
+ *     Parse argc/argv argument vector, with long options.
+ *
+ * This implementation does not use optreset.  Instead, we guarantee that
+ * it can be restarted on a new argv array after a previous call returned -1,
+ * if the caller resets optind to 1 before the first call of the new series.
+ * (Internally, this means we must be sure to reset "place" to EMSG before
+ * returning -1.)
+ */
 int
 getopt_long(int argc, char *const argv[],
                        const char *optstring,
@@ -57,10 +61,8 @@ getopt_long(int argc, char *const argv[],
        static char *place = EMSG;      /* option letter processing */
        char       *oli;                        /* option letter list index */
 
-       if (optreset || !*place)
+       if (!*place)
        {                                                       /* update scanning pointer */
-               optreset = 0;
-
                if (optind >= argc)
                {
                        place = EMSG;