From: Bruno Haible Date: Thu, 7 Jul 2011 23:51:49 +0000 (+0200) Subject: pthread_sigmask: Fix return value. X-Git-Tag: v0.1~2162 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=34f19098068439da352e5dbac4e431220557f812;p=gnulib.git pthread_sigmask: Fix return value. * lib/signal.in.h (pthread_sigmask): Declare. Don't define as a macro. * lib/pthread_sigmask.c: New file. * modules/pthread_sigmask (Files): Add it. (configure.ac): Invoke AC_LIBOBJ. --- diff --git a/ChangeLog b/ChangeLog index a81276a18..2f03121bb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2011-07-07 Bruno Haible + + pthread_sigmask: Fix return value. + * lib/signal.in.h (pthread_sigmask): Declare. Don't define as a macro. + * lib/pthread_sigmask.c: New file. + * modules/pthread_sigmask (Files): Add it. + (configure.ac): Invoke AC_LIBOBJ. + 2011-07-07 Eric Blake getopt: more portable argv creation diff --git a/lib/pthread_sigmask.c b/lib/pthread_sigmask.c new file mode 100644 index 000000000..1f460f13c --- /dev/null +++ b/lib/pthread_sigmask.c @@ -0,0 +1,29 @@ +/* POSIX compatible signal blocking for threads. + Copyright (C) 2011 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +/* Specification. */ +#include + +#include + +int +pthread_sigmask (int how, const sigset_t *new_mask, sigset_t *old_mask) +{ + int ret = sigprocmask (how, new_mask, old_mask); + return (ret < 0 ? errno : 0); +} diff --git a/lib/signal.in.h b/lib/signal.in.h index 01987a7af..5049b1da0 100644 --- a/lib/signal.in.h +++ b/lib/signal.in.h @@ -104,8 +104,8 @@ typedef void (*sighandler_t) (int); #if @GNULIB_PTHREAD_SIGMASK@ # if @REPLACE_PTHREAD_SIGMASK@ -# undef pthread_sigmask -# define pthread_sigmask sigprocmask +_GL_FUNCDECL_SYS (pthread_sigmask, int, + (int how, const sigset_t *new_mask, sigset_t *old_mask)); # endif #elif defined GNULIB_POSIXCHECK # undef pthread_sigmask diff --git a/modules/pthread_sigmask b/modules/pthread_sigmask index d117b2ddd..59cce9379 100644 --- a/modules/pthread_sigmask +++ b/modules/pthread_sigmask @@ -2,6 +2,7 @@ Description: POSIX compatible signal blocking for threads. Files: +lib/pthread_sigmask.c m4/pthread_sigmask.m4 Depends-on: @@ -10,6 +11,9 @@ sigprocmask [test $REPLACE_PTHREAD_SIGMASK = 1] configure.ac: gl_PTHREAD_SIGMASK +if test $REPLACE_PTHREAD_SIGMASK = 1; then + AC_LIBOBJ([pthread_sigmask]) +fi gl_SIGNAL_MODULE_INDICATOR([pthread_sigmask]) Makefile.am: