15bd17553Smckusick /* 2*bac379f5Sbostic * Copyright (c) 1985, 1989, 1993 3*bac379f5Sbostic * The Regents of the University of California. All rights reserved. 4d0bb23ddSbostic * 532d8cbb4Sbostic * %sccs.include.redist.c% 65bd17553Smckusick */ 75bd17553Smckusick 81e0c24c3Sdonn #if defined(LIBC_SCCS) && !defined(lint) 9*bac379f5Sbostic static char sccsid[] = "@(#)signal.c 8.1 (Berkeley) 06/04/93"; 10d0bb23ddSbostic #endif /* LIBC_SCCS and not lint */ 112fd000f9Smckusick 122a8753dfSralph /* 132a8753dfSralph * Almost backwards compatible signal. 142a8753dfSralph */ 152fd000f9Smckusick #include <signal.h> 162a8753dfSralph 1746158b3aSkarels sigset_t _sigintr; /* shared with siginterrupt */ 182fd000f9Smckusick 1946158b3aSkarels sig_t signal(s,a)2046158b3aSkarelssignal(s, a) 2146158b3aSkarels int s; 2246158b3aSkarels sig_t a; 2346158b3aSkarels { 2446158b3aSkarels struct sigaction sa, osa; 2546158b3aSkarels 2646158b3aSkarels sa.sa_handler = a; 2746158b3aSkarels sigemptyset(&sa.sa_mask); 2846158b3aSkarels sa.sa_flags = 0; 2946158b3aSkarels if (!sigismember(&_sigintr, s)) 3046158b3aSkarels sa.sa_flags |= SA_RESTART; 3146158b3aSkarels if (sigaction(s, &sa, &osa) < 0) 3277727d6dSbostic return (SIG_ERR); 3346158b3aSkarels return (osa.sa_handler); 342fd000f9Smckusick } 35