sigsetops.c revision 51794
11573Srgrimes/*- 21573Srgrimes * Copyright (c) 1989, 1993 31573Srgrimes * The Regents of the University of California. All rights reserved. 41573Srgrimes * 51573Srgrimes * Redistribution and use in source and binary forms, with or without 61573Srgrimes * modification, are permitted provided that the following conditions 71573Srgrimes * are met: 81573Srgrimes * 1. Redistributions of source code must retain the above copyright 91573Srgrimes * notice, this list of conditions and the following disclaimer. 101573Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 111573Srgrimes * notice, this list of conditions and the following disclaimer in the 121573Srgrimes * documentation and/or other materials provided with the distribution. 131573Srgrimes * 3. All advertising materials mentioning features or use of this software 141573Srgrimes * must display the following acknowledgement: 151573Srgrimes * This product includes software developed by the University of 161573Srgrimes * California, Berkeley and its contributors. 171573Srgrimes * 4. Neither the name of the University nor the names of its contributors 181573Srgrimes * may be used to endorse or promote products derived from this software 191573Srgrimes * without specific prior written permission. 201573Srgrimes * 211573Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 221573Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 231573Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 241573Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 251573Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 261573Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 271573Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 281573Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 291573Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 301573Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 311573Srgrimes * SUCH DAMAGE. 321573Srgrimes * 331573Srgrimes * @(#)sigsetops.c 8.1 (Berkeley) 6/4/93 3451794Smarcel * 3551794Smarcel * $FreeBSD: head/lib/libc/gen/sigsetops.c 51794 1999-09-29 15:18:46Z marcel $ 361573Srgrimes */ 371573Srgrimes 381573Srgrimes#if defined(LIBC_SCCS) && !defined(lint) 391573Srgrimesstatic char sccsid[] = "@(#)sigsetops.c 8.1 (Berkeley) 6/4/93"; 401573Srgrimes#endif /* LIBC_SCCS and not lint */ 411573Srgrimes 421573Srgrimes#include <signal.h> 431573Srgrimes 441573Srgrimes#undef sigemptyset 451573Srgrimes#undef sigfillset 461573Srgrimes#undef sigaddset 471573Srgrimes#undef sigdelset 481573Srgrimes#undef sigismember 491573Srgrimes 5017141Sjkhint 511573Srgrimessigemptyset(set) 521573Srgrimes sigset_t *set; 531573Srgrimes{ 5451794Smarcel int i; 5551794Smarcel 5651794Smarcel for (i = 0; i < _SIG_WORDS; i++) 5751794Smarcel set->__bits[i] = 0; 581573Srgrimes return (0); 591573Srgrimes} 601573Srgrimes 6117141Sjkhint 621573Srgrimessigfillset(set) 631573Srgrimes sigset_t *set; 641573Srgrimes{ 6551794Smarcel int i; 6651794Smarcel 6751794Smarcel for (i = 0; i < _SIG_WORDS; i++) 6851794Smarcel set->__bits[i] = ~(unsigned int)0; 691573Srgrimes return (0); 701573Srgrimes} 711573Srgrimes 7217141Sjkhint 731573Srgrimessigaddset(set, signo) 741573Srgrimes sigset_t *set; 751573Srgrimes int signo; 761573Srgrimes{ 7751794Smarcel 7851794Smarcel if (signo <= 0 || signo > _SIG_MAXSIG) { 7951794Smarcel /* errno = EINVAL; */ 8051794Smarcel return (-1); 8151794Smarcel } 8251794Smarcel set->__bits[_SIG_WORD(signo)] |= _SIG_BIT(signo); 831573Srgrimes return (0); 841573Srgrimes} 851573Srgrimes 8617141Sjkhint 871573Srgrimessigdelset(set, signo) 881573Srgrimes sigset_t *set; 891573Srgrimes int signo; 901573Srgrimes{ 9151794Smarcel 9251794Smarcel if (signo <= 0 || signo > _SIG_MAXSIG) { 9351794Smarcel /* errno = EINVAL; */ 9451794Smarcel return (-1); 9551794Smarcel } 9651794Smarcel set->__bits[_SIG_WORD(signo)] &= ~_SIG_BIT(signo); 971573Srgrimes return (0); 981573Srgrimes} 991573Srgrimes 10017141Sjkhint 1011573Srgrimessigismember(set, signo) 1021573Srgrimes const sigset_t *set; 1031573Srgrimes int signo; 1041573Srgrimes{ 10551794Smarcel 10651794Smarcel if (signo <= 0 || signo > _SIG_MAXSIG) { 10751794Smarcel /* errno = EINVAL; */ 10851794Smarcel return (-1); 10951794Smarcel } 11051794Smarcel return ((set->__bits[_SIG_WORD(signo)] & _SIG_BIT(signo)) ? 1 : 0); 1111573Srgrimes} 112