mirror of
https://github.com/postgres/postgres.git
synced 2026-02-14 00:03:18 -05:00
Up until now, we've had a policy of only marking certain variables in the PostgreSQL header files with PGDLLIMPORT, but now we've decided to mark them all. This means that extensions running on Windows should no longer operate at a disadvantage as compared to extensions running on Linux: if the variable is present in a header file, it should be accessible. Discussion: http://postgr.es/m/CA+TgmoYanc1_FSfimhgiWSqVyP5KKmh5NP2BWNwDhO8Pg2vGYQ@mail.gmail.com
56 lines
1.7 KiB
C
56 lines
1.7 KiB
C
/*
|
|
* Postgres files that use getopt(3) always include this file.
|
|
* We must cope with three different scenarios:
|
|
* 1. We're using the platform's getopt(), and we should just import the
|
|
* appropriate declarations.
|
|
* 2. The platform lacks getopt(), and we must declare everything.
|
|
* 3. The platform has getopt(), but we're not using it because we don't
|
|
* like its behavior. The declarations we make here must be compatible
|
|
* with both the platform's getopt() and our src/port/getopt.c.
|
|
*
|
|
* Portions Copyright (c) 1987, 1993, 1994
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* Portions Copyright (c) 2003-2022, 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 PGDLLIMPORT char *optarg;
|
|
extern PGDLLIMPORT int optind;
|
|
extern PGDLLIMPORT int opterr;
|
|
extern PGDLLIMPORT int optopt;
|
|
|
|
#endif /* HAVE_GETOPT_H */
|
|
|
|
/*
|
|
* Some platforms have optreset but fail to declare it in <getopt.h>, so cope.
|
|
* Cygwin, however, doesn't like this either.
|
|
*/
|
|
#if defined(HAVE_INT_OPTRESET) && !defined(__CYGWIN__)
|
|
extern PGDLLIMPORT int optreset;
|
|
#endif
|
|
|
|
/* Provide getopt() declaration if the platform doesn't have it */
|
|
#ifndef HAVE_GETOPT
|
|
extern int getopt(int nargc, char *const *nargv, const char *ostr);
|
|
#endif
|
|
|
|
#endif /* PG_GETOPT_H */
|