diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-06-27 10:55:10 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-06-27 10:55:10 -0700 |
commit | 0197d1dc1c43b808bfbe641ef702b10128fbdc9d (patch) | |
tree | 596ff259d99d8afca2ae324ba3aff2632fc0c197 | |
parent | 432dac666c1b87bfee9a6eeefbb05908d465d420 (diff) | |
download | txr-0197d1dc1c43b808bfbe641ef702b10128fbdc9d.tar.gz txr-0197d1dc1c43b808bfbe641ef702b10128fbdc9d.tar.bz2 txr-0197d1dc1c43b808bfbe641ef702b10128fbdc9d.zip |
New function strsignal.
* configure: detect strsignal, producing HAVE_STRSIGNAL symbol
in config.h.
* sysif.c (strsignal_wrap): New function.
(sysif_init): Register strsignal intrinsic.
* txr.1: Documented.
-rwxr-xr-x | configure | 19 | ||||
-rw-r--r-- | sysif.c | 17 | ||||
-rw-r--r-- | txr.1 | 10 |
3 files changed, 46 insertions, 0 deletions
@@ -2397,6 +2397,25 @@ else printf "no\n" fi +printf "Checking for strsignal ... " + +cat > conftest.c <<! +#include <string.h> +#include <signal.h> + +int main(void) +{ + const char *s = strsignal(SIGABRT); + return 0; +} +! +if conftest ; then + printf "yes\n" + printf "#define HAVE_STRSIGNAL 1\n" >> config.h +else + printf "no\n" +fi + printf "Checking for setitimer/getitimer ... " cat > conftest.c <<! @@ -161,6 +161,20 @@ static val strerror_wrap(val errnum) return errno_to_str(eno); } +#if HAVE_STRSIGNAL + +static val strsignal_wrap(val signum) +{ + val self = lit("strsignal"); + int sig = c_int(signum, self); + const char *str = strsignal(sig); + return if3(str, + string_utf8(strsignal(sig)), + format(nil, lit("Unknown signal %s"), signum, nao)); +} + +#endif + #if HAVE_DAEMON static val daemon_wrap(val nochdir, val noclose) { @@ -2350,6 +2364,9 @@ void sysif_init(void) reg_fun(intern(lit("errno"), user_package), func_n1o(errno_wrap, 0)); reg_fun(intern(lit("strerror"), user_package), func_n1o(strerror_wrap, 0)); +#if HAVE_STRSIGNAL + reg_fun(intern(lit("strsignal"), user_package), func_n1(strsignal_wrap)); +#endif reg_fun(intern(lit("exit"), user_package), func_n1o(exit_wrap, 0)); reg_fun(intern(lit("at-exit-call"), user_package), func_n1(at_exit_call)); reg_fun(intern(lit("at-exit-do-not-call"), user_package), func_n1(at_exit_do_not_call)); @@ -60916,6 +60916,16 @@ The return value is if the function succeeds, otherwise .codn nil . +.coNP Function @ strsignal +.synb +.mets (strsignal << signal ) +.syne +.desc +The +.code strsignal +function returns a character string describing the specified signal number. +It is based on the same-named POSIX C library function. + .SS* Unix Processes .coNP Functions @ fork and @ wait |