summaryrefslogtreecommitdiff
path: root/src/lib/libc/string/__strsignal.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/string/__strsignal.c')
-rw-r--r--src/lib/libc/string/__strsignal.c32
1 files changed, 25 insertions, 7 deletions
diff --git a/src/lib/libc/string/__strsignal.c b/src/lib/libc/string/__strsignal.c
index 1937e2d608..ae0df72cd3 100644
--- a/src/lib/libc/string/__strsignal.c
+++ b/src/lib/libc/string/__strsignal.c
@@ -32,8 +32,7 @@
32 */ 32 */
33 33
34#if defined(LIBC_SCCS) && !defined(lint) 34#if defined(LIBC_SCCS) && !defined(lint)
35/*static char *sccsid = "from: @(#)strerror.c 5.6 (Berkeley) 5/4/91";*/ 35static char *rcsid = "$OpenBSD: __strsignal.c,v 1.5 1996/09/25 13:19:01 deraadt Exp $";
36static char *rcsid = "$Id: __strsignal.c,v 1.1.1.1 1995/10/18 08:42:20 deraadt Exp $";
37#endif /* LIBC_SCCS and not lint */ 36#endif /* LIBC_SCCS and not lint */
38 37
39#ifdef NLS 38#ifdef NLS
@@ -46,15 +45,31 @@ static char *rcsid = "$Id: __strsignal.c,v 1.1.1.1 1995/10/18 08:42:20 deraadt E
46#define sys_siglist _sys_siglist 45#define sys_siglist _sys_siglist
47 46
48#include <stdio.h> 47#include <stdio.h>
48#include <limits.h>
49#include <signal.h> 49#include <signal.h>
50#include <string.h> 50#include <string.h>
51 51
52static char *itoa(num)
53 int num;
54{
55 static char buffer[11];
56 char *p;
57
58 p = buffer + 4;
59 while (num >= 10) {
60 *--p = (num % 10) + '0';
61 num /= 10;
62 }
63 *p = (num % 10) + '0';
64 return p;
65}
66
52char * 67char *
53__strsignal(num, buf) 68__strsignal(num, buf)
54 int num; 69 int num;
55 char *buf; 70 char *buf;
56{ 71{
57#define UPREFIX "Unknown signal: %u" 72#define UPREFIX "Unknown signal: "
58 register unsigned int signum; 73 register unsigned int signum;
59 74
60#ifdef NLS 75#ifdef NLS
@@ -65,17 +80,20 @@ __strsignal(num, buf)
65 signum = num; /* convert to unsigned */ 80 signum = num; /* convert to unsigned */
66 if (signum < NSIG) { 81 if (signum < NSIG) {
67#ifdef NLS 82#ifdef NLS
68 strcpy(buf, catgets(catd, 2, signum, 83 strncpy(buf, catgets(catd, 2, signum,
69 (char *)sys_siglist[signum])); 84 (char *)sys_siglist[signum]), NL_TEXTMAX-1);
85 buf[NL_TEXTMAX-1] = '\0';
70#else 86#else
71 return((char *)sys_siglist[signum]); 87 return((char *)sys_siglist[signum]);
72#endif 88#endif
73 } else { 89 } else {
74#ifdef NLS 90#ifdef NLS
75 sprintf(buf, catgets(catd, 1, 0xffff, UPREFIX), signum); 91 strncpy(buf, catgets(catd, 1, 0xffff, UPREFIX), NL_TEXTMAX-1);
92 buf[NL_TEXTMAX-1] = '\0';
76#else 93#else
77 sprintf(buf, UPREFIX, signum); 94 strcpy(buf, UPREFIX);
78#endif 95#endif
96 strncat(buf, itoa(signum), NL_TEXTMAX-strlen(buf)-1);
79 } 97 }
80 98
81#ifdef NLS 99#ifdef NLS