summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/errno/strerror.c13
-rw-r--r--src/locale/langinfo.c1
-rw-r--r--src/locale/strerror_l.c7
-rw-r--r--src/network/gai_strerror.c4
-rw-r--r--src/network/hstrerror.c4
-rw-r--r--src/regex/regerror.c2
-rw-r--r--src/string/strsignal.c5
7 files changed, 23 insertions, 13 deletions
diff --git a/src/errno/strerror.c b/src/errno/strerror.c
index b5559cbe..24c94d37 100644
--- a/src/errno/strerror.c
+++ b/src/errno/strerror.c
@@ -1,5 +1,7 @@
#include <errno.h>
#include <string.h>
+#include "locale_impl.h"
+#include "libc.h"
#define E(a,b) ((unsigned char)a),
static const unsigned char errid[] = {
@@ -12,7 +14,7 @@ static const char errmsg[] =
#include "__strerror.h"
;
-char *strerror(int e)
+char *__strerror_l(int e, locale_t loc)
{
const char *s;
int i;
@@ -24,5 +26,12 @@ char *strerror(int e)
}
for (i=0; errid[i] && errid[i] != e; i++);
for (s=errmsg; i; s++, i--) for (; *s; s++);
- return (char *)s;
+ return (char *)LCTRANS(s, LC_MESSAGES, loc);
+}
+
+char *strerror(int e)
+{
+ return __strerror_l(e, CURRENT_LOCALE);
}
+
+weak_alias(__strerror_l, strerror_l);
diff --git a/src/locale/langinfo.c b/src/locale/langinfo.c
index aa0e8de6..a1ada246 100644
--- a/src/locale/langinfo.c
+++ b/src/locale/langinfo.c
@@ -57,6 +57,7 @@ char *__nl_langinfo_l(nl_item item, locale_t loc)
}
for (; idx; idx--, str++) for (; *str; str++);
+ if (cat != LC_NUMERIC && *str) str = LCTRANS(str, cat, loc);
return (char *)str;
}
diff --git a/src/locale/strerror_l.c b/src/locale/strerror_l.c
deleted file mode 100644
index 765f5c69..00000000
--- a/src/locale/strerror_l.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <string.h>
-#include <locale.h>
-
-char *strerror_l(int err, locale_t l)
-{
- return strerror(err);
-}
diff --git a/src/network/gai_strerror.c b/src/network/gai_strerror.c
index 0bf3e379..9596580e 100644
--- a/src/network/gai_strerror.c
+++ b/src/network/gai_strerror.c
@@ -1,4 +1,5 @@
#include <netdb.h>
+#include "locale_impl.h"
static const char msgs[] =
"Invalid flags\0"
@@ -19,5 +20,6 @@ const char *gai_strerror(int ecode)
{
const char *s;
for (s=msgs, ecode++; ecode && *s; ecode++, s++) for (; *s; s++);
- return *s ? s : s+1;
+ if (!*s) s++;
+ return LCTRANS_CUR(s);
}
diff --git a/src/network/hstrerror.c b/src/network/hstrerror.c
index b7a6ab6c..a4d001c5 100644
--- a/src/network/hstrerror.c
+++ b/src/network/hstrerror.c
@@ -1,5 +1,6 @@
#define _GNU_SOURCE
#include <netdb.h>
+#include "locale_impl.h"
static const char msgs[] =
"Host not found\0"
@@ -12,5 +13,6 @@ const char *hstrerror(int ecode)
{
const char *s;
for (s=msgs, ecode--; ecode && *s; ecode--, s++) for (; *s; s++);
- return *s ? s : s+1;
+ if (!*s) s++;
+ return LCTRANS_CUR(s);
}
diff --git a/src/regex/regerror.c b/src/regex/regerror.c
index df4afa4f..5b347cc7 100644
--- a/src/regex/regerror.c
+++ b/src/regex/regerror.c
@@ -1,6 +1,7 @@
#include <string.h>
#include <regex.h>
#include <stdio.h>
+#include "locale_impl.h"
/* Error message strings for error codes listed in `regex.h'. This list
needs to be in sync with the codes listed there, naturally. */
@@ -31,5 +32,6 @@ size_t regerror(int e, const regex_t *restrict preg, char *restrict buf, size_t
const char *s;
for (s=messages; e && *s; e--, s+=strlen(s)+1);
if (!*s) s++;
+ s = LCTRANS_CUR(s);
return 1+snprintf(buf, size, "%s", s);
}
diff --git a/src/string/strsignal.c b/src/string/strsignal.c
index 905c0956..96bfe841 100644
--- a/src/string/strsignal.c
+++ b/src/string/strsignal.c
@@ -1,5 +1,6 @@
#include <signal.h>
#include <string.h>
+#include "locale_impl.h"
#if (SIGHUP == 1) && (SIGINT == 2) && (SIGQUIT == 3) && (SIGILL == 4) \
&& (SIGTRAP == 5) && (SIGABRT == 6) && (SIGBUS == 7) && (SIGFPE == 8) \
@@ -104,12 +105,12 @@ static const char strings[] =
char *strsignal(int signum)
{
- char *s = (char *)strings;
+ const char *s = strings;
signum = sigmap(signum);
if (signum - 1U >= _NSIG-1) signum = 0;
for (; signum--; s++) for (; *s; s++);
- return s;
+ return (char *)LCTRANS_CUR(s);
}