summaryrefslogtreecommitdiffstats
path: root/lib/libc/compat-43/sigcompat.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/compat-43/sigcompat.c')
-rw-r--r--lib/libc/compat-43/sigcompat.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/lib/libc/compat-43/sigcompat.c b/lib/libc/compat-43/sigcompat.c
index 56550d2..fa25e50 100644
--- a/lib/libc/compat-43/sigcompat.c
+++ b/lib/libc/compat-43/sigcompat.c
@@ -29,6 +29,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $FreeBSD$
*/
#if defined(LIBC_SCCS) && !defined(lint)
@@ -47,7 +49,8 @@ sigvec(signo, sv, osv)
if (sv)
sv->sv_flags ^= SV_INTERRUPT; /* !SA_INTERRUPT */
- ret = sigaction(signo, (struct sigaction *)sv, (struct sigaction *)osv);
+ ret = osigaction(signo, (struct osigaction *)sv,
+ (struct osigaction *)osv);
if (ret == 0 && osv)
osv->sv_flags ^= SV_INTERRUPT; /* !SA_INTERRUPT */
return (ret);
@@ -57,29 +60,34 @@ int
sigsetmask(mask)
int mask;
{
- int omask, n;
+ sigset_t set, oset;
- n = sigprocmask(SIG_SETMASK, (sigset_t *) &mask, (sigset_t *) &omask);
- if (n)
- return (n);
- return (omask);
+ sigemptyset(&set);
+ set.__bits[0] = mask;
+ (void)sigprocmask(SIG_SETMASK, &set, &oset);
+ return (oset.__bits[0]);
}
int
sigblock(mask)
int mask;
{
- int omask, n;
+ sigset_t set, oset;
+
+ sigemptyset(&set);
+ set.__bits[0] = mask;
- n = sigprocmask(SIG_BLOCK, (sigset_t *) &mask, (sigset_t *) &omask);
- if (n)
- return (n);
- return (omask);
+ (void)sigprocmask(SIG_BLOCK, &set, &oset);
+ return (oset.__bits[0]);
}
int
sigpause(mask)
int mask;
{
- return (sigsuspend((sigset_t *)&mask));
+ sigset_t set;
+
+ sigemptyset(&set);
+ set.__bits[0] = mask;
+ return (sigsuspend(&set));
}
OpenPOWER on IntegriCloud