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.
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 ------------------------------
gpietsch@comcast.net
****************************************************************************/
+/* This is a glibc-extension header file. */
#ifndef GETOPT_H
#define GETOPT_H
/* 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"
};
+/* 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
int optind, opterr, optopt, optwhere;
} getopt_data;
+#endif /* __need_getopt_newlib */
+
/* externally-defined variables */
extern char *optarg;
extern int optind;