diff options
author | Robert de Bath <rdebath@poboxes.com> | 1996-05-31 21:33:17 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2013-10-23 23:30:46 +0200 |
commit | e85ee07172eccafd9441362e774f7b184810d008 (patch) | |
tree | 5dc12259ab7a61b12d9df284fe58ad5cb312c526 /elksemu/elks_signal.c | |
parent | dcc973ea3e31710429858c99d4f040334ac67c06 (diff) | |
download | dev86-e85ee07172eccafd9441362e774f7b184810d008.tar.gz |
Import Dev86-0.0.6.tar.gzv0.0.6
Diffstat (limited to 'elksemu/elks_signal.c')
-rw-r--r-- | elksemu/elks_signal.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/elksemu/elks_signal.c b/elksemu/elks_signal.c index 2bf1e55..4b8e0c5 100644 --- a/elksemu/elks_signal.c +++ b/elksemu/elks_signal.c @@ -22,15 +22,17 @@ void sig_trap(int signo) int elks_signal(int bx,int cx,int dx,int di,int si) { - int rv; + void (*oldsig)(int) = 0; if( bx < 0 || bx >= NSIG ) { errno = EINVAL; return -1; } - if( cx == 0 ) rv = (signal(bx, SIG_DFL) == SIG_ERR); - else if( cx == 1 ) rv = (signal(bx, SIG_IGN) == SIG_ERR); + if( cx == 0 ) oldsig = signal(bx, SIG_DFL); + else if( cx == 1 ) oldsig = signal(bx, SIG_IGN); else { elks_sigtrap = cx; - rv = (signal(bx, sig_trap) == SIG_ERR); + oldsig = signal(bx, sig_trap); } - - return -rv; + if( oldsig == SIG_ERR) return -1; + if( oldsig == SIG_DFL) return 0; + if( oldsig == SIG_IGN) return 1; + return 2; } |