changeset 17211:6cbd4d7cb911

argp: better 'inline' Use extern-inline module to declare extern inline functions. This avoids some bogus warning diagnostics. Problem discovered when modifying GNU tar to use the manywarnings module. * lib/argp.h, lib/argp-xinl.c (ARGP_EI) [!_LIBC]: * lib/argp-fmtstream.h, lib/argp-fs-xinl.c (ARGP_FS_EI) [!_LIBC]: Define based on extern-inline. * modules/argp (Depends-on): Add extern-inline.
author Paul Eggert <eggert@cs.ucla.edu>
date Tue, 18 Dec 2012 17:59:33 -0800
parents c09382013ecb
children 46900f509454
files ChangeLog lib/argp-fmtstream.h lib/argp-fs-xinl.c lib/argp-xinl.c lib/argp.h modules/argp
diffstat 6 files changed, 32 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2012-12-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+	argp: better 'inline'
+	Use extern-inline module to declare extern inline functions.
+	This avoids some bogus warning diagnostics.  Problem discovered
+	when modifying GNU tar to use the manywarnings module.
+	* lib/argp.h, lib/argp-xinl.c (ARGP_EI) [!_LIBC]:
+	* lib/argp-fmtstream.h, lib/argp-fs-xinl.c (ARGP_FS_EI) [!_LIBC]:
+	Define based on extern-inline.
+	* modules/argp (Depends-on): Add extern-inline.
+
 2012-12-17  Paul Eggert  <eggert@cs.ucla.edu>
 
 	filemode, sys_stat: Handle MPX files a la AIX.
--- a/lib/argp-fmtstream.h
+++ b/lib/argp-fmtstream.h
@@ -197,6 +197,10 @@
 #define __argp_fmtstream_point argp_fmtstream_point
 #define __argp_fmtstream_update _argp_fmtstream_update
 #define __argp_fmtstream_ensure _argp_fmtstream_ensure
+_GL_INLINE_HEADER_BEGIN
+#ifndef ARGP_FS_EI
+# define ARGP_FS_EI _GL_INLINE
+#endif
 #endif
 
 #ifndef ARGP_FS_EI
@@ -345,6 +349,7 @@
 #undef __argp_fmtstream_point
 #undef __argp_fmtstream_update
 #undef __argp_fmtstream_ensure
+_GL_INLINE_HEADER_END
 #endif
 
 #endif /* __OPTIMIZE__ */
--- a/lib/argp-fs-xinl.c
+++ b/lib/argp-fs-xinl.c
@@ -20,7 +20,11 @@
 # include <config.h>
 #endif
 
-#define ARGP_FS_EI
+#ifdef _LIBC
+# define ARGP_FS_EI
+#else
+# define ARGP_FS_EI _GL_EXTERN_INLINE
+#endif
 #undef __OPTIMIZE__
 #define __OPTIMIZE__ 1
 #include "argp-fmtstream.h"
--- a/lib/argp-xinl.c
+++ b/lib/argp-xinl.c
@@ -27,7 +27,11 @@
 #ifndef __USE_EXTERN_INLINES
 # define __USE_EXTERN_INLINES   1
 #endif
-#define ARGP_EI
+#ifdef _LIBC
+# define ARGP_EI
+#else
+# define ARGP_EI _GL_EXTERN_INLINE
+#endif
 #undef __OPTIMIZE__
 #define __OPTIMIZE__ 1
 #include "argp.h"
--- a/lib/argp.h
+++ b/lib/argp.h
@@ -579,6 +579,10 @@
 #  define __argp_state_help argp_state_help
 #  define __option_is_short _option_is_short
 #  define __option_is_end _option_is_end
+_GL_INLINE_HEADER_BEGIN
+#  ifndef ARGP_EI
+#   define ARGP_EI _GL_INLINE
+#  endif
 # endif
 
 # ifndef ARGP_EI
@@ -635,6 +639,7 @@
 #  undef __argp_state_help
 #  undef __option_is_short
 #  undef __option_is_end
+_GL_INLINE_HEADER_END
 # endif
 #endif /* Use extern inlines.  */
 
--- a/modules/argp
+++ b/modules/argp
@@ -25,6 +25,7 @@
 Depends-on:
 alloca
 dirname-lgpl
+extern-inline
 getopt-gnu
 strchrnul
 sysexits