Browse Source

sync getopt headers with glibc

Mike Frysinger 18 years ago
parent
commit
20e7f61155
3 changed files with 28 additions and 12 deletions
  1. 1 0
      include/getopt.h
  2. 1 1
      include/unistd.h
  3. 26 11
      libc/sysdeps/linux/common/bits/getopt.h

+ 1 - 0
include/getopt.h

@@ -1,4 +1,5 @@
 /* This file will not be installed if not using gnu getopt. */
 /* This file will not be installed if not using gnu getopt. */
 
 
+#include <features.h>
 #include <bits/getopt.h>
 #include <bits/getopt.h>
 
 

+ 1 - 1
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
    arguments in ARGV (ARGC of them, minus the program name) for
    options given in OPTS.  */
    options given in OPTS.  */
 # define __need_getopt
 # define __need_getopt
-# include <bits/getopt.h>
+# include <getopt.h>
 #endif
 #endif
 
 
 
 

+ 26 - 11
libc/sysdeps/linux/common/bits/getopt.h

@@ -1,5 +1,6 @@
 /* Declarations for getopt.
 /* 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.
    This file is part of the GNU C Library.
 
 
    The GNU C Library is free software; you can redistribute it and/or
    The GNU C Library is free software; you can redistribute it and/or
@@ -34,6 +35,17 @@
 # include <ctype.h>
 # include <ctype.h>
 #endif
 #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
 #ifdef	__cplusplus
 extern "C" {
 extern "C" {
 #endif
 #endif
@@ -133,23 +145,26 @@ struct option
    arguments to the option '\0'.  This behavior is specific to the GNU
    arguments to the option '\0'.  This behavior is specific to the GNU
    `getopt'.  */
    `getopt'.  */
 
 
+#if defined __GNU_LIBRARY__ || defined __UCLIBC__
 /* Many other libraries have conflicting prototypes for getopt, with
 /* Many other libraries have conflicting prototypes for getopt, with
    differences in the consts, in stdlib.h.  To avoid compilation
    differences in the consts, in stdlib.h.  To avoid compilation
    errors, only prototype getopt for the GNU C library.  */
    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
 #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 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
 #endif
 
 
 #ifdef	__cplusplus
 #ifdef	__cplusplus