From 37e3ad9a8077636cea173c1494c744e383962255 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 18 Dec 2012 17:59:33 -0800 Subject: [PATCH] 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. --- ChangeLog | 11 +++++++++++ lib/argp-fmtstream.h | 5 +++++ lib/argp-fs-xinl.c | 6 +++++- lib/argp-xinl.c | 6 +++++- lib/argp.h | 5 +++++ modules/argp | 1 + 6 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a2d2b2321..b9e213b3b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2012-12-18 Paul Eggert + + 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 filemode, sys_stat: Handle MPX files a la AIX. diff --git a/lib/argp-fmtstream.h b/lib/argp-fmtstream.h index a891c3dc0..3de0979eb 100644 --- a/lib/argp-fmtstream.h +++ b/lib/argp-fmtstream.h @@ -197,6 +197,10 @@ extern int __argp_fmtstream_ensure (argp_fmtstream_t __fs, size_t __amount); #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 @@ __argp_fmtstream_point (argp_fmtstream_t __fs) #undef __argp_fmtstream_point #undef __argp_fmtstream_update #undef __argp_fmtstream_ensure +_GL_INLINE_HEADER_END #endif #endif /* __OPTIMIZE__ */ diff --git a/lib/argp-fs-xinl.c b/lib/argp-fs-xinl.c index b030e589f..408e5d02b 100644 --- a/lib/argp-fs-xinl.c +++ b/lib/argp-fs-xinl.c @@ -20,7 +20,11 @@ # include #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" diff --git a/lib/argp-xinl.c b/lib/argp-xinl.c index 7d45fcb62..731833d3a 100644 --- 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" diff --git a/lib/argp.h b/lib/argp.h index c0c68a61e..8a7654ae8 100644 --- a/lib/argp.h +++ b/lib/argp.h @@ -579,6 +579,10 @@ extern void *__argp_input (const struct argp *__restrict __argp, # 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 @@ __NTH (__option_is_end (const struct argp_option *__opt)) # undef __argp_state_help # undef __option_is_short # undef __option_is_end +_GL_INLINE_HEADER_END # endif #endif /* Use extern inlines. */ diff --git a/modules/argp b/modules/argp index 8d496812d..125046ad8 100644 --- a/modules/argp +++ b/modules/argp @@ -25,6 +25,7 @@ m4/argp.m4 Depends-on: alloca dirname-lgpl +extern-inline getopt-gnu strchrnul sysexits -- 2.11.0