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/sigdescr_np.c | |
parent | 4f92497488c90fea1ef6796c6d564ff5f8a3add6 (diff) | |
download | glibc-bfe05aa289054744b68f136b701705cfd242c4de.zip glibc-bfe05aa289054744b68f136b701705cfd242c4de.tar.gz glibc-bfe05aa289054744b68f136b701705cfd242c4de.tar.bz2 |
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/sigdescr_np.c')
-rw-r--r-- | string/sigdescr_np.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/string/sigdescr_np.c b/string/sigdescr_np.c new file mode 100644 index 0000000..5bcf814 --- /dev/null +++ b/string/sigdescr_np.c @@ -0,0 +1,34 @@ +/* Return string describing signal. + 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> + +const char *const +__sigdescr_np (int signum) +{ + const char *descr = NULL; + + if (signum >= 0 && signum <= NSIG && signum < array_length (__sys_siglist)) + descr = __sys_siglist[signum]; + + return descr; +} +libc_hidden_def (__sigdescr_np) +weak_alias (__sigdescr_np, sigdescr_np) |