summaryrefslogtreecommitdiffstats
path: root/sysif.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-06-27 10:55:10 -0700
committerKaz Kylheku <kaz@kylheku.com>2020-06-27 10:55:10 -0700
commit0197d1dc1c43b808bfbe641ef702b10128fbdc9d (patch)
tree596ff259d99d8afca2ae324ba3aff2632fc0c197 /sysif.c
parent432dac666c1b87bfee9a6eeefbb05908d465d420 (diff)
downloadtxr-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.
Diffstat (limited to 'sysif.c')
-rw-r--r--sysif.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/sysif.c b/sysif.c
index e54d6c5f..7d383162 100644
--- a/sysif.c
+++ b/sysif.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));