From e85ee07172eccafd9441362e774f7b184810d008 Mon Sep 17 00:00:00 2001 From: Robert de Bath Date: Fri, 31 May 1996 21:33:17 +0200 Subject: Import Dev86-0.0.6.tar.gz --- elksemu/elks_signal.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'elksemu/elks_signal.c') 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; } -- cgit v1.2.1