Mercurial > hg > octave-kai > gnulib-hg
changeset 12535:8c827f8e5f04
signal, spawn: use link warnings
These modules depended on link-warning, then didn't use it.
* lib/signal.in.h (sigset_t): Make unconditional.
(sigismember, sigemptyset, sigaddset, sigdelset, sigfillset)
(sigpending, sigprocmask, sigaction): Add link warnings.
* lib/spawn.in.h (posix_spawn, posix_spawnp, posix_spawnattr_init)
(posix_spawnattr_destroy, posix_spawnattr_getsigdefault)
(posix_spawnattr_setsigdefault, posix_spawnattr_getsigmask)
(posix_spawnattr_setsigmask, posix_spawnattr_getflags)
(posix_spawnattr_setflags, posix_spawnattr_getpgroup)
(posix_spawnattr_setpgroup, posix_spawnattr_getschedpolicy)
(posix_spawnattr_setschedpolicy, posix_spawnattr_getschedparam)
(posix_spawnattr_setschedparam, posix_spawn_file_actions_init)
(posix_spawn_file_actions_destroy)
(posix_spawn_file_actions_addopen)
(posix_spawn_file_actions_addclose)
(posix_spawwn_file_actions_adddup2): Likewise.
* m4/signal_h.m4 (gl_SIGNAL_H): Guarantee uid_t.
* tests/test-signal.c (main): Enhance test.
Signed-off-by: Eric Blake <ebb9@byu.net>
author | Eric Blake <ebb9@byu.net> |
---|---|
date | Wed, 30 Dec 2009 14:42:41 -0700 |
parents | df55cbe78453 |
children | cd64e80f94e4 |
files | ChangeLog lib/signal.in.h lib/spawn.in.h m4/signal_h.m4 tests/test-signal.c |
diffstat | 5 files changed, 320 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2009-12-31 Eric Blake <ebb9@byu.net> + + signal, spawn: use link warnings + * lib/signal.in.h (sigset_t): Make unconditional. + (sigismember, sigemptyset, sigaddset, sigdelset, sigfillset) + (sigpending, sigprocmask, sigaction): Add link warnings. + * lib/spawn.in.h (posix_spawn, posix_spawnp, posix_spawnattr_init) + (posix_spawnattr_destroy, posix_spawnattr_getsigdefault) + (posix_spawnattr_setsigdefault, posix_spawnattr_getsigmask) + (posix_spawnattr_setsigmask, posix_spawnattr_getflags) + (posix_spawnattr_setflags, posix_spawnattr_getpgroup) + (posix_spawnattr_setpgroup, posix_spawnattr_getschedpolicy) + (posix_spawnattr_setschedpolicy, posix_spawnattr_getschedparam) + (posix_spawnattr_setschedparam, posix_spawn_file_actions_init) + (posix_spawn_file_actions_destroy) + (posix_spawn_file_actions_addopen) + (posix_spawn_file_actions_addclose) + (posix_spawwn_file_actions_adddup2): Likewise. + * m4/signal_h.m4 (gl_SIGNAL_H): Guarantee uid_t. + * tests/test-signal.c (main): Enhance test. + 2009-12-31 Eric Blake <ebb9@byu.net> spawn: improve wrapper support
--- a/lib/signal.in.h +++ b/lib/signal.in.h @@ -52,6 +52,11 @@ # define sig_atomic_t rpl_sig_atomic_t #endif +/* A set or mask of signals. */ +#if !@HAVE_SIGSET_T@ +typedef unsigned int sigset_t; +#endif + #ifdef __cplusplus extern "C" { #endif @@ -68,21 +73,17 @@ #endif -#if !@HAVE_POSIX_SIGNALBLOCKING@ +#if @GNULIB_SIGPROCMASK@ +# if !@HAVE_POSIX_SIGNALBLOCKING@ /* Maximum signal number + 1. */ -# ifndef NSIG -# define NSIG 32 -# endif +# ifndef NSIG +# define NSIG 32 +# endif /* This code supports only 32 signals. */ typedef int verify_NSIG_constraint[2 * (NSIG <= 32) - 1]; -/* A set or mask of signals. */ -# if !@HAVE_SIGSET_T@ -typedef unsigned int sigset_t; -# endif - /* Test whether a given signal is contained in a signal set. */ extern int sigismember (const sigset_t *set, int sig) _GL_ARG_NONNULL ((1)); @@ -106,31 +107,69 @@ combining it with *SET as indicated in OPERATION. In this implementation, you are not allowed to change a signal handler while the signal is blocked. */ -# define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */ -# define SIG_SETMASK 1 /* blocked_set = *set; */ -# define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */ +# define SIG_BLOCK 0 /* blocked_set = blocked_set | *set; */ +# define SIG_SETMASK 1 /* blocked_set = *set; */ +# define SIG_UNBLOCK 2 /* blocked_set = blocked_set & ~*set; */ extern int sigprocmask (int operation, const sigset_t *set, sigset_t *old_set); -# define signal rpl_signal +# define signal rpl_signal /* Install the handler FUNC for signal SIG, and return the previous handler. */ extern void (*signal (int sig, void (*func) (int))) (int); -# if GNULIB_defined_SIGPIPE +# if GNULIB_defined_SIGPIPE /* Raise signal SIG. */ -# undef raise -# define raise rpl_raise +# undef raise +# define raise rpl_raise extern int raise (int sig); -# endif +# endif -#endif /* !@HAVE_POSIX_SIGNALBLOCKING@ */ +# endif /* !@HAVE_POSIX_SIGNALBLOCKING@ */ +#elif defined GNULIB_POSIXCHECK +# undef sigaddset +# define sigaddset(s,n) \ + (GL_LINK_WARNING ("sigaddset is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigaddset (s, n)) +# undef sigdelset +# define sigdelset(s,n) \ + (GL_LINK_WARNING ("sigdelset is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigdelset (s, n)) +# undef sigemptyset +# define sigemptyset(s) \ + (GL_LINK_WARNING ("sigemptyset is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigemptyset (s)) +# undef sigfillset +# define sigfillset(s) \ + (GL_LINK_WARNING ("sigfillset is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigfillset (s)) +# undef sigismember +# define sigismember(s,n) \ + (GL_LINK_WARNING ("sigismember is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigismember (s, n)) +# undef sigpending +# define sigpending(s) \ + (GL_LINK_WARNING ("sigpending is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigpending (s)) +# undef sigprocmask +# define sigprocmask(h,s,o) \ + (GL_LINK_WARNING ("sigprocmask is unportable - " \ + "use gnulib module sigprocmask for portability"), \ + sigprocmask (h, s, o)) +#endif /* @GNULIB_SIGPROCMASK@ */ -#if !@HAVE_SIGACTION@ +#if @GNULIB_SIGACTION@ +# if !@HAVE_SIGACTION@ -# if !@HAVE_SIGINFO_T@ +# if !@HAVE_SIGINFO_T@ /* Present to allow compilation, but unsupported by gnulib. */ union sigval { @@ -152,7 +191,7 @@ union sigval si_value; }; typedef struct siginfo_t siginfo_t; -# endif /* !@HAVE_SIGINFO_T@ */ +# endif /* !@HAVE_SIGINFO_T@ */ /* We assume that platforms which lack the sigaction() function also lack the 'struct sigaction' type, and vice versa. */ @@ -172,22 +211,28 @@ /* Not all POSIX flags are supported. */ int sa_flags; }; -# define sa_handler _sa_func._sa_handler -# define sa_sigaction _sa_func._sa_sigaction +# define sa_handler _sa_func._sa_handler +# define sa_sigaction _sa_func._sa_sigaction /* Unsupported flags are not present. */ -# define SA_RESETHAND 1 -# define SA_NODEFER 2 -# define SA_RESTART 4 +# define SA_RESETHAND 1 +# define SA_NODEFER 2 +# define SA_RESTART 4 extern int sigaction (int, const struct sigaction *restrict, struct sigaction *restrict); -#elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ +# elif !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ + +# define sa_sigaction sa_handler -# define sa_sigaction sa_handler - -#endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */ - +# endif /* !@HAVE_SIGACTION@, !@HAVE_STRUCT_SIGACTION_SA_SIGACTION@ */ +#elif defined GNULIB_POSIXCHECK +# undef sigaction +# define sigaction(s,a,o) \ + (GL_LINK_WARNING ("sigaction is unportable - " \ + "use gnulib module sigaction for portability"), \ + sigaction (s, a, o)) +#endif /* Some systems don't have SA_NODEFER. */ #ifndef SA_NODEFER
--- a/lib/spawn.in.h +++ b/lib/spawn.in.h @@ -156,6 +156,12 @@ char *const envp[_Restrict_arr_]) _GL_ARG_NONNULL ((2, 5, 6)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn +# define posix_spawn(a,b,c,d,e,f) \ + (GL_LINK_WARNING ("posix_spawn is unportable - " \ + "use gnulib module posix_spawn for portability"), \ + posix_spawn (a, b, c, d, e, f)) #endif #if @GNULIB_POSIX_SPAWNP@ @@ -173,6 +179,12 @@ char *const argv[], char *const envp[]) _GL_ARG_NONNULL ((2, 5, 6)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnp +# define posix_spawnp(a,b,c,d,e,f) \ + (GL_LINK_WARNING ("posix_spawnp is unportable - " \ + "use gnulib module posix_spawnp for portability"), \ + posix_spawnp (a, b, c, d, e, f)) #endif @@ -185,6 +197,12 @@ extern int posix_spawnattr_init (posix_spawnattr_t *__attr) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_init +# define posix_spawnattr_init(a) \ + (GL_LINK_WARNING ("posix_spawnattr_init is unportable - " \ + "use gnulib module posix_spawnattr_init for portability"), \ + posix_spawnattr_init (a)) #endif #if @GNULIB_POSIX_SPAWNATTR_DESTROY@ @@ -196,6 +214,12 @@ extern int posix_spawnattr_destroy (posix_spawnattr_t *__attr) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_destroy +# define posix_spawnattr_destroy(a) \ + (GL_LINK_WARNING ("posix_spawnattr_destroy is unportable - " \ + "use gnulib module posix_spawnattr_destroy for portability"), \ + posix_spawnattr_destroy (a)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT@ @@ -209,6 +233,12 @@ sigset_t *_Restrict_ __sigdefault) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getsigdefault +# define posix_spawnattr_getsigdefault(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getsigdefault is unportable - " \ + "use gnulib module posix_spawnattr_getsigdefault for portability"), \ + posix_spawnattr_getsigdefault (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT@ @@ -221,6 +251,12 @@ const sigset_t *_Restrict_ __sigdefault) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setsigdefault +# define posix_spawnattr_setsigdefault(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setsigdefault is unportable - " \ + "use gnulib module posix_spawnattr_setsigdefault for portability"), \ + posix_spawnattr_setsigdefault (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETSIGMASK@ @@ -233,6 +269,12 @@ sigset_t *_Restrict_ __sigmask) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getsigmask +# define posix_spawnattr_getsigmask(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getsigmask is unportable - " \ + "use gnulib module posix_spawnattr_getsigmask for portability"), \ + posix_spawnattr_getsigmask (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETSIGMASK@ @@ -245,6 +287,12 @@ const sigset_t *_Restrict_ __sigmask) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setsigmask +# define posix_spawnattr_setsigmask(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setsigmask is unportable - " \ + "use gnulib module posix_spawnattr_setsigmask for portability"), \ + posix_spawnattr_setsigmask (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETFLAGS@ @@ -257,6 +305,12 @@ short int *_Restrict_ __flags) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getsigdefault +# define posix_spawnattr_getsigdefault(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getsigdefault is unportable - " \ + "use gnulib module posix_spawnattr_getsigdefault for portability"), \ + posix_spawnattr_getsigdefault (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETFLAGS@ @@ -269,6 +323,12 @@ short int __flags) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getflags +# define posix_spawnattr_getflags(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getflags is unportable - " \ + "use gnulib module posix_spawnattr_getflags for portability"), \ + posix_spawnattr_getflags (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETPGROUP@ @@ -281,6 +341,12 @@ pid_t *_Restrict_ __pgroup) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setflags +# define posix_spawnattr_setflags(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setflags is unportable - " \ + "use gnulib module posix_spawnattr_setflags for portability"), \ + posix_spawnattr_setflags (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETPGROUP@ @@ -305,6 +371,12 @@ int *_Restrict_ __schedpolicy) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getschedpolicy +# define posix_spawnattr_getschedpolicy(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getschedpolicy is unportable - " \ + "use gnulib module posix_spawnattr_getschedpolicy for portability"), \ + posix_spawnattr_getschedpolicy (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY@ @@ -317,6 +389,12 @@ int __schedpolicy) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setschedpolicy +# define posix_spawnattr_setschedpolicy(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setschedpolicy is unportable - " \ + "use gnulib module posix_spawnattr_setschedpolicy for portability"), \ + posix_spawnattr_setschedpolicy (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM@ @@ -329,6 +407,12 @@ struct sched_param *_Restrict_ __schedparam) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_getschedparam +# define posix_spawnattr_getschedparam(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_getschedparam is unportable - " \ + "use gnulib module posix_spawnattr_getschedparam for portability"), \ + posix_spawnattr_getschedparam (a, b)) #endif #if @GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM@ @@ -341,6 +425,12 @@ const struct sched_param *_Restrict_ __schedparam) __THROW _GL_ARG_NONNULL ((1, 2)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawnattr_setschedparam +# define posix_spawnattr_setschedparam(a, b) \ + (GL_LINK_WARNING ("posix_spawnattr_setschedparam is unportable - " \ + "use gnulib module posix_spawnattr_setschedparam for portability"), \ + posix_spawnattr_setschedparam (a, b)) #endif @@ -353,6 +443,12 @@ extern int posix_spawn_file_actions_init (posix_spawn_file_actions_t *__file_actions) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_init +# define posix_spawn_file_actions_init(a) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_init is unportable - " \ + "use gnulib module posix_spawn_file_actions_init for portability"), \ + posix_spawn_file_actions_init (a)) #endif #if @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ @@ -364,6 +460,12 @@ extern int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t *__file_actions) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_destroy +# define posix_spawn_file_actions_destroy(a) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_destroy is unportable - " \ + "use gnulib module posix_spawn_file_actions_destroy for portability"), \ + posix_spawn_file_actions_destroy (a)) #endif #if @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ @@ -379,6 +481,12 @@ int __oflag, mode_t __mode) __THROW _GL_ARG_NONNULL ((1, 3)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_addopen +# define posix_spawn_file_actions_addopen(a, b, c, d, e) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_addopen is unportable - " \ + "use gnulib module posix_spawn_file_actions_addopen for portability"), \ + posix_spawn_file_actions_addopen (a, b, c, d, e)) #endif #if @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ @@ -392,6 +500,12 @@ int __fd) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_addclose +# define posix_spawn_file_actions_addclose(a,b) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_addclose is unportable - " \ + "use gnulib module posix_spawn_file_actions_addclose for portability"), \ + posix_spawn_file_actions_addclose (a, b)) #endif #if @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ @@ -405,6 +519,12 @@ int __fd, int __newfd) __THROW _GL_ARG_NONNULL ((1)); # endif +#elif defined GNULIB_POSIXCHECK +# undef posix_spawn_file_actions_adddup2 +# define posix_spawn_file_actions_adddup2(a,b,c) \ + (GL_LINK_WARNING ("posix_spawn_file_actions_adddup2 is unportable - " \ + "use gnulib module posix_spawn_file_actions_adddup2 for portability"), \ + posix_spawn_file_actions_adddup2 (a, b, c)) #endif
--- a/m4/signal_h.m4 +++ b/m4/signal_h.m4 @@ -1,4 +1,4 @@ -# signal_h.m4 serial 7 +# signal_h.m4 serial 8 dnl Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -14,6 +14,7 @@ [HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=0], [[ #include <signal.h> ]]) + AC_REQUIRE([AC_TYPE_UID_T]) ]) AC_DEFUN([gl_SIGNAL_MODULE_INDICATOR],
--- a/tests/test-signal.c +++ b/tests/test-signal.c @@ -20,10 +20,109 @@ #include <signal.h> -volatile sig_atomic_t s; +/* Check for required types. */ +struct +{ + size_t a; + uid_t b; + volatile sig_atomic_t c; + sigset_t d; + pid_t e; +#if 0 + /* Not guaranteed by gnulib. */ + pthread_t f; + struct timespec g; +#endif +} s; int main (void) { - return s; + switch (0) + { + /* The following are guaranteed by C. */ + case 0: + case SIGABRT: + case SIGFPE: + case SIGILL: + case SIGINT: + case SIGSEGV: + case SIGTERM: + /* The following is guaranteed by gnulib. */ +#if GNULIB_SIGPIPE || defined SIGPIPE + case SIGPIPE: +#endif + /* Ensure no conflict with other standardized names. */ +#ifdef SIGALRM + case SIGALRM: +#endif +#ifdef SIGBUS + case SIGBUS: +#endif +#ifdef SIGCHLD + case SIGCHLD: +#endif +#ifdef SIGCONT + case SIGCONT: +#endif +#ifdef SIGHUP + case SIGHUP: +#endif +#ifdef SIGKILL + case SIGKILL: +#endif +#ifdef SIGQUIT + case SIGQUIT: +#endif +#ifdef SIGSTOP + case SIGSTOP: +#endif +#ifdef SIGTSTP + case SIGTSTP: +#endif +#ifdef SIGTTIN + case SIGTTIN: +#endif +#ifdef SIGTTOU + case SIGTTOU: +#endif +#ifdef SIGUSR1 + case SIGUSR1: +#endif +#ifdef SIGUSR2 + case SIGUSR2: +#endif +#ifdef SIGSYS + case SIGSYS: +#endif +#ifdef SIGTRAP + case SIGTRAP: +#endif +#ifdef SIGURG + case SIGURG: +#endif +#ifdef SIGVTALRM + case SIGVTALRM: +#endif +#ifdef SIGXCPU + case SIGXCPU: +#endif +#ifdef SIGXFSZ + case SIGXFSZ: +#endif +#ifdef SIG + case SIG: +#endif + /* SIGRTMIN and SIGRTMAX need not be compile-time constants. */ +#if 0 +# ifdef SIGRTMIN + case SIGRTMIN: +# endif +# ifdef SIGRTMAX + case SIGRTMAX: +# endif +#endif + ; + } + return s.a + s.b + s.c + s.e; }