Reportedly, some versions of mingw are like that, and it seems plausible
in general that older platforms might be that way. However, we'd
determined experimentally that just doing "extern int" conflicts with
the way Cygwin declares these variables, so explicitly exclude Cygwin.
Michael Paquier, tweaked by me to hopefully not break Cygwin
extern int opterr;
extern int optopt;
-#ifdef HAVE_INT_OPTRESET
+#endif /* HAVE_GETOPT_H */
+
+/*
+ * Some platforms have optreset but not <getopt.h>. Cygwin, however,
+ * doesn't like this either.
+ */
+#if defined(HAVE_INT_OPTRESET) && !defined(__CYGWIN__)
extern int optreset;
#endif
-#endif /* HAVE_GETOPT_H */
-
#ifndef HAVE_GETOPT
extern int getopt(int nargc, char *const * nargv, const char *ostr);
#endif