122111Smckusick /* 238790Skarels * Copyright (c) 1985, 1989 Regents of the University of California. 335307Sbostic * All rights reserved. 435307Sbostic * 542626Sbostic * %sccs.include.redist.c% 622111Smckusick */ 718296Smckusick 826592Sdonn #if defined(LIBC_SCCS) && !defined(lint) 9*50967Sbostic static char sccsid[] = "@(#)signal.c 5.6 (Berkeley) 09/03/91"; 1035307Sbostic #endif /* LIBC_SCCS and not lint */ 1122111Smckusick 1216498Sralph /* 1316498Sralph * Almost backwards compatible signal. 1416498Sralph */ 1518296Smckusick #include <signal.h> 1616498Sralph 1738790Skarels sigset_t _sigintr; /* shared with siginterrupt */ 1838790Skarels 1938790Skarels sig_t 2038790Skarels signal(s, a) 2138790Skarels int s; 2238790Skarels sig_t a; 2318296Smckusick { 2438790Skarels struct sigaction sa, osa; 2518296Smckusick 2638790Skarels sa.sa_handler = a; 2738790Skarels sigemptyset(&sa.sa_mask); 2838790Skarels sa.sa_flags = 0; 2938790Skarels if (!sigismember(&_sigintr, s)) 3038790Skarels sa.sa_flags |= SA_RESTART; 3138790Skarels if (sigaction(s, &sa, &osa) < 0) 32*50967Sbostic return (SIG_ERR); 3338790Skarels return (osa.sa_handler); 3418296Smckusick } 35