summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure25
-rw-r--r--configure.in21
-rw-r--r--src/backend/postmaster/postmaster.c5
-rw-r--r--src/backend/tcop/postgres.c5
4 files changed, 41 insertions, 15 deletions
diff --git a/configure b/configure
index 70000347538..f96c0ffdd60 100755
--- a/configure
+++ b/configure
@@ -20713,6 +20713,23 @@ esac
fi
+# 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 "* ) ;;
+ *) LIBOBJS="$LIBOBJS getopt.$ac_objext"
+ ;;
+esac
+
+ case " $LIBOBJS " in
+ *" getopt_long.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS getopt_long.$ac_objext"
+ ;;
+esac
+
+fi
+
# Cygwin's erand48() is broken (always returns zero) in some releases,
# so force use of ours.
if test "$PORTNAME" = "cygwin"; then
@@ -20835,25 +20852,25 @@ fi
done
-case " $LIBOBJS " in
+ case " $LIBOBJS " in
*" kill.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS kill.$ac_objext"
;;
esac
-case " $LIBOBJS " in
+ case " $LIBOBJS " in
*" open.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS open.$ac_objext"
;;
esac
-case " $LIBOBJS " in
+ case " $LIBOBJS " in
*" win32env.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS win32env.$ac_objext"
;;
esac
-case " $LIBOBJS " in
+ case " $LIBOBJS " in
*" win32error.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS win32error.$ac_objext"
;;
diff --git a/configure.in b/configure.in
index df95cc7b09b..b0644dfb6d3 100644
--- a/configure.in
+++ b/configure.in
@@ -1328,6 +1328,13 @@ if test "$PORTNAME" = "solaris"; then
AC_LIBOBJ(getopt)
fi
+# 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
+
# Cygwin's erand48() is broken (always returns zero) in some releases,
# so force use of ours.
if test "$PORTNAME" = "cygwin"; then
@@ -1336,13 +1343,13 @@ fi
# Win32 support
if test "$PORTNAME" = "win32"; then
-AC_REPLACE_FUNCS(gettimeofday)
-AC_LIBOBJ(kill)
-AC_LIBOBJ(open)
-AC_LIBOBJ(win32env)
-AC_LIBOBJ(win32error)
-AC_DEFINE([HAVE_SYMLINK], 1,
- [Define to 1 if you have the `symlink' function.])
+ AC_REPLACE_FUNCS(gettimeofday)
+ AC_LIBOBJ(kill)
+ AC_LIBOBJ(open)
+ AC_LIBOBJ(win32env)
+ AC_LIBOBJ(win32error)
+ AC_DEFINE([HAVE_SYMLINK], 1,
+ [Define to 1 if you have the `symlink' function.])
fi
if test "$with_readline" = yes; then
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 279f0f081a4..7e8af148ac8 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -312,7 +312,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
@@ -750,7 +751,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 62adaca2174..052b2565570 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -77,7 +77,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
@@ -3439,7 +3440,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