add LCC - a better C-Compiler for WEGA
This commit is contained in:
parent
8a0bfb58be
commit
f41d64e45f
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
* ssignal, gsignal: software signals
|
||||||
|
*/
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
/* Highest allowable user signal number */
|
||||||
|
#define MAXSIG 16
|
||||||
|
|
||||||
|
/* Lowest allowable signal number (lowest user number is always 1) */
|
||||||
|
#define MINSIG (-4)
|
||||||
|
|
||||||
|
/* Table of signal values */
|
||||||
|
static int (*sigs[MAXSIG-MINSIG+1])();
|
||||||
|
|
||||||
|
int
|
||||||
|
(*ssignal(sig, fn))()
|
||||||
|
int sig;
|
||||||
|
register int (*fn)();
|
||||||
|
{
|
||||||
|
register int (*savefn)();
|
||||||
|
|
||||||
|
if(sig >= MINSIG && sig <= MAXSIG) {
|
||||||
|
savefn = sigs[sig-MINSIG];
|
||||||
|
sigs[sig-MINSIG] = fn;
|
||||||
|
} else
|
||||||
|
savefn = SIG_DFL;
|
||||||
|
|
||||||
|
return(savefn);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
gsignal(sig)
|
||||||
|
register int sig;
|
||||||
|
{
|
||||||
|
register int (*sigfn)();
|
||||||
|
|
||||||
|
if(sig < MINSIG || sig > MAXSIG ||
|
||||||
|
(sigfn = sigs[sig-MINSIG]) == SIG_DFL)
|
||||||
|
return(0);
|
||||||
|
else if(sigfn == SIG_IGN)
|
||||||
|
return(1);
|
||||||
|
else {
|
||||||
|
sigs[sig-MINSIG] = SIG_DFL;
|
||||||
|
return((*sigfn)(sig));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue