This is posixsig.c in view mode; [Download] [Up]
static char rcsid[] = "@(#)$Id: posixsig.c,v 5.4 1992/12/07 03:13:08 syd Exp syd $"; /******************************************************************************* * The Elm Mail System - $Revision: 5.4 $ $State: Exp $ * * Copyright (c) 1988-1992 USENET Community Trust * Copyright (c) 1986,1987 Dave Taylor ******************************************************************************* * Bug reports, patches, comments, suggestions should be sent to: * * Syd Weinstein, Elm Coordinator * elm@DSI.COM dsinc!elm * ******************************************************************************* * $Log: posixsig.c,v $ * Revision 5.4 1992/12/07 03:13:08 syd * Add code to work around SunOS and sigalrm not returning EINTR * From: Chip, Tom, Steve, Et. Al. * * Revision 5.3 1992/11/07 19:30:01 syd * Fix redefinition complaint by SCO 3.2v2.0. * From: chip@chinacat.unicom.com (Chip Rosenthal) * * Revision 5.2 1992/10/27 16:08:32 syd * Fix non ansi declaration * From: tom@osf.org * * Revision 5.1 1992/10/27 01:43:56 syd * Initial Checkin * Moved from src/signals.c * * ******************************************************************************/ /** Duplicate the old signal() call with POSIX sigaction **/ #include "headers.h" #ifdef POSIX_SIGNALS /* * This routine used to duplicate the old signal() calls */ SIGHAND_TYPE #if (defined(__STDC__) && !defined(apollo)) (*posix_signal(signo, fun))(int) int signo; SIGHAND_TYPE (*fun)(int); #else (*posix_signal(signo, fun))() int signo; SIGHAND_TYPE (*fun)(); #endif { struct sigaction act; /* new signal action structure */ struct sigaction oact; /* returned signal action structure */ /* Setup a sigaction struct */ act.sa_handler = fun; /* Handler is function passed */ sigemptyset(&(act.sa_mask)); /* No signal to mask while in handler */ act.sa_flags = 0; if (signo == SIGALRM) { #ifdef SA_INTERRUPT act.sa_flags |= SA_INTERRUPT; /* SunOS */ #endif } /* use the sigaction() system call to set new and get old action */ sigemptyset(&oact.sa_mask); if(sigaction(signo, &act, &oact)) /* If sigaction failed return -1 */ return(SIG_ERR); else /* use the previous signal handler as a return value */ return(oact.sa_handler); } #endif /* POSIX_SIGNALS */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.