On 2014-02-12 14:11:10 -0500, Tom Lane wrote:
> Marco Atzeri <marco.atzeri@gmail.com> writes:
> > On 12/02/2014 19:19, Andres Freund wrote:
> >> On 2014-02-12 19:13:07 +0100, Marco Atzeri wrote:
> >>> About PGDLLIMPORT , my build log is full of "warning: ‘optarg’ redeclared
> >>> without dllimport attribute: previous dllimport ignored "
>
> >> That should be fixed then. I guess cygwin's getopt.h declares it that way?
>
> > from /usr/include/getopt.h
>
> > extern char __declspec(dllimport) *optarg; /* argument associated
> > with option */
>
> Hm. All of our files that use getopt also do
>
> extern char *optarg;
> extern int optind,
> opterr;
>
> #ifdef HAVE_INT_OPTRESET
> extern int optreset; /* might not be declared by system headers */
> #endif
At least zic.c doesn't...
So, now that brolga is revived, this unsurprisingly causes breakage
there after the --disable-auto-export change. ISTM the easiest way to
deal with this is to just adorn all those with a PGDLLIMPORT?
I don't immediately see how the HAVE_INT_OPTRESET stuff could be reused
in any interesting way as it's really independent of optind/optarg
whether it exists?
It strikes me that we should just move all that to
src/include/getopt_long.h and include that from the places that
currently include getopt.h directly. It's pretty pointless to have all
those externs, HAVE_GETOPT_H, HAVE_INT_OPTRESET in every file. It'd be
prettier if it were named getopt.h, but well...
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services