summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/oid2name/oid2name.c8
-rw-r--r--contrib/pg_archivecleanup/pg_archivecleanup.c13
-rw-r--r--contrib/pg_standby/pg_standby.c13
-rw-r--r--contrib/pg_upgrade/option.c2
-rw-r--r--contrib/pgbench/pgbench.c8
-rw-r--r--contrib/vacuumlo/vacuumlo.c5
-rw-r--r--src/backend/bootstrap/bootstrap.c7
-rw-r--r--src/backend/postmaster/postmaster.c13
-rw-r--r--src/backend/tcop/postgres.c12
-rw-r--r--src/bin/pg_dump/pg_dump.c4
-rw-r--r--src/bin/pg_dump/pg_restore.c8
-rw-r--r--src/bin/pg_resetxlog/pg_resetxlog.c7
-rw-r--r--src/bin/psql/startup.c2
-rw-r--r--src/include/getopt_long.h10
-rw-r--r--src/include/pg_getopt.h42
-rw-r--r--src/include/port.h4
-rw-r--r--src/port/getopt.c9
-rw-r--r--src/test/isolation/isolationtester.c14
-rw-r--r--src/timezone/zic.c6
19 files changed, 57 insertions, 130 deletions
diff --git a/contrib/oid2name/oid2name.c b/contrib/oid2name/oid2name.c
index 67d79346b2..d8565941f9 100644
--- a/contrib/oid2name/oid2name.c
+++ b/contrib/oid2name/oid2name.c
@@ -9,14 +9,8 @@
*/
#include "postgres_fe.h"
-#include <unistd.h>
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
-extern char *optarg;
-
#include "libpq-fe.h"
+#include "pg_getopt.h"
/* an extensible array to keep track of elements to show */
typedef struct
diff --git a/contrib/pg_archivecleanup/pg_archivecleanup.c b/contrib/pg_archivecleanup/pg_archivecleanup.c
index f12331a62e..7b5484bb6a 100644
--- a/contrib/pg_archivecleanup/pg_archivecleanup.c
+++ b/contrib/pg_archivecleanup/pg_archivecleanup.c
@@ -17,20 +17,9 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
-
-#ifndef WIN32
#include <sys/time.h>
-#include <unistd.h>
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-#else /* WIN32 */
-extern int getopt(int argc, char *const argv[], const char *optstring);
-#endif /* ! WIN32 */
-extern char *optarg;
-extern int optind;
+#include "pg_getopt.h"
const char *progname;
diff --git a/contrib/pg_standby/pg_standby.c b/contrib/pg_standby/pg_standby.c
index 059c820527..144edd8a07 100644
--- a/contrib/pg_standby/pg_standby.c
+++ b/contrib/pg_standby/pg_standby.c
@@ -28,20 +28,9 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>
-
-#ifdef WIN32
-int getopt(int argc, char *const argv[], const char *optstring);
-#else
#include <sys/time.h>
-#include <unistd.h>
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-#endif /* ! WIN32 */
-extern char *optarg;
-extern int optind;
+#include "pg_getopt.h"
const char *progname;
diff --git a/contrib/pg_upgrade/option.c b/contrib/pg_upgrade/option.c
index 4c08e94ffd..cd9f66dd11 100644
--- a/contrib/pg_upgrade/option.c
+++ b/contrib/pg_upgrade/option.c
@@ -10,10 +10,10 @@
#include "postgres_fe.h"
#include "miscadmin.h"
+#include "getopt_long.h"
#include "pg_upgrade.h"
-#include <getopt_long.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index 16b7ab5ddc..a836acfae9 100644
--- a/contrib/pgbench/pgbench.c
+++ b/contrib/pgbench/pgbench.c
@@ -40,12 +40,7 @@
#include <ctype.h>
#include <math.h>
#include <signal.h>
-
-#ifndef WIN32
#include <sys/time.h>
-#include <unistd.h>
-#endif /* ! WIN32 */
-
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
@@ -89,9 +84,6 @@ static int pthread_create(pthread_t *thread, pthread_attr_t *attr, void *(*start
static int pthread_join(pthread_t th, void **thread_return);
#endif
-extern char *optarg;
-extern int optind;
-
/********************************************************************
* some configurable parameters */
diff --git a/contrib/vacuumlo/vacuumlo.c b/contrib/vacuumlo/vacuumlo.c
index 3981dd6260..c2e5bad438 100644
--- a/contrib/vacuumlo/vacuumlo.c
+++ b/contrib/vacuumlo/vacuumlo.c
@@ -22,15 +22,12 @@
#endif
#include "libpq-fe.h"
+#include "pg_getopt.h"
#define atooid(x) ((Oid) strtoul((x), NULL, 10))
#define BUFSIZE 1024
-extern char *optarg;
-extern int optind,
- opterr;
-
enum trivalue
{
TRI_DEFAULT,
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index ef6311b075..c36e71d806 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -17,9 +17,6 @@
#include <time.h>
#include <unistd.h>
#include <signal.h>
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
#include "access/htup_details.h"
#include "bootstrap/bootstrap.h"
@@ -29,6 +26,7 @@
#include "libpq/pqsignal.h"
#include "miscadmin.h"
#include "nodes/makefuncs.h"
+#include "pg_getopt.h"
#include "postmaster/bgwriter.h"
#include "postmaster/startup.h"
#include "postmaster/walwriter.h"
@@ -46,9 +44,6 @@
#include "utils/relmapper.h"
#include "utils/tqual.h"
-extern int optind;
-extern char *optarg;
-
uint32 bootstrap_data_checksum_version = 0; /* No checksum */
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 7adc410b43..6bb2a47485 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -83,10 +83,6 @@
#include <sys/select.h>
#endif
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
#ifdef USE_BONJOUR
#include <dns_sd.h>
#endif
@@ -101,6 +97,7 @@
#include "libpq/libpq.h"
#include "libpq/pqsignal.h"
#include "miscadmin.h"
+#include "pg_getopt.h"
#include "pgstat.h"
#include "postmaster/autovacuum.h"
#include "postmaster/bgworker_internals.h"
@@ -352,14 +349,6 @@ static volatile bool HaveCrashedWorker = false;
static unsigned int random_seed = 0;
static struct timeval random_start_time;
-extern char *optarg;
-extern int optind,
- opterr;
-
-#ifdef HAVE_INT_OPTRESET
-extern int optreset; /* might not be declared by system headers */
-#endif
-
#ifdef USE_BONJOUR
static DNSServiceRef bonjour_sdref = NULL;
#endif
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index b7612b9b5f..a230d7eda6 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -32,9 +32,6 @@
#include <sys/time.h>
#include <sys/resource.h>
#endif
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
#ifndef HAVE_GETRUSAGE
#include "rusagestub.h"
@@ -55,6 +52,7 @@
#include "pg_trace.h"
#include "parser/analyze.h"
#include "parser/parser.h"
+#include "pg_getopt.h"
#include "postmaster/autovacuum.h"
#include "postmaster/postmaster.h"
#include "replication/walsender.h"
@@ -77,14 +75,6 @@
#include "mb/pg_wchar.h"
-extern char *optarg;
-extern int optind;
-
-#ifdef HAVE_INT_OPTRESET
-extern int optreset; /* might not be declared by system headers */
-#endif
-
-
/* ----------------
* global variables
* ----------------
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 458a118dc0..2ce8e6dd00 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -63,10 +63,6 @@
#include "dumputils.h"
#include "parallel.h"
-extern char *optarg;
-extern int optind,
- opterr;
-
typedef struct
{
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index bb652538a4..df9477b69f 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -43,6 +43,7 @@
#include "pg_backup_utils.h"
#include "dumputils.h"
#include "parallel.h"
+#include "getopt_long.h"
#include <ctype.h>
@@ -50,13 +51,6 @@
#include <termios.h>
#endif
-#include <unistd.h>
-
-#include "getopt_long.h"
-
-extern char *optarg;
-extern int optind;
-
#ifdef ENABLE_NLS
#include <locale.h>
#endif
diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c
index 03f2fad3f7..54690af031 100644
--- a/src/bin/pg_resetxlog/pg_resetxlog.c
+++ b/src/bin/pg_resetxlog/pg_resetxlog.c
@@ -44,9 +44,6 @@
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
#include "access/transam.h"
#include "access/tuptoaster.h"
@@ -55,9 +52,7 @@
#include "catalog/catversion.h"
#include "catalog/pg_control.h"
#include "common/fe_memutils.h"
-
-extern int optind;
-extern char *optarg;
+#include "pg_getopt.h"
static ControlFileData ControlFile; /* pg_control values */
diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c
index 91948014e5..106199273f 100644
--- a/src/bin/psql/startup.c
+++ b/src/bin/psql/startup.c
@@ -386,8 +386,6 @@ parse_psql_options(int argc, char *argv[], struct adhoc_opts * options)
};
int optindex;
- extern char *optarg;
- extern int optind;
int c;
memset(options, 0, sizeof *options);
diff --git a/src/include/getopt_long.h b/src/include/getopt_long.h
index 563719b3f7..e23c21f333 100644
--- a/src/include/getopt_long.h
+++ b/src/include/getopt_long.h
@@ -9,15 +9,7 @@
#ifndef GETOPT_LONG_H
#define GETOPT_LONG_H
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
-/* These are picked up from the system's getopt() facility. */
-extern int opterr;
-extern int optind;
-extern int optopt;
-extern char *optarg;
+#include "pg_getopt.h"
#ifndef HAVE_STRUCT_OPTION
diff --git a/src/include/pg_getopt.h b/src/include/pg_getopt.h
new file mode 100644
index 0000000000..648800414e
--- /dev/null
+++ b/src/include/pg_getopt.h
@@ -0,0 +1,42 @@
+/*
+ * Portions Copyright (c) 1987, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Portions Copyright (c) 2003-2014, PostgreSQL Global Development Group
+ *
+ * src/include/pg_getopt.h
+ */
+#ifndef PG_GETOPT_H
+#define PG_GETOPT_H
+
+/* POSIX says getopt() is provided by unistd.h */
+#include <unistd.h>
+
+/* rely on the system's getopt.h if present */
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#endif
+
+/*
+ * If we have <getopt.h>, assume it declares these variables, else do that
+ * ourselves. (We used to just declare them unconditionally, but Cygwin
+ * doesn't like that.)
+ */
+#ifndef HAVE_GETOPT_H
+
+extern char *optarg;
+extern int optind;
+extern int opterr;
+extern int optopt;
+
+#ifdef HAVE_INT_OPTRESET
+extern int optreset;
+#endif
+
+#endif /* HAVE_GETOPT_H */
+
+#ifndef HAVE_GETOPT
+extern int getopt(int nargc, char *const * nargv, const char *ostr);
+#endif
+
+#endif /* PG_GETOPT_H */
diff --git a/src/include/port.h b/src/include/port.h
index f50fbecf01..aeb7754cb0 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -382,10 +382,6 @@ extern int fls(int mask);
#define ftello(a) ftell(a)
#endif
-#ifndef HAVE_GETOPT
-extern int getopt(int nargc, char *const * nargv, const char *ostr);
-#endif
-
#if !defined(HAVE_GETPEEREID) && !defined(WIN32)
extern int getpeereid(int sock, uid_t *uid, gid_t *gid);
#endif
diff --git a/src/port/getopt.c b/src/port/getopt.c
index eb50cba1ca..b81fba14b0 100644
--- a/src/port/getopt.c
+++ b/src/port/getopt.c
@@ -32,6 +32,8 @@
#include "c.h"
+#include "pg_getopt.h"
+
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95";
#endif /* LIBC_SCCS and not lint */
@@ -49,20 +51,13 @@ int opterr = 1, /* if error message should be printed */
optind = 1, /* index into parent argv vector */
optopt; /* character checked for validity */
char *optarg; /* argument associated with option */
-#else
-extern int opterr;
-extern int optind;
-extern int optopt;
-extern char *optarg;
#endif
#define BADCH (int)'?'
#define BADARG (int)':'
#define EMSG ""
-int getopt(int nargc, char *const * nargv, const char *ostr);
-
/*
* getopt
* Parse argc/argv argument vector.
diff --git a/src/test/isolation/isolationtester.c b/src/test/isolation/isolationtester.c
index e936c01532..ad6732aee7 100644
--- a/src/test/isolation/isolationtester.c
+++ b/src/test/isolation/isolationtester.c
@@ -10,29 +10,17 @@
#ifdef WIN32
#include <windows.h>
#endif
-
-#ifndef WIN32
#include <sys/time.h>
-#include <unistd.h>
-
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-#else
-int getopt(int argc, char *const argv[], const char *optstring);
-#endif /* ! WIN32 */
-
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
#include "libpq-fe.h"
#include "pqexpbuffer.h"
+#include "pg_getopt.h"
#include "isolationtester.h"
-extern int optind;
-
#define PREP_WAITING "isolationtester_waiting"
/*
diff --git a/src/timezone/zic.c b/src/timezone/zic.c
index a399d1f0f1..cda704266a 100644
--- a/src/timezone/zic.c
+++ b/src/timezone/zic.c
@@ -8,15 +8,11 @@
#include "postgres_fe.h"
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif
#include <limits.h>
#include <locale.h>
#include <time.h>
-extern int optind;
-extern char *optarg;
+#include "pg_getopt.h"
#include "private.h"
#include "pgtz.h"