diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-05-18 17:05:05 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-07-07 14:57:14 -0300 |
commit | bfe05aa289054744b68f136b701705cfd242c4de (patch) | |
tree | 72dcbbc0e28edb061e7a25d22b27518acb6f3023 /string/test-sig_np.c | |
parent | 4f92497488c90fea1ef6796c6d564ff5f8a3add6 (diff) | |
download | glibc-bfe05aa289054744b68f136b701705cfd242c4de.tar.gz glibc-bfe05aa289054744b68f136b701705cfd242c4de.tar.xz glibc-bfe05aa289054744b68f136b701705cfd242c4de.zip |
string: Add sigabbrev_np and sigdescr_np
The sigabbrev_np returns the abbreviated signal name (e.g. "HUP" for SIGHUP) while sigdescr_np returns the string describing the error number (e.g "Hangup" for SIGHUP). Different than strsignal, sigdescr_np does not attempt to translate the return description and both functions return NULL for an invalid signal number. They should be used instead of sys_siglist or sys_sigabbrev and they are both thread and async-signal safe. They are added as GNU extensions on string.h header (same as strsignal). Checked on x86-64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu, and s390x-linux-gnu. Tested-by: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'string/test-sig_np.c')
-rw-r--r-- | string/test-sig_np.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/string/test-sig_np.c b/string/test-sig_np.c new file mode 100644 index 0000000000..8b5117050c --- /dev/null +++ b/string/test-sig_np.c @@ -0,0 +1,51 @@ +/* Test and sigabbrev_np and sigdescr_np. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <string.h> +#include <signal.h> +#include <array_length.h> + +#include <support/support.h> +#include <support/check.h> + +static const struct test_t +{ + int errno; + const char *abbrev; + const char *descr; +} tests[] = +{ +#define N_(name) name +#define init_sig(sig, abbrev, desc) { sig, abbrev, desc }, +#include <siglist.h> +#undef init_sig +}; + +static int +do_test (void) +{ + for (size_t i = 0; i < array_length (tests); i++) + { + TEST_COMPARE_STRING (sigabbrev_np (tests[i].errno), tests[i].abbrev); + TEST_COMPARE_STRING (sigdescr_np (tests[i].errno), tests[i].descr); + } + + return 0; +} + +#include <support/test-driver.c> |