blob: c7c1df2efd490706662b3faf9eb0d95f1330427a [file] [log] [blame]
/*
* Copyright (c) 2002, Intel Corporation. All rights reserved.
* Created by: julie.n.fleischer REMOVE-THIS AT intel DOT com
* This file is licensed under the GPL license. For the full content
* of this license, see the COPYING file at the top level of this
* source tree.
Test that sigdelset() will remove signo to the set signal set.
Test steps:
1) Initialize an empty or full signal set.
--> if argv[1] = 0, empty
--> if argv[1] = 1, full
2) Add the SIGALRM signal to the empty signal set.
3) Verify that SIGALRM is a member of the signal set.
4) Remove the SIGALRM signal from the signal set.
5) Verify that SIGALRM is not a member of the signal set.
*/
#include <stdio.h>
#include <signal.h>
#include "posixtest.h"
int main(int argc, char *argv[])
{
sigset_t signalset;
if (argc < 2) {
printf("Usage: %s [0|1]\n", argv[0]);
return PTS_UNRESOLVED;
}
if ('0' == argv[1][0]) {
if (sigemptyset(&signalset) == -1) {
perror("sigemptyset failed -- test aborted");
return PTS_UNRESOLVED;
}
} else if ('1' == argv[1][0]) {
if (sigfillset(&signalset) == -1) {
perror("sigfillset failed -- test aborted");
return PTS_UNRESOLVED;
}
} else {
printf("Usage: %s [0|1]\n", argv[0]);
return PTS_UNRESOLVED;
}
if (sigaddset(&signalset, SIGALRM) == 0) {
if (sigismember(&signalset, SIGALRM) == 0) {
printf("sigaddset returned, sigismember failed\n");
return PTS_UNRESOLVED;
}
} else {
printf("sigaddset did not successfully add signal\n");
return PTS_UNRESOLVED;
}
if (sigdelset(&signalset, SIGALRM) == 0) {
if (sigismember(&signalset, SIGALRM) == 0) {
printf("sigdelset successfully removed signal\n");
return PTS_PASS;
} else {
printf("Signal is still in signal set.\n");
return PTS_FAIL;
}
} else {
printf("sigdelset() failed\n");
return PTS_FAIL;
}
}