summaryrefslogtreecommitdiff
path: root/src/lib/libc/string/__strsignal.c
diff options
context:
space:
mode:
authorotto <>2005-05-26 12:56:01 +0000
committerotto <>2005-05-26 12:56:01 +0000
commitce5070801d547add0fa94980900e08880052ce3f (patch)
tree99309aafcf8396b5a58d7c64f7e2a59237b7d057 /src/lib/libc/string/__strsignal.c
parent14e016757417d2457255bba31893dc273c0f3fb3 (diff)
downloadopenbsd-ce5070801d547add0fa94980900e08880052ce3f.tar.gz
openbsd-ce5070801d547add0fa94980900e08880052ce3f.tar.bz2
openbsd-ce5070801d547add0fa94980900e08880052ce3f.zip
Merge common functionality of __strsignal and strerror_r.
ok jaredy@ miod@
Diffstat (limited to 'src/lib/libc/string/__strsignal.c')
-rw-r--r--src/lib/libc/string/__strsignal.c99
1 files changed, 0 insertions, 99 deletions
diff --git a/src/lib/libc/string/__strsignal.c b/src/lib/libc/string/__strsignal.c
deleted file mode 100644
index 09054a9517..0000000000
--- a/src/lib/libc/string/__strsignal.c
+++ /dev/null
@@ -1,99 +0,0 @@
1/*
2 * Copyright (c) 1988 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of the University nor the names of its contributors
14 * may be used to endorse or promote products derived from this software
15 * without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 */
29
30#if defined(LIBC_SCCS) && !defined(lint)
31static char *rcsid = "$OpenBSD: __strsignal.c,v 1.10 2005/05/01 19:39:02 tom Exp $";
32#endif /* LIBC_SCCS and not lint */
33
34#ifdef NLS
35#define catclose _catclose
36#define catgets _catgets
37#define catopen _catopen
38#include <nl_types.h>
39#endif
40
41#define sys_siglist _sys_siglist
42
43#include <stdio.h>
44#include <limits.h>
45#include <signal.h>
46#include <string.h>
47
48static char *
49itoa(char *buffer, size_t buffer_size, unsigned int num)
50{
51 char *p = buffer + buffer_size;
52
53 *--p = '\0';
54 while (num >= 10 && p > buffer + 1) {
55 *--p = (num % 10) + '0';
56 num /= 10;
57 }
58 /* num < 10 || p == buffer + 1 */
59 *--p = (num % 10) + '0';
60 return p;
61}
62
63char *
64__strsignal(int num, char *buf)
65{
66#define UPREFIX "Unknown signal: "
67 unsigned int signum;
68
69#ifdef NLS
70 nl_catd catd ;
71 catd = catopen("libc", 0);
72#endif
73
74 signum = num; /* convert to unsigned */
75 if (signum < NSIG) {
76#ifdef NLS
77 strlcpy(buf, catgets(catd, 2, signum,
78 (char *)sys_siglist[signum]), NL_TEXTMAX);
79#else
80 return((char *)sys_siglist[signum]);
81#endif
82 } else {
83#define MAXINTDIGS 11
84 char str[MAXINTDIGS];
85
86#ifdef NLS
87 strlcpy(buf, catgets(catd, 1, 0xffff, UPREFIX), NL_TEXTMAX);
88#else
89 strlcpy(buf, UPREFIX, NL_TEXTMAX);
90#endif
91 strlcat(buf, itoa(str, sizeof(str), signum), NL_TEXTMAX);
92 }
93
94#ifdef NLS
95 catclose(catd);
96#endif
97
98 return buf;
99}