From: Bruno Haible <bruno@clisp.org> Date: Thu, 24 Dec 2009 15:59:36 +0000 (+0100) Subject: Reduce namespace pollution on glibc systems. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d19dfc69437add5301e0e1dd28dbfda2c694cbbc;p=pspp Reduce namespace pollution on glibc systems. --- diff --git a/ChangeLog b/ChangeLog index c7ced82fb4..7c8f7dacaf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2009-12-24 Bruno Haible <bruno@clisp.org> + + Reduce namespace pollution on glibc systems. + * lib/inttypes.in.h: Don't include <stdint.h> on glibc systems. + * lib/stdlib.in.h: Don't include <stdint.h>, <unistd.h> on glibc + systems. + * lib/unistd.in.h: Don't include <stdio.h>, <fcntl.h>, <stdlib.h>, + <getopt.h> on glibc systems. + * lib/fcntl.in.h: Don't include <sys/stat.h>, <unistd.h> on glibc + systems. + * lib/fcntl.c: Include <unistd.h> here instead. + 2009-12-24 Bruno Haible <bruno@clisp.org> * lib/stdlib.in.h (includes): Fix typo in today's commit. diff --git a/lib/fcntl.c b/lib/fcntl.c index 05d73a94fb..5069eec0b5 100644 --- a/lib/fcntl.c +++ b/lib/fcntl.c @@ -25,6 +25,7 @@ #include <errno.h> #include <limits.h> #include <stdarg.h> +#include <unistd.h> #if !HAVE_FCNTL # define rpl_fcntl fcntl diff --git a/lib/fcntl.in.h b/lib/fcntl.in.h index 1a4602bfc0..d3eb27fc52 100644 --- a/lib/fcntl.in.h +++ b/lib/fcntl.in.h @@ -25,8 +25,10 @@ /* Special invocation convention. */ #include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> +#ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */ +# include <sys/stat.h> +# include <unistd.h> +#endif #@INCLUDE_NEXT@ @NEXT_FCNTL_H@ #else @@ -35,8 +37,10 @@ #ifndef _GL_FCNTL_H #include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> +#ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */ +# include <sys/stat.h> +# include <unistd.h> +#endif /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT@ @NEXT_FCNTL_H@ diff --git a/lib/inttypes.in.h b/lib/inttypes.in.h index cfb6fc7d57..2fac7e5e63 100644 --- a/lib/inttypes.in.h +++ b/lib/inttypes.in.h @@ -36,8 +36,11 @@ #if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H #define INTTYPES_H -/* Include <stdint.h> or the gnulib replacement. */ -#include <stdint.h> +/* Include <stdint.h> or the gnulib replacement. + But avoid namespace pollution on glibc systems. */ +#ifndef __GLIBC__ +# include <stdint.h> +#endif /* Get CHAR_BIT. */ #include <limits.h> diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h index 5f2766a99f..edee74c4a2 100644 --- a/lib/stdlib.in.h +++ b/lib/stdlib.in.h @@ -49,8 +49,8 @@ # include <random.h> #endif -#if (@GNULIB_RANDOM_R@ || !@HAVE_STRUCT_RANDOM_DATA@ \ - || defined GNULIB_POSIXCHECK) +#if !@HAVE_STRUCT_RANDOM_DATA@ || (@GNULIB_RANDOM_R@ && !@HAVE_RANDOM_R@) \ + || defined GNULIB_POSIXCHECK # include <stdint.h> #endif @@ -67,9 +67,10 @@ struct random_data }; #endif -#if @GNULIB_MKSTEMP@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK +#if (@GNULIB_MKSTEMP@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ /* On MacOS X 10.3, only <unistd.h> declares mkstemp. */ /* On Cygwin 1.7.1, only <unistd.h> declares getsubopt. */ +/* But avoid namespace pollution on glibc systems. */ # include <unistd.h> #endif diff --git a/lib/unistd.in.h b/lib/unistd.in.h index 1a11d1a89d..af2d563321 100644 --- a/lib/unistd.in.h +++ b/lib/unistd.in.h @@ -34,20 +34,26 @@ /* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */ /* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>. */ +/* But avoid namespace pollution on glibc systems. */ #if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \ - || @GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) + || (@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK)) \ + && ! defined __GLIBC__ # include <stdio.h> #endif /* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>. */ -#if @GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK +/* But avoid namespace pollution on glibc systems. */ +#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ # include <fcntl.h> #endif /* mingw fails to declare _exit in <unistd.h>. */ /* mingw, BeOS, Haiku declare environ in <stdlib.h>, not in <unistd.h>. */ /* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */ -#include <stdlib.h> +/* But avoid namespace pollution on glibc systems. */ +#ifndef __GLIBC__ +# include <stdlib.h> +#endif /* mingw declares getcwd in <io.h>, not in <unistd.h>. */ #if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \ @@ -63,8 +69,9 @@ # include <sys/types.h> #endif -/* Get getopt(), optarg, optind, opterr, optopt. */ -#if @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT +/* Get getopt(), optarg, optind, opterr, optopt. + But avoid namespace pollution on glibc systems. */ +#if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT # include <getopt.h> #endif