2000-06-17 H.J. Lu <hjl@gnu.org>

* getopt.h: Updated from gcc.
	* libiberty.h: Likewise.
	* symcat.h: Likewise.
This commit is contained in:
H.J. Lu 2000-06-17 23:08:19 +00:00
parent 607723e496
commit 79c6de76fd
4 changed files with 33 additions and 4 deletions

View file

@ -1,3 +1,9 @@
2000-06-17 H.J. Lu <hjl@gnu.org>
* getopt.h: Updated from gcc.
* libiberty.h: Likewise.
* symcat.h: Likewise.
2000-06-17 H.J. Lu <hjl@gnu.org> 2000-06-17 H.J. Lu <hjl@gnu.org>
* ansidecl.h: Updated from gcc. * ansidecl.h: Updated from gcc.

View file

@ -99,13 +99,20 @@ struct option
#define optional_argument 2 #define optional_argument 2
#if defined (__STDC__) && __STDC__ #if defined (__STDC__) && __STDC__
#ifdef __GNU_LIBRARY__ /* HAVE_DECL_* is a three-state macro: undefined, 0 or 1. If it is
undefined, we haven't run the autoconf check so provide the
declaration without arguments. If it is 0, we checked and failed
to find the declaration so provide a fully prototyped one. If it
is 1, we found it so don't provide any declaration at all. */
#if defined (__GNU_LIBRARY__) || (defined (HAVE_DECL_GETOPT) && !HAVE_DECL_GETOPT)
/* 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);
#else /* not __GNU_LIBRARY__ */ #else /* not __GNU_LIBRARY__ */
# if !defined (HAVE_DECL_GETOPT)
extern int getopt (); extern int getopt ();
# endif
#endif /* __GNU_LIBRARY__ */ #endif /* __GNU_LIBRARY__ */
extern int getopt_long (int argc, char *const *argv, const char *shortopts, extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind); const struct option *longopts, int *longind);

View file

@ -36,10 +36,17 @@ extern char **dupargv PARAMS ((char **)) ATTRIBUTE_MALLOC;
across different systems, sometimes as "char *" and sometimes as across different systems, sometimes as "char *" and sometimes as
"const char *" */ "const char *" */
#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) /* HAVE_DECL_* is a three-state macro: undefined, 0 or 1. If it is
undefined, we haven't run the autoconf check so provide the
declaration without arguments. If it is 0, we checked and failed
to find the declaration so provide a fully prototyped one. If it
is 1, we found it so don't provide any declaration at all. */
#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || (defined (HAVE_DECL_BASENAME) && !HAVE_DECL_BASENAME)
extern char *basename PARAMS ((const char *)); extern char *basename PARAMS ((const char *));
#else #else
# if !defined (HAVE_DECL_BASENAME)
extern char *basename (); extern char *basename ();
# endif
#endif #endif
/* Concatenate an arbitrary number of strings, up to (char *) NULL. /* Concatenate an arbitrary number of strings, up to (char *) NULL.

View file

@ -19,12 +19,16 @@
#ifndef SYM_CAT_H #ifndef SYM_CAT_H
#define SYM_CAT_H #define SYM_CAT_H
#if defined (__STDC__) || defined (ALMOST_STDC) #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#define CONCAT2(a,b) a##b #define CONCAT2(a,b) a##b
#define CONCAT3(a,b,c) a##b##c #define CONCAT3(a,b,c) a##b##c
#define CONCAT4(a,b,c,d) a##b##c##d #define CONCAT4(a,b,c,d) a##b##c##d
#define STRINGX(s) #s #define STRINGX(s) #s
#else #else
/* Note one should never pass extra whitespace to the CONCATn macros,
e.g. CONCAT2(foo, bar) because traditonal C will keep the space between
the two labels instead of concatenating them. Instead, make sure to
write CONCAT2(foo,bar). */
#define CONCAT2(a,b) a/**/b #define CONCAT2(a,b) a/**/b
#define CONCAT3(a,b,c) a/**/b/**/c #define CONCAT3(a,b,c) a/**/b/**/c
#define CONCAT4(a,b,c,d) a/**/b/**/c/**/d #define CONCAT4(a,b,c,d) a/**/b/**/c/**/d
@ -35,6 +39,11 @@
#define XCONCAT3(a,b,c) CONCAT3(a,b,c) #define XCONCAT3(a,b,c) CONCAT3(a,b,c)
#define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d) #define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d)
/* Note the layer of indirection here is typically used to allow
stringification of the expansion of macros. I.e. "#define foo
bar", "XSTRING(foo)", to yield "bar". Be aware that this only
works for __STDC__, not for traditional C which will still resolve
to "foo". */
#define XSTRING(s) STRINGX(s) #define XSTRING(s) STRINGX(s)
#endif SYM_CAT_H #endif /* SYM_CAT_H */