summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure21
-rw-r--r--configure.in7
-rw-r--r--src/backend/postmaster/postmaster.c5
3 files changed, 31 insertions, 2 deletions
diff --git a/configure b/configure
index 316f9bb3d37..cd4f2f17468 100755
--- a/configure
+++ b/configure
@@ -17192,6 +17192,27 @@ case $host_os in bsdi*|netbsd*)
ac_cv_func_fseeko=yes
esac
+# mingw has adopted a GNU-centric interpretation of optind/optreset,
+# so always use our version on Windows.
+if test "$PORTNAME" = "win32"; then
+ case $LIBOBJS in
+ "getopt.$ac_objext" | \
+ *" getopt.$ac_objext" | \
+ "getopt.$ac_objext "* | \
+ *" getopt.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS getopt.$ac_objext" ;;
+esac
+
+ case $LIBOBJS in
+ "getopt_long.$ac_objext" | \
+ *" getopt_long.$ac_objext" | \
+ "getopt_long.$ac_objext "* | \
+ *" getopt_long.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS getopt_long.$ac_objext" ;;
+esac
+
+fi
+
# Win32 support
if test "$PORTNAME" = "win32"; then
diff --git a/configure.in b/configure.in
index ef9d5efe3da..a9b22a3e01a 100644
--- a/configure.in
+++ b/configure.in
@@ -1128,6 +1128,13 @@ case $host_os in bsdi*|netbsd*)
ac_cv_func_fseeko=yes
esac
+# mingw has adopted a GNU-centric interpretation of optind/optreset,
+# so always use our version on Windows.
+if test "$PORTNAME" = "win32"; then
+ AC_LIBOBJ(getopt)
+ AC_LIBOBJ(getopt_long)
+fi
+
# Win32 support
if test "$PORTNAME" = "win32"; then
AC_REPLACE_FUNCS(gettimeofday)
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index e58d1ecd23f..ba51d932d55 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -284,7 +284,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;
#endif
@@ -721,7 +722,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