diff --git a/src/rrd_getopt.c b/src/rrd_getopt.c
index b389aaa53391281f49daba5df73c0918ac358bc9..5f938f398b691366fd2165c68d4e1b65c18297f4 100644 (file)
--- a/src/rrd_getopt.c
+++ b/src/rrd_getopt.c
#define _NO_PROTO
#endif
#define _NO_PROTO
#endif
-#ifdef HAVE_CONFIG_H
-#include "../rrd_config.h"
-#endif
-#include "rrd_i18n.h"
-
-#if !defined (__STDC__) || !__STDC__
+#if !defined WIN32 && (!defined (__STDC__) || !__STDC__)
/* This is a separate conditional since some stdc systems
reject `defined (const)'. */
#ifndef const
/* This is a separate conditional since some stdc systems
reject `defined (const)'. */
#ifndef const
#endif
#endif
#endif
#endif
+
+#ifdef HAVE_CONFIG_H
+#include "../rrd_config.h"
+#endif
+
+#include "rrd_i18n.h"
+
+
#include <stdio.h>
/* Comment out all this code if we are using the GNU C Library, and are not
#include <stdio.h>
/* Comment out all this code if we are using the GNU C Library, and are not
Also, when `ordering' is RETURN_IN_ORDER,
each non-option ARGV-element is returned here. */
Also, when `ordering' is RETURN_IN_ORDER,
each non-option ARGV-element is returned here. */
+/*
+ * On some versions of Solaris, opterr and friends are defined in core libc
+ * rather than in a separate getopt module. Define these variables only
+ * if configure found they aren't there by default. (We assume that testing
+ * opterr is sufficient for all of these except optreset.)
+ */
+#ifndef HAVE_INT_OPTERR
+
char *optarg = NULL;
/* Index in ARGV of the next element to be scanned.
char *optarg = NULL;
/* Index in ARGV of the next element to be scanned.
Otherwise, `optind' communicates from one call to the next
how much of ARGV has been scanned so far. */
Otherwise, `optind' communicates from one call to the next
how much of ARGV has been scanned so far. */
+/* Callers store zero here to inhibit the error message
+ for unrecognized options. */
+
+int opterr = 1;
+
+/* Set to an option character which was unrecognized.
+ This must be initialized on some systems to avoid linking in the
+ system's own getopt implementation. */
+
+int optopt = '?';
+
/* 1003.2 says this must be 1 before any call. */
int optind = 1;
/* 1003.2 says this must be 1 before any call. */
int optind = 1;
+#else
+ extern int opterr;
+ extern int optind;
+ extern int optopt;
+ extern char *optarg;
+#endif
+
+
/* Formerly, initialization of getopt depended on optind==0, which
causes problems with re-calling getopt as programs generally don't
know that. */
/* Formerly, initialization of getopt depended on optind==0, which
causes problems with re-calling getopt as programs generally don't
know that. */
static char *nextchar;
static char *nextchar;
-/* Callers store zero here to inhibit the error message
- for unrecognized options. */
-
-int opterr = 1;
-
-/* Set to an option character which was unrecognized.
- This must be initialized on some systems to avoid linking in the
- system's own getopt implementation. */
-
-int optopt = '?';
/* Describe how to deal with options that follow non-option ARGV-elements.
/* Describe how to deal with options that follow non-option ARGV-elements.
char *getenv(
);
char *getenv(
);
-static char *my_index(
- str,
- chr)
- const char *str;
- int chr;
+static char* my_index(const char* str, int chr)
{
while (*str) {
if (*str == chr)
{
while (*str) {
if (*str == chr)
to getopt is that one passed to the process. */
static void store_args(
int argc,
to getopt is that one passed to the process. */
static void store_args(
int argc,
- char *const *argv) __attribute__ ((unused));
+ char *const *argv);
+
static void store_args(
int argc,
char *const *argv)
static void store_args(
int argc,
char *const *argv)
char **);
#endif
char **);
#endif
-static void exchange(
- argv)
- char **argv;
+static void exchange(char** argv)
{
int bottom = first_nonopt;
int middle = last_nonopt;
{
int bottom = first_nonopt;
int middle = last_nonopt;
char *const *,
const char *);
#endif
char *const *,
const char *);
#endif
-static const char *_getopt_initialize(
- argc,
- argv,
- optstring)
- int argc;
- char *const *argv;
- const char *optstring;
+static const char* _getopt_initialize(int argc,
+ char* const* argv,
+ const char* optstring)
{
/* Start processing options with ARGV-element 1 (since ARGV-element 0
is the program name); the sequence of previously skipped
{
/* Start processing options with ARGV-element 1 (since ARGV-element 0
is the program name); the sequence of previously skipped
If LONG_ONLY is nonzero, '-' as well as '--' can introduce
long-named options. */
If LONG_ONLY is nonzero, '-' as well as '--' can introduce
long-named options. */
-int _getopt_internal(
- argc,
- argv,
- optstring,
- longopts,
- longind,
- long_only)
- int argc;
- char *const *argv;
- const char *optstring;
- const struct option *longopts;
- int *longind;
- int long_only;
+int _getopt_internal(int argc,
+#ifdef WIN32
+ char** argv,
+#else // WIN32
+ char* const* argv,
+#endif //WIN32
+ const char *optstring,
+ const struct option *longopts,
+ int* longind,
+ int long_only)
{
optarg = NULL;
{
optarg = NULL;
}
}
}
}
-int getopt(
- argc,
- argv,
- optstring)
- int argc;
- char *const *argv;
- const char *optstring;
-{
- return _getopt_internal(argc, argv, optstring,
- (const struct option *) 0, (int *) 0, 0);
-}
-
#endif /* Not ELIDE_CODE. */
\f
#ifdef TEST
#endif /* Not ELIDE_CODE. */
\f
#ifdef TEST