summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/getopt.h1
-rw-r--r--include/unistd.h2
-rw-r--r--libc/sysdeps/linux/common/bits/getopt.h37
3 files changed, 28 insertions, 12 deletions
diff --git a/include/getopt.h b/include/getopt.h
index a682f9ca8..4ea31a683 100644
--- a/include/getopt.h
+++ b/include/getopt.h
@@ -1,4 +1,5 @@
/* This file will not be installed if not using gnu getopt. */
+#include <features.h>
#include <bits/getopt.h>
diff --git a/include/unistd.h b/include/unistd.h
index 1ca923130..bb5cfd4bd 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -782,7 +782,7 @@ extern int setlogin (__const char *__name) __THROW __nonnull ((1));
arguments in ARGV (ARGC of them, minus the program name) for
options given in OPTS. */
# define __need_getopt
-# include <bits/getopt.h>
+# include <getopt.h>
#endif
diff --git a/libc/sysdeps/linux/common/bits/getopt.h b/libc/sysdeps/linux/common/bits/getopt.h
index fd1cb7b15..4a60e103e 100644
--- a/libc/sysdeps/linux/common/bits/getopt.h
+++ b/libc/sysdeps/linux/common/bits/getopt.h
@@ -1,5 +1,6 @@
/* Declarations for getopt.
- Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -34,6 +35,17 @@
# include <ctype.h>
#endif
+#ifndef __THROW
+# ifndef __GNUC_PREREQ
+# define __GNUC_PREREQ(maj, min) (0)
+# endif
+# if defined __cplusplus && __GNUC_PREREQ (2,8)
+# define __THROW throw ()
+# else
+# define __THROW
+# endif
+#endif
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -133,23 +145,26 @@ struct option
arguments to the option '\0'. This behavior is specific to the GNU
`getopt'. */
+#if defined __GNU_LIBRARY__ || defined __UCLIBC__
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
-extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __THROW;
+#else /* not __GNU_LIBRARY__ */
+extern int getopt ();
+#endif /* __GNU_LIBRARY__ */
#ifndef __need_getopt
-extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
- const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int __argc, char *const *__argv,
+extern int getopt_long (int ___argc, char *const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW;
+extern int getopt_long_only (int ___argc, char *const *___argv,
const char *__shortopts,
- const struct option *__longopts, int *__longind);
+ const struct option *__longopts, int *__longind)
+ __THROW;
-/* Internal only. Users should not call this directly. */
-extern int _getopt_internal (int __argc, char *const *__argv,
- const char *__shortopts,
- const struct option *__longopts, int *__longind,
- int __long_only);
#endif
#ifdef __cplusplus