gnulib: allow multiple gnulib generated replacements to coexist
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 7 Feb 2011 01:01:26 +0000 (17:01 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 7 Feb 2011 01:01:26 +0000 (17:01 -0800)
This defines a few preprocessor symbols that should not affect Emacs.
* lib/getopt.in.h, lib/time.in.h, lib/unistd.in.h: Regenerate
via "make sync-from-gnulib".

ChangeLog
lib/getopt.in.h
lib/time.in.h
lib/unistd.in.h

index ec53bb0..07f01d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2011-02-06  Paul Eggert  <eggert@cs.ucla.edu>
 
+       gnulib: allow multiple gnulib generated replacements to coexist
+       This defines a few preprocessor symbols that should not affect Emacs.
+       * lib/getopt.in.h, lib/time.in.h, lib/unistd.in.h: Regenerate
+       via "make sync-from-gnulib".
+
        gnulib: undo previous change
        The upstream _HEADERS change was backed out of gnulib (see the
        same thread).  Stay in sync with gnulib.
index 9b0a9a5..82e2937 100644 (file)
@@ -181,6 +181,7 @@ extern int optopt;
    one).  For long options that have a zero `flag' field, `getopt'
    returns the contents of the `val' field.  */
 
+# if !GNULIB_defined_struct_option
 struct option
 {
   const char *name;
@@ -190,6 +191,8 @@ struct option
   int *flag;
   int val;
 };
+#  define GNULIB_defined_struct_option 1
+# endif
 
 /* Names for the values of the `has_arg' field of `struct option'.  */
 
index 2d6da71..cb533a4 100644 (file)
 extern "C" {
 #   endif
 
-#   undef timespec
-#   define timespec rpl_timespec
+#   if !GNULIB_defined_struct_timespec
+#    undef timespec
+#    define timespec rpl_timespec
 struct timespec
 {
   time_t tv_sec;
   long int tv_nsec;
 };
+#    define GNULIB_defined_struct_timespec 1
+#   endif
 
 #   ifdef __cplusplus
 }
@@ -84,6 +87,7 @@ struct timespec
 #  endif
 # endif
 
+# if !GNULIB_defined_struct_time_t_must_be_integral
 /* Per http://austingroupbugs.net/view.php?id=327, POSIX requires
    time_t to be an integer type, even though C99 permits floating
    point.  We don't know of any implementation that uses floating
@@ -92,6 +96,8 @@ struct timespec
 struct __time_t_must_be_integral {
   unsigned int __floating_time_t_unsupported : (time_t) 1;
 };
+#  define GNULIB_defined_struct_time_t_must_be_integral 1
+# endif
 
 /* Sleep for at least RQTP seconds unless interrupted,  If interrupted,
    return -1 and store the remaining time into RMTP.  See
index 14d685e..15893d7 100644 (file)
@@ -796,11 +796,14 @@ _GL_CXXALIAS_RPL (getpagesize, int, (void));
 #    if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 #     define getpagesize() _gl_getpagesize ()
 #    else
+#     if !GNULIB_defined_getpagesize_function
 static inline int
 getpagesize ()
 {
   return _gl_getpagesize ();
 }
+#      define GNULIB_defined_getpagesize_function 1
+#     endif
 #    endif
 #   endif
 #  endif