summaryrefslogtreecommitdiff
path: root/libc/string/psignal.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/string/psignal.c')
-rw-r--r--libc/string/psignal.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/libc/string/psignal.c b/libc/string/psignal.c
new file mode 100644
index 000000000..b6d6a30c0
--- /dev/null
+++ b/libc/string/psignal.c
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2002 Manuel Novoa III
+ * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#include <features.h>
+#include <stdio.h>
+#include <string.h>
+
+extern char *__strsignal (int __sig) __THROW attribute_hidden;
+
+/* TODO: make this threadsafe with a reentrant version of strsignal? */
+
+void psignal(int signum, register const char *message)
+{
+ /* If the program is calling psignal, it's a safe bet that printf and
+ * friends are used as well. It is also possible that the calling
+ * program could buffer stderr, or reassign it. */
+
+ register const char *sep;
+
+ sep = ": ";
+ if (!(message && *message)) { /* Caller did not supply a prefix message */
+ message = (sep += 2); /* or passed an empty string. */
+ }
+
+ fprintf(stderr, "%s%s%s\n", message, sep, __strsignal(signum));
+}