signal.c revision d054a96e102b53a3aab6602f531a0e8d254080ab
/*
signal handling functions
Copyright (C) Andrew Tridgell 1998
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 <http://www.gnu.org/licenses/>.
*/
/**
* @file
* @brief Signal handling
*/
/**
Block sigs.
**/
{
#ifdef HAVE_SIGPROCMASK
sigemptyset(&set);
#elif defined(HAVE_SIGBLOCK)
if (block) {
} else {
}
#else
/* yikes! This platform can't block signals? */
static int done;
if (!done) {
DEBUG(0,("WARNING: No signal blocking available\n"));
done=1;
}
#endif
}
/**
Catch a signal. This should implement the following semantics:
1) The handler remains installed after being called.
2) The signal should be blocked during handler execution.
**/
{
#ifdef HAVE_SIGACTION
#ifdef SA_RESTART
/*
* We *want* SIGALRM to interrupt a system call.
*/
#endif
return oldact.sa_handler;
#else /* !HAVE_SIGACTION */
/* FIXME: need to handle sigvec and systems with broken signal() */
#endif
}