OSDN Git Service

2008-03-07 Jeff Johnston <jjohnstn@redhat.com>
authorjjohnstn <jjohnstn>
Fri, 7 Mar 2008 18:16:35 +0000 (18:16 +0000)
committerjjohnstn <jjohnstn>
Fri, 7 Mar 2008 18:16:35 +0000 (18:16 +0000)
        * libc/include/getopt.h: Hide newlib extensions under
        the __need_getopt_newlib flag.
        * libc/stdlib/getopt.c: #define __need_getopt_newlib before including
        getopt.h.  Put entire code under !HAVE_GETOPT to support platforms
        with their own getopt implementation.
        * configure.host: Specify HAVE_GETOPT for x86-linux.

newlib/ChangeLog
newlib/configure.host
newlib/libc/include/getopt.h
newlib/libc/stdlib/getopt.c

index 04526b0..0a8a9d0 100644 (file)
@@ -1,5 +1,14 @@
 2008-03-07  Jeff Johnston  <jjohnstn@redhat.com>
 
+       * libc/include/getopt.h: Hide newlib extensions under
+       the __need_getopt_newlib flag.
+       * libc/stdlib/getopt.c: #define __need_getopt_newlib before including
+       getopt.h.  Put entire code under !HAVE_GETOPT to support platforms
+       with their own getopt implementation.
+       * configure.host: Specify HAVE_GETOPT for x86-linux.
+
+2008-03-07  Jeff Johnston  <jjohnstn@redhat.com>
+
        * libc/include/sys/reent.h(_REENT_SMALL_CHECK_INIT): Specify
        this macro completely instead of referring to CHECK_STD_INIT which
        is only found in libc/stdio/local.h.
index 259e204..bbdfff3 100644 (file)
@@ -414,6 +414,7 @@ case "${host}" in
        newlib_cflags="${newlib_cflags} -Wall"
        newlib_cflags="${newlib_cflags} -D_I386MACH_ALLOW_HW_INTERRUPTS"
        newlib_cflags="${newlib_cflags} -DHAVE_FCNTL"
+       newlib_cflags="${newlib_cflags} -DHAVE_GETOPT"
        # --- Required when building a shared library ------------------------
        newlib_cflags="${newlib_cflags} -fPIC -D_I386MACH_NEED_SOTYPE_FUNCTION"
        # --- The three lines below are optional ------------------------------
index f918757..13cf99c 100644 (file)
@@ -82,6 +82,7 @@ Gregory Pietsch's current e-mail address:
 gpietsch@comcast.net
 ****************************************************************************/
 
+/* This is a glibc-extension header file. */
 
 #ifndef GETOPT_H
 #define GETOPT_H
@@ -90,23 +91,9 @@ gpietsch@comcast.net
 
 /* include files needed by this include file */
 
-/* macros defined by this include file */
-#define NO_ARG                 0
-#define REQUIRED_ARG           1
-#define OPTIONAL_ARG           2
-
-/* For glibc compatibility.  */
-#define no_argument            NO_ARG
-#define required_argument      REQUIRED_ARG
-#define optional_argument      OPTIONAL_ARG
-
-  /* The GETOPT_DATA_INITIALIZER macro is used to initialize a statically-
-     allocated variable of type struct getopt_data.  */
-#define GETOPT_DATA_INITIALIZER        {0,0,0,0,0}
-  /* These #defines are to keep the namespace clear... */
-#define getopt_r               __getopt_r
-#define getopt_long_r          __getopt_long_r
-#define getopt_long_only_r     __getopt_long_only_r
+#define no_argument            0
+#define required_argument      1
+#define optional_argument      2
 
 #ifdef __cplusplus
 extern "C"
@@ -130,6 +117,25 @@ extern "C"
 
   };
 
+/* While getopt.h is a glibc extension, the following are newlib extensions.
+ * They are optionally included via the __need_getopt_newlib flag.  */
+
+#ifdef __need_getopt_newlib
+
+  /* macros defined by this include file */
+  #define NO_ARG               no_argument
+  #define REQUIRED_ARG         required_argument
+  #define OPTIONAL_ARG         optional_argument
+
+  /* The GETOPT_DATA_INITIALIZER macro is used to initialize a statically-
+     allocated variable of type struct getopt_data.  */
+  #define GETOPT_DATA_INITIALIZER      {0,0,0,0,0}
+
+  /* These #defines are to make accessing the reentrant functions easier.  */
+  #define getopt_r             __getopt_r
+  #define getopt_long_r                __getopt_long_r
+  #define getopt_long_only_r   __getopt_long_only_r
+
   /* The getopt_data structure is for reentrancy. Its members are similar to
      the externally-defined variables.  */
   typedef struct getopt_data
@@ -138,6 +144,8 @@ extern "C"
     int optind, opterr, optopt, optwhere;
   } getopt_data;
 
+#endif /* __need_getopt_newlib */
+
   /* externally-defined variables */
   extern char *optarg;
   extern int optind;
index eb0a082..944214d 100644 (file)
@@ -83,11 +83,13 @@ Gregory Pietsch's current e-mail address:
 gpietsch@comcast.net
 ****************************************************************************/
 
+#ifndef HAVE_GETOPT
 
 /* include files */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#define __need_getopt_newlib
 #include <getopt.h>
 
 /* macros */
@@ -472,4 +474,6 @@ __getopt_long_only_r (int argc, char *const argv[], const char *shortopts,
   return getopt_internal (argc, argv, shortopts, longopts, longind, 1, data);
 }
 
+#endif /* !HAVE_GETOPT */
+
 /* end of file GETOPT.C */