# HG changeset patch # User Paul Eggert # Date 1353479106 28800 # Node ID 7531a1bd77d7cbd7ae7bdd41091301c7d4d49a2f # Parent 661d79eb6d7713bdf813112524927f2f1a684560 sigaction: better 'inline' * lib/sig-handler.c: New file. * lib/sig-handler.h (SIG_HANDLER_INLINE): New macro. Replace all uses of 'static inline' with it. Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END. * m4/sigaction.m4 (gl_PREREQ_SIG_HANDLER_H): Do not require AC_C_INLINE. * modules/sigaction (Files, lib_SOURCES): Add lib/sig-handler.c. (Depends-on): Add extern-inline. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2012-11-29 Paul Eggert + sigaction: better 'inline' + * lib/sig-handler.c: New file. + * lib/sig-handler.h (SIG_HANDLER_INLINE): + New macro. Replace all uses of 'static inline' with it. + Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END. + * m4/sigaction.m4 (gl_PREREQ_SIG_HANDLER_H): Do not require AC_C_INLINE. + * modules/sigaction (Files, lib_SOURCES): Add lib/sig-handler.c. + (Depends-on): Add extern-inline. + selinux-h: better 'inline' * lib/se-context.c, lib/se-selinux.c: New files. * lib/getfilecon.c (map_to_failure): Omit 'inline' for static function. diff --git a/lib/sig-handler.c b/lib/sig-handler.c new file mode 100644 --- /dev/null +++ b/lib/sig-handler.c @@ -0,0 +1,3 @@ +#include +#define SIG_HANDLER_INLINE _GL_EXTERN_INLINE +#include "sig-handler.h" diff --git a/lib/sig-handler.h b/lib/sig-handler.h --- a/lib/sig-handler.h +++ b/lib/sig-handler.h @@ -20,13 +20,18 @@ #include +_GL_INLINE_HEADER_BEGIN +#ifndef SIG_HANDLER_INLINE +# define SIG_HANDLER_INLINE _GL_INLINE +#endif + /* Convenience type when working with signal handlers. */ typedef void (*sa_handler_t) (int); /* Return the handler of a signal, as a sa_handler_t value regardless of its true type. The resulting function can be compared to special values like SIG_IGN but it is not portable to call it. */ -static inline sa_handler_t +SIG_HANDLER_INLINE sa_handler_t get_handler (struct sigaction const *a) { #ifdef SA_SIGINFO @@ -41,4 +46,6 @@ return a->sa_handler; } +_GL_INLINE_HEADER_END + #endif /* _GL_SIG_HANDLER_H */ diff --git a/m4/sigaction.m4 b/m4/sigaction.m4 --- a/m4/sigaction.m4 +++ b/m4/sigaction.m4 @@ -1,4 +1,4 @@ -# sigaction.m4 serial 6 +# sigaction.m4 serial 7 dnl Copyright (C) 2008-2012 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -37,7 +37,4 @@ ]) # Prerequisites of lib/sig-handler.h. -AC_DEFUN([gl_PREREQ_SIG_HANDLER_H], -[ - AC_REQUIRE([AC_C_INLINE]) -]) +AC_DEFUN([gl_PREREQ_SIG_HANDLER_H], [:]) diff --git a/modules/sigaction b/modules/sigaction --- a/modules/sigaction +++ b/modules/sigaction @@ -4,9 +4,11 @@ Files: lib/sigaction.c lib/sig-handler.h +lib/sig-handler.c m4/sigaction.m4 Depends-on: +extern-inline signal-h sigprocmask [test $HAVE_SIGACTION = 0] @@ -19,6 +21,7 @@ gl_SIGNAL_MODULE_INDICATOR([sigaction]) Makefile.am: +lib_SOURCES += sig-handler.c Include: