Blame SOURCES/man-db-2.6.1-locale-fallback.patch
|
|
1be407 |
diff -upr man-db-2.6.1.orig/lib/encodings.c man-db-2.6.1/lib/encodings.c
|
|
|
1be407 |
--- man-db-2.6.1.orig/lib/encodings.c 2011-05-31 02:03:02.000000000 +0200
|
|
|
1be407 |
+++ man-db-2.6.1/lib/encodings.c 2012-06-15 18:32:37.393496286 +0200
|
|
|
1be407 |
@@ -585,14 +585,23 @@ char *find_charset_locale (const char *c
|
|
|
1be407 |
if (STREQ (charset, get_locale_charset ()))
|
|
|
1be407 |
return NULL;
|
|
|
1be407 |
|
|
|
1be407 |
- supported = fopen (supported_path, "r");
|
|
|
1be407 |
- if (!supported)
|
|
|
1be407 |
- return NULL;
|
|
|
1be407 |
-
|
|
|
1be407 |
saved_locale = setlocale (LC_CTYPE, NULL);
|
|
|
1be407 |
if (saved_locale)
|
|
|
1be407 |
saved_locale = xstrdup (saved_locale);
|
|
|
1be407 |
|
|
|
1be407 |
+ supported = fopen (supported_path, "r");
|
|
|
1be407 |
+ if (!supported) {
|
|
|
1be407 |
+ if (strlen (charset) >= (size_t) 5
|
|
|
1be407 |
+ && strncmp (charset, "UTF-8", (size_t) 5) == 0) {
|
|
|
1be407 |
+ locale = xstrdup("en_US.UTF-8");
|
|
|
1be407 |
+ if (setlocale (LC_CTYPE, locale)) {
|
|
|
1be407 |
+ setlocale (LC_CTYPE, saved_locale);
|
|
|
1be407 |
+ return locale;
|
|
|
1be407 |
+ }
|
|
|
1be407 |
+ }
|
|
|
1be407 |
+ return NULL;
|
|
|
1be407 |
+ }
|
|
|
1be407 |
+
|
|
|
1be407 |
while (getline (&line, &n, supported) >= 0) {
|
|
|
1be407 |
const char *space = strchr (line, ' ');
|
|
|
1be407 |
if (space) {
|