You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
965 B
31 lines
965 B
diff -upr man-db-2.6.1.orig/lib/encodings.c man-db-2.6.1/lib/encodings.c |
|
--- man-db-2.6.1.orig/lib/encodings.c 2011-05-31 02:03:02.000000000 +0200 |
|
+++ man-db-2.6.1/lib/encodings.c 2012-06-15 18:32:37.393496286 +0200 |
|
@@ -585,14 +585,23 @@ char *find_charset_locale (const char *c |
|
if (STREQ (charset, get_locale_charset ())) |
|
return NULL; |
|
|
|
- supported = fopen (supported_path, "r"); |
|
- if (!supported) |
|
- return NULL; |
|
- |
|
saved_locale = setlocale (LC_CTYPE, NULL); |
|
if (saved_locale) |
|
saved_locale = xstrdup (saved_locale); |
|
|
|
+ supported = fopen (supported_path, "r"); |
|
+ if (!supported) { |
|
+ if (strlen (charset) >= (size_t) 5 |
|
+ && strncmp (charset, "UTF-8", (size_t) 5) == 0) { |
|
+ locale = xstrdup("en_US.UTF-8"); |
|
+ if (setlocale (LC_CTYPE, locale)) { |
|
+ setlocale (LC_CTYPE, saved_locale); |
|
+ return locale; |
|
+ } |
|
+ } |
|
+ return NULL; |
|
+ } |
|
+ |
|
while (getline (&line, &n, supported) >= 0) { |
|
const char *space = strchr (line, ' '); |
|
if (space) {
|
|
|