aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2010-12-15 23:50:41 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2010-12-15 23:50:41 -0500
commit5cdd65f3241ce10c66953228daef60df7b3966d1 (patch)
treeea8cab37764b7a3eed1a5d9ae5946e145fc35527 /src
parent2a6ebe70fb2f7ec97a08dc07214fe2ca571d2780 (diff)
downloadpostgresql-5cdd65f3241ce10c66953228daef60df7b3966d1.tar.gz
postgresql-5cdd65f3241ce10c66953228daef60df7b3966d1.zip
Fix up getopt() reset management so it works on recent mingw.
The mingw people don't appear to care about compatibility with non-GNU versions of getopt, so force use of our own copy of getopt on Windows. Also, ensure that we make use of optreset when using our own copy. Per report from Andrew Dunstan. Back-patch to all versions supported on Windows.
Diffstat (limited to 'src')
-rw-r--r--src/backend/postmaster/postmaster.c5
-rw-r--r--src/backend/tcop/postgres.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 90854f44d79..18a238d5eda 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -313,7 +313,8 @@ extern char *optarg;
extern int optind,
opterr;
-#ifdef HAVE_INT_OPTRESET
+/* If not HAVE_GETOPT, we are using src/port/getopt.c, which has optreset */
+#if defined(HAVE_INT_OPTRESET) || !defined(HAVE_GETOPT)
extern int optreset; /* might not be declared by system headers */
#endif
@@ -751,7 +752,7 @@ PostmasterMain(int argc, char *argv[])
* getopt(3) library so that it will work correctly in subprocesses.
*/
optind = 1;
-#ifdef HAVE_INT_OPTRESET
+#if defined(HAVE_INT_OPTRESET) || !defined(HAVE_GETOPT)
optreset = 1; /* some systems need this too */
#endif
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index ff2e9bd0aaa..7657458693f 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -78,7 +78,8 @@
extern char *optarg;
extern int optind;
-#ifdef HAVE_INT_OPTRESET
+/* If not HAVE_GETOPT, we are using src/port/getopt.c, which has optreset */
+#if defined(HAVE_INT_OPTRESET) || !defined(HAVE_GETOPT)
extern int optreset; /* might not be declared by system headers */
#endif
@@ -3442,7 +3443,7 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx)
* or when this function is called a second time with another array.
*/
optind = 1;
-#ifdef HAVE_INT_OPTRESET
+#if defined(HAVE_INT_OPTRESET) || !defined(HAVE_GETOPT)
optreset = 1; /* some systems need this too */
#endif