File:  [Research Unix] / researchv9 / libc / sys / signal.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:22:00 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)

#include <signal.h>
#include <errno.h>

extern	int	(*_signal())();
extern	int	_sigtramp();
int		(*_sigfunc[NSIG])();
extern	int	errno;

int (*signal(sig, func))()
	int sig;
	int (*func)();
{
	int (*ofunc)();

	if (sig <= 0 || sig >= NSIG) {
		errno = EINVAL;
		return (BADSIG);
	}
	ofunc = _sigfunc[sig];
	_sigfunc[sig] = func;
	if (func != SIG_DFL && func != SIG_IGN)
		func = _sigtramp;
	if (_signal(sig, func) == BADSIG ) {
		_sigfunc[sig] = ofunc;
		return (BADSIG);
	}
	return(ofunc);
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.