about summary refs log tree commit diff
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);
 }