blob: cec7bc1a18ec68ced247acfc8280c010ab3324da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
Index: locale.c
===================================================================
--- locale.c.orig
+++ locale.c
@@ -47,6 +47,7 @@ extern int dump_translatable_strings, du
/* The current locale when the program begins */
static char *default_locale;
+static char fallback[128];
/* The current domain for textdomain(3). */
static char *default_domain;
@@ -314,11 +315,21 @@ get_locale_var (var)
if (locale == 0 || *locale == 0)
locale = lang;
if (locale == 0 || *locale == 0)
-#if 0
- locale = default_locale; /* system-dependent; not really portable. should it be "C"? */
-#else
- locale = "";
-#endif
+ {
+ char *ptr;
+ if (default_locale && *default_locale && (ptr = strstr(default_locale, var)) && (ptr = strchr(ptr, '=')) && ++ptr)
+ {
+ memset (fallback, 0, sizeof(fallback));
+ strncpy(fallback, ptr, sizeof(fallback)-1);
+
+ if ((ptr = strchr(fallback, ';')))
+ *ptr = '\0';
+
+ locale = fallback;
+ }
+ else
+ locale = default_locale; /* system-dependent; not really portable. should it be "C"? */
+ }
return (locale);
}
|