diff options
author | David Young <dyoung@hdfgroup.org> | 2020-04-21 20:19:19 (GMT) |
---|---|---|
committer | David Young <dyoung@hdfgroup.org> | 2020-04-21 20:19:19 (GMT) |
commit | de18e8c95a3b6c5d7f9fee66d70546fa46046d21 (patch) | |
tree | a969288a6e4ca7e9474f577d7952c852c327694f | |
parent | 95105d3facd8e747401e4642d38c3cd35b708238 (diff) | |
download | hdf5-de18e8c95a3b6c5d7f9fee66d70546fa46046d21.zip hdf5-de18e8c95a3b6c5d7f9fee66d70546fa46046d21.tar.gz hdf5-de18e8c95a3b6c5d7f9fee66d70546fa46046d21.tar.bz2 |
Make await_signal() await any signal instead of just SIGINT. Add a
(commented out) private version of strsignal(3), just in case we need
one on some platform.
-rw-r--r-- | test/vfd_swmr_common.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/test/vfd_swmr_common.c b/test/vfd_swmr_common.c index f851110..7afd984 100644 --- a/test/vfd_swmr_common.c +++ b/test/vfd_swmr_common.c @@ -93,6 +93,23 @@ restore_signals(sigset_t *oldset) err(EXIT_FAILURE, "%s.%d: sigprocmask", __func__, __LINE__); } +#if 0 +static const char * +strsignal(int signum) +{ + switch (signum) { + case SIGUSR1: + return "SIGUSR1"; + case SIGINT: + return "SIGINT"; + case SIGPIPE: + return "SIGPIPE"; + default: + return "<unknown>"; + } +} +#endif + void await_signal(hid_t fid) { @@ -100,8 +117,7 @@ await_signal(hid_t fid) struct timespec tick = {.tv_sec = 0, .tv_nsec = 1000000000 / 100}; if (sigemptyset(&sleepset) == -1 || - sigaddset(&sleepset, SIGINT) == -1 || - sigaddset(&sleepset, SIGUSR1) == -1) { + sigfillset(&sleepset) == -1) { err(EXIT_FAILURE, "%s.%d: could not initialize signal masks", __func__, __LINE__); } @@ -109,8 +125,8 @@ await_signal(hid_t fid) for (;;) { const int rc = sigtimedwait(&sleepset, NULL, &tick); - if (rc == SIGUSR1 || rc == SIGINT) { - printf("Received %s, wrapping things up.\n", (rc == SIGUSR1) ? "SIGUSR1" : "SIGINT"); + if (rc != -1) { + fprintf(stderr, "Received %s, wrapping things up.\n", strsignal(rc)); break; } else if (rc == -1 && errno == EAGAIN) { estack_state_t es; |