Sure, that's easy enough. I pushed this: headers: check that _GL_INLINE_HEADER_BEGIN is defined Suggested by Bruce Korb in: http://lists.gnu.org/archive/html/bug-gnulib/2013-08/msg00070.html * doc/extern-inline.texi (extern inline): Suggest checking that _GL_INLINE_HEADER_BEGIN is defined. * lib/acl-internal.h, lib/argp-fmtstream.h, lib/argp.h: * lib/binary-io.h, lib/bitrotate.h, lib/count-leading-zeros.h: * lib/count-one-bits.h, lib/eealloc.h, lib/execinfo.in.h: * lib/gethrxtime.h, lib/gl_list.h, lib/gl_oset.h, lib/gl_xlist.h: * lib/gl_xoset.h, lib/gl_xsublist.h, lib/glthread/cond.h: * lib/glthread/thread.h, lib/math.in.h, lib/mbchar.h, lib/mbfile.h: * lib/mbiter.h, lib/mbuiter.h, lib/openat.h, lib/pipe-filter-aux.h: * lib/priv-set.h, lib/pthread.in.h, lib/savewd.h, lib/se-context.in.h: * lib/se-selinux.in.h, lib/sig-handler.h, lib/stat-time.h: * lib/sys_socket.in.h, lib/timespec.h, lib/u64.h, lib/unistd.in.h: * lib/utimens.h, lib/wctype.in.h, lib/xalloc.h, lib/xsize.h: * lib/xtime.h: Check that _GL_INLINE_HEADER_BEGIN is defined. diff --git a/doc/extern-inline.texi b/doc/extern-inline.texi index 1519bc4..be97f4e 100644 --- a/doc/extern-inline.texi +++ b/doc/extern-inline.texi @@ -45,6 +45,9 @@ To avoid this code bloat, @file{aaa.h} can do this: @example /* aaa.h */ /* #include any other headers here */ +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef AAA_INLINE # define AAA_INLINE _GL_INLINE diff --git a/lib/acl-internal.h b/lib/acl-internal.h index 7e6d77a..55c224c 100644 --- a/lib/acl-internal.h +++ b/lib/acl-internal.h @@ -60,6 +60,9 @@ extern int aclsort (int, int, struct acl *); # define fchmod(fd, mode) (-1) #endif
+#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef ACL_INTERNAL_INLINE # define ACL_INTERNAL_INLINE _GL_INLINE diff --git a/lib/argp-fmtstream.h b/lib/argp-fmtstream.h index 000090e..0222d1d 100644 --- a/lib/argp-fmtstream.h +++ b/lib/argp-fmtstream.h @@ -197,6 +197,9 @@ 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 +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef ARGP_FS_EI # define ARGP_FS_EI _GL_INLINE diff --git a/lib/argp.h b/lib/argp.h index c4094a4..a5f686a 100644 --- a/lib/argp.h +++ b/lib/argp.h @@ -579,6 +579,9 @@ 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 +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN # ifndef ARGP_EI # define ARGP_EI _GL_INLINE diff --git a/lib/binary-io.h b/lib/binary-io.h index 317fe3d..423c2ae 100644 --- a/lib/binary-io.h +++ b/lib/binary-io.h @@ -25,6 +25,9 @@ so we include it here first. */ #include <stdio.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef BINARY_IO_INLINE # define BINARY_IO_INLINE _GL_INLINE diff --git a/lib/bitrotate.h b/lib/bitrotate.h index 9e10a45..be2e407 100644 --- a/lib/bitrotate.h +++ b/lib/bitrotate.h @@ -23,6 +23,9 @@ #include <stdint.h> #include <sys/types.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef BITROTATE_INLINE # define BITROTATE_INLINE _GL_INLINE diff --git a/lib/count-leading-zeros.h b/lib/count-leading-zeros.h index 470a443..204fa5a 100644 --- a/lib/count-leading-zeros.h +++ b/lib/count-leading-zeros.h @@ -23,6 +23,9 @@ #include <stdlib.h> #include "verify.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef COUNT_LEADING_ZEROS_INLINE # define COUNT_LEADING_ZEROS_INLINE _GL_INLINE diff --git a/lib/count-one-bits.h b/lib/count-one-bits.h index 3cb9eca..ce9d67e 100644 --- a/lib/count-one-bits.h +++ b/lib/count-one-bits.h @@ -22,6 +22,9 @@ #include <stdlib.h> #include "verify.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef COUNT_ONE_BITS_INLINE # define COUNT_ONE_BITS_INLINE _GL_INLINE diff --git a/lib/eealloc.h b/lib/eealloc.h index cc29726..92b13c9 100644 --- a/lib/eealloc.h +++ b/lib/eealloc.h @@ -31,6 +31,9 @@ #include <stdlib.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef EEALLOC_INLINE # define EEALLOC_INLINE _GL_INLINE diff --git a/lib/execinfo.in.h b/lib/execinfo.in.h index b62e183..919565f 100644 --- a/lib/execinfo.in.h +++ b/lib/execinfo.in.h @@ -20,6 +20,9 @@ #ifndef _GL_EXECINFO_H #define _GL_EXECINFO_H +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_EXECINFO_INLINE # define _GL_EXECINFO_INLINE _GL_INLINE diff --git a/lib/gethrxtime.h b/lib/gethrxtime.h index 10df671..959f0ed 100644 --- a/lib/gethrxtime.h +++ b/lib/gethrxtime.h @@ -22,6 +22,9 @@ #include "xtime.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef GETHRXTIME_INLINE # define GETHRXTIME_INLINE _GL_INLINE diff --git a/lib/gl_list.h b/lib/gl_list.h index 58a92de..9094723 100644 --- a/lib/gl_list.h +++ b/lib/gl_list.h @@ -21,6 +21,9 @@ #include <stdbool.h> #include <stddef.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef GL_LIST_INLINE # define GL_LIST_INLINE _GL_INLINE diff --git a/lib/gl_oset.h b/lib/gl_oset.h index 575ffd3..5134065 100644 --- a/lib/gl_oset.h +++ b/lib/gl_oset.h @@ -21,6 +21,9 @@ #include <stdbool.h> #include <stddef.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef GL_OSET_INLINE # define GL_OSET_INLINE _GL_INLINE diff --git a/lib/gl_xlist.h b/lib/gl_xlist.h index 759bfe6..1c9451c 100644 --- a/lib/gl_xlist.h +++ b/lib/gl_xlist.h @@ -21,6 +21,9 @@ #include "gl_list.h" #include "xalloc.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef GL_XLIST_INLINE # define GL_XLIST_INLINE _GL_INLINE diff --git a/lib/gl_xoset.h b/lib/gl_xoset.h index 7ab0d49..b30b2ce 100644 --- a/lib/gl_xoset.h +++ b/lib/gl_xoset.h @@ -21,6 +21,9 @@ #include "gl_oset.h" #include "xalloc.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef GL_XOSET_INLINE # define GL_XOSET_INLINE _GL_INLINE diff --git a/lib/gl_xsublist.h b/lib/gl_xsublist.h index 725d3e1..53898ec 100644 --- a/lib/gl_xsublist.h +++ b/lib/gl_xsublist.h @@ -22,6 +22,9 @@ #include "gl_sublist.h" #include "xalloc.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef GL_XSUBLIST_INLINE # define GL_XSUBLIST_INLINE _GL_INLINE diff --git a/lib/glthread/cond.h b/lib/glthread/cond.h index 3926134..09544f3 100644 --- a/lib/glthread/cond.h +++ b/lib/glthread/cond.h @@ -54,6 +54,9 @@ #include <time.h> #include "glthread/lock.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GLTHREAD_COND_INLINE diff --git a/lib/glthread/thread.h b/lib/glthread/thread.h index e52b615..df8df61 100644 --- a/lib/glthread/thread.h +++ b/lib/glthread/thread.h @@ -74,6 +74,9 @@ #include <errno.h> #include <stdlib.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GLTHREAD_THREAD_INLINE # define _GLTHREAD_THREAD_INLINE _GL_INLINE diff --git a/lib/math.in.h b/lib/math.in.h index 7189819..6cc0f7d 100644 --- a/lib/math.in.h +++ b/lib/math.in.h @@ -28,6 +28,9 @@ #ifndef _@GUARD_PREFIX@_MATH_H #define _@GUARD_PREFIX@_MATH_H +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_MATH_INLINE # define _GL_MATH_INLINE _GL_INLINE diff --git a/lib/mbchar.h b/lib/mbchar.h index 327c957..0646cf4 100644 --- a/lib/mbchar.h +++ b/lib/mbchar.h @@ -156,6 +156,9 @@ #include <wchar.h> #include <wctype.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef MBCHAR_INLINE # define MBCHAR_INLINE _GL_INLINE diff --git a/lib/mbfile.h b/lib/mbfile.h index 199180e..704c0cc 100644 --- a/lib/mbfile.h +++ b/lib/mbfile.h @@ -62,6 +62,9 @@ #include "mbchar.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef MBFILE_INLINE # define MBFILE_INLINE _GL_INLINE @@ -244,6 +247,9 @@ typedef mbchar_t mbf_char_t; #define mb_iseof(mbc) ((mbc).bytes == 0) +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #endif /* _MBFILE_H */ diff --git a/lib/mbiter.h b/lib/mbiter.h index 24504c3..9ef4707 100644 --- a/lib/mbiter.h +++ b/lib/mbiter.h @@ -97,6 +97,9 @@ #include "mbchar.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef MBITER_INLINE # define MBITER_INLINE _GL_INLINE diff --git a/lib/mbuiter.h b/lib/mbuiter.h index c5f5fce..ca130a4 100644 --- a/lib/mbuiter.h +++ b/lib/mbuiter.h @@ -106,6 +106,9 @@ #include "mbchar.h" #include "strnlen1.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef MBUITER_INLINE # define MBUITER_INLINE _GL_INLINE diff --git a/lib/openat.h b/lib/openat.h index eb90990..7208f44 100644 --- a/lib/openat.h +++ b/lib/openat.h @@ -26,6 +26,9 @@ #include <unistd.h> #include <stdbool.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #if !HAVE_OPENAT diff --git a/lib/pipe-filter-aux.h b/lib/pipe-filter-aux.h index 1bd5c22..302e582 100644 --- a/lib/pipe-filter-aux.h +++ b/lib/pipe-filter-aux.h @@ -15,6 +15,9 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef PIPE_FILTER_AUX_INLINE # define PIPE_FILTER_AUX_INLINE _GL_INLINE diff --git a/lib/priv-set.h b/lib/priv-set.h index 6f62cce..c4fd375 100644 --- a/lib/priv-set.h +++ b/lib/priv-set.h @@ -17,6 +17,9 @@ Written by David Bartley. */ +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef PRIV_SET_INLINE # define PRIV_SET_INLINE _GL_INLINE diff --git a/lib/pthread.in.h b/lib/pthread.in.h index 7fcfb0b..bd8ccfa 100644 --- a/lib/pthread.in.h +++ b/lib/pthread.in.h @@ -41,6 +41,9 @@ #include <sys/types.h> #include <time.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_PTHREAD_INLINE # define _GL_PTHREAD_INLINE _GL_INLINE diff --git a/lib/savewd.h b/lib/savewd.h index 61912bc..7dedbee 100644 --- a/lib/savewd.h +++ b/lib/savewd.h @@ -23,6 +23,9 @@ #include <stdbool.h> #include <sys/types.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef SAVEWD_INLINE # define SAVEWD_INLINE _GL_INLINE diff --git a/lib/se-context.in.h b/lib/se-context.in.h index a692f5a..bd586e8 100644 --- a/lib/se-context.in.h +++ b/lib/se-context.in.h @@ -3,6 +3,9 @@ # include <errno.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef SE_CONTEXT_INLINE # define SE_CONTEXT_INLINE _GL_INLINE diff --git a/lib/se-selinux.in.h b/lib/se-selinux.in.h index 7f54f1e..62a5d86 100644 --- a/lib/se-selinux.in.h +++ b/lib/se-selinux.in.h @@ -31,6 +31,9 @@ # include <sys/types.h> # include <errno.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN # ifndef SE_SELINUX_INLINE # define SE_SELINUX_INLINE _GL_INLINE @@ -108,6 +111,9 @@ matchpathcon_init_prefix (char const *path _GL_UNUSED_PARAMETER, # define GNULIB_defined_security_types 1 # endif +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN # endif diff --git a/lib/sig-handler.h b/lib/sig-handler.h index ca9f979..67d061d 100644 --- a/lib/sig-handler.h +++ b/lib/sig-handler.h @@ -20,6 +20,9 @@ #include <signal.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef SIG_HANDLER_INLINE # define SIG_HANDLER_INLINE _GL_INLINE diff --git a/lib/stat-time.h b/lib/stat-time.h index 2d3b5cd..d58eddd 100644 --- a/lib/stat-time.h +++ b/lib/stat-time.h @@ -23,6 +23,9 @@ #include <sys/stat.h> #include <time.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_STAT_TIME_INLINE # define _GL_STAT_TIME_INLINE _GL_INLINE diff --git a/lib/sys_socket.in.h b/lib/sys_socket.in.h index 932fc22..8f64363 100644 --- a/lib/sys_socket.in.h +++ b/lib/sys_socket.in.h @@ -63,6 +63,9 @@ #ifndef _@GUARD_PREFIX@_SYS_SOCKET_H #define _@GUARD_PREFIX@_SYS_SOCKET_H +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_SYS_SOCKET_INLINE # define _GL_SYS_SOCKET_INLINE _GL_INLINE diff --git a/lib/timespec.h b/lib/timespec.h index d665e6c..5990d07 100644 --- a/lib/timespec.h +++ b/lib/timespec.h @@ -21,6 +21,9 @@ # include <time.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_TIMESPEC_INLINE # define _GL_TIMESPEC_INLINE _GL_INLINE diff --git a/lib/u64.h b/lib/u64.h index d8009ad..af8441f 100644 --- a/lib/u64.h +++ b/lib/u64.h @@ -19,6 +19,9 @@ #include <stdint.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_U64_INLINE # define _GL_U64_INLINE _GL_INLINE diff --git a/lib/unistd.in.h b/lib/unistd.in.h index 31e20bc..2543a40 100644 --- a/lib/unistd.in.h +++ b/lib/unistd.in.h @@ -116,6 +116,9 @@ # include <getopt.h> #endif +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_UNISTD_INLINE # define _GL_UNISTD_INLINE _GL_INLINE diff --git a/lib/utimens.h b/lib/utimens.h index 82a72a7..f1633c9 100644 --- a/lib/utimens.h +++ b/lib/utimens.h @@ -26,6 +26,9 @@ int lutimens (char const *, struct timespec const [2]); # include <fcntl.h> # include <sys/stat.h> +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_UTIMENS_INLINE # define _GL_UTIMENS_INLINE _GL_INLINE diff --git a/lib/wctype.in.h b/lib/wctype.in.h index 933d622..d11b833 100644 --- a/lib/wctype.in.h +++ b/lib/wctype.in.h @@ -61,6 +61,9 @@ #ifndef _@GUARD_PREFIX@_WCTYPE_H #define _@GUARD_PREFIX@_WCTYPE_H +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef _GL_WCTYPE_INLINE # define _GL_WCTYPE_INLINE _GL_INLINE diff --git a/lib/xalloc.h b/lib/xalloc.h index da7c4b6..6c9b53b 100644 --- a/lib/xalloc.h +++ b/lib/xalloc.h @@ -22,6 +22,9 @@ #include "xalloc-oversized.h" +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef XALLOC_INLINE # define XALLOC_INLINE _GL_INLINE diff --git a/lib/xsize.h b/lib/xsize.h index aabc5a5..4111e0c 100644 --- a/lib/xsize.h +++ b/lib/xsize.h @@ -27,6 +27,9 @@ # include <stdint.h> #endif +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef XSIZE_INLINE # define XSIZE_INLINE _GL_INLINE diff --git a/lib/xtime.h b/lib/xtime.h index c38e9dc..4eb55ba 100644 --- a/lib/xtime.h +++ b/lib/xtime.h @@ -20,6 +20,9 @@ #ifndef XTIME_H_ #define XTIME_H_ 1 +#ifndef _GL_INLINE_HEADER_BEGIN + #error "Please include config.h first." +#endif _GL_INLINE_HEADER_BEGIN #ifndef XTIME_INLINE # define XTIME_INLINE _GL_INLINE