changeset 12123:4ace69c0279d

getopt: fix compilation on darwin * lib/getopt.in.h (includes): Leave breadcrumbs during system include. * lib/unistd.in.h (getopt): Use them to avoid recursive include. Reported by Ludovic Courtès. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Tue, 06 Oct 2009 20:44:13 -0600
parents d74129242224
children ddffc79e6aa1
files ChangeLog lib/getopt.in.h lib/unistd.in.h
diffstat 3 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-10-06  Eric Blake  <ebb9@byu.net>
+
+	getopt: fix compilation on darwin
+	* lib/getopt.in.h (includes): Leave breadcrumbs during system
+	include.
+	* lib/unistd.in.h (getopt): Use them to avoid recursive include.
+	Reported by Ludovic Courtès.
+
 2009-10-06  Bruno Haible  <bruno@clisp.org>
 
 	* modules/size_max (Description): Discourage its use.
--- a/lib/getopt.in.h
+++ b/lib/getopt.in.h
@@ -22,9 +22,13 @@
 @PRAGMA_SYSTEM_HEADER@
 #endif
 
-/* The include_next requires a split double-inclusion guard.  */
+/* The include_next requires a split double-inclusion guard.  We must
+   also inform the replacement unistd.h to not recursively use
+   <getopt.h>; our definitions will be present soon enough.  */
 #if @HAVE_GETOPT_H@
+# define _GL_SYSTEM_GETOPT
 # @INCLUDE_NEXT@ @NEXT_GETOPT_H@
+# undef _GL_SYSTEM_GETOPT
 #endif
 
 #ifndef _GL_GETOPT_H
--- a/lib/unistd.in.h
+++ b/lib/unistd.in.h
@@ -49,7 +49,7 @@
 #endif
 
 /* Get getopt(), optarg, optind, opterr, optopt.  */
-#if @GNULIB_UNISTD_H_GETOPT@
+#if @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT
 # include <getopt.h>
 #endif