X-Git-Url: http://git.pond.sub.org/?p=empserver;a=blobdiff_plain;f=src%2Flib%2Flwp%2Fsig.c;h=04fb9f97741dba4d645c893673d3a8aa4e029afe;hp=b3f2f53fb62ca575d0a360e690e823e9c1b6a1f5;hb=aae823507c366d5a52ebef5627d667faeb444d89;hpb=d3a64a4f6e8aa1dc1ee027086aa9b280864e80e4 diff --git a/src/lib/lwp/sig.c b/src/lib/lwp/sig.c index b3f2f53fb..04fb9f977 100644 --- a/src/lib/lwp/sig.c +++ b/src/lib/lwp/sig.c @@ -1,6 +1,6 @@ /* * Empire - A multi-player, client/server Internet based war game. - * Copyright (C) 1994-2016, Dave Pare, Jeff Bailey, Thomas Ruschak, + * Copyright (C) 1994-2020, Dave Pare, Jeff Bailey, Thomas Ruschak, * Ken Stevens, Steve McClure, Markus Armbruster * * Empire is free software: you can redistribute it and/or modify @@ -27,7 +27,7 @@ * sig.c: Wait for signals * * Known contributors to this file: - * Markus Armbruster, 2006-2007 + * Markus Armbruster, 2006-2020 */ #include @@ -67,10 +67,9 @@ lwpInitSigWait(sigset_t *set) act.sa_flags = 0; act.sa_mask = *set; - sigemptyset(&act.sa_mask); act.sa_handler = lwpCatchAwaitedSig; for (i = 0; i < NSIG; i++) { - if (sigismember(set, i)) + if (sigismember(set, i) > 0) sigaction(i, &act, NULL); } } @@ -96,7 +95,7 @@ lwpGetSig(sigset_t *set) sigprocmask(SIG_BLOCK, set, &save); for (i = NSIG - 1; i > 0; i--) { - if (sigismember(set, i) && sigismember(&LwpSigCaught, i)) { + if (sigismember(set, i) > 0 && sigismember(&LwpSigCaught, i) > 0) { lwpStatus(LwpCurrent, "Got awaited signal %d", i); sigdelset(&LwpSigCaught, i); break; @@ -117,7 +116,7 @@ lwpSigWait(sigset_t *set, int *sig) { int res; - if (CANT_HAPPEN(LwpSigWaiter)) + if (LwpSigWaiter) return EBUSY; for (;;) { LwpSigCheck = 0;