121 lines
4.2 KiB
C
121 lines
4.2 KiB
C
$NetBSD$
|
|
|
|
Replace usage of uselocale() - not available on NetBSD
|
|
|
|
--- libgnome-desktop/gnome-languages.c.orig 2020-04-29 01:53:29.072934200 +0000
|
|
+++ libgnome-desktop/gnome-languages.c
|
|
@@ -303,16 +303,13 @@ language_name_get_codeset_details (const
|
|
gboolean *is_utf8)
|
|
{
|
|
locale_t locale;
|
|
- locale_t old_locale;
|
|
const char *codeset = NULL;
|
|
|
|
locale = newlocale (LC_CTYPE_MASK, language_name, (locale_t) 0);
|
|
if (locale == (locale_t) 0)
|
|
return;
|
|
|
|
- old_locale = uselocale (locale);
|
|
-
|
|
- codeset = nl_langinfo (CODESET);
|
|
+ codeset = nl_langinfo_l (CODESET, locale);
|
|
|
|
if (pcodeset != NULL) {
|
|
*pcodeset = g_strdup (codeset);
|
|
@@ -324,7 +321,6 @@ language_name_get_codeset_details (const
|
|
*is_utf8 = strcmp (normalized_codeset, "UTF-8") == 0;
|
|
}
|
|
|
|
- uselocale (old_locale);
|
|
freelocale (locale);
|
|
}
|
|
|
|
@@ -703,14 +699,11 @@ get_translated_language (const char *cod
|
|
name = NULL;
|
|
if (language != NULL) {
|
|
const char *translated_name;
|
|
- locale_t loc = 0;
|
|
- locale_t old_locale = 0;
|
|
+ g_autofree char *old_locale = NULL;
|
|
|
|
if (locale != NULL) {
|
|
- loc = newlocale (LC_MESSAGES_MASK, locale, (locale_t) 0);
|
|
- if (loc == (locale_t) 0)
|
|
- return NULL;
|
|
- old_locale = uselocale (loc);
|
|
+ old_locale = g_strdup (setlocale (LC_MESSAGES, NULL));
|
|
+ setlocale (LC_MESSAGES, locale);
|
|
}
|
|
|
|
if (is_fallback_language (code)) {
|
|
@@ -723,8 +716,7 @@ get_translated_language (const char *cod
|
|
}
|
|
|
|
if (locale != NULL) {
|
|
- uselocale (old_locale);
|
|
- freelocale (loc);
|
|
+ setlocale (LC_MESSAGES, locale);
|
|
}
|
|
}
|
|
|
|
@@ -761,15 +753,12 @@ get_translated_territory (const char *co
|
|
name = NULL;
|
|
if (territory != NULL) {
|
|
const char *translated_territory;
|
|
- locale_t loc;
|
|
- locale_t old_locale;
|
|
+ g_autofree char *old_locale = NULL;
|
|
g_autofree char *tmp = NULL;
|
|
|
|
if (locale != NULL) {
|
|
- loc = newlocale (LC_MESSAGES_MASK, locale, (locale_t) 0);
|
|
- if (loc == (locale_t) 0)
|
|
- return NULL;
|
|
- old_locale = uselocale (loc);
|
|
+ old_locale = g_strdup (setlocale (LC_MESSAGES, NULL));
|
|
+ setlocale (LC_MESSAGES, locale);
|
|
}
|
|
|
|
translated_territory = dgettext ("iso_3166", territory);
|
|
@@ -777,8 +766,7 @@ get_translated_territory (const char *co
|
|
name = capitalize_utf8_string (tmp);
|
|
|
|
if (locale != NULL) {
|
|
- uselocale (old_locale);
|
|
- freelocale (loc);
|
|
+ setlocale (LC_MESSAGES, old_locale);
|
|
}
|
|
}
|
|
|
|
@@ -1355,17 +1343,13 @@ gnome_get_translated_modifier (const cha
|
|
{
|
|
char *retval;
|
|
GHashTable *modifiers_map;
|
|
- locale_t loc;
|
|
- locale_t old_locale;
|
|
+ g_autofree char *old_locale = NULL;
|
|
|
|
g_return_val_if_fail (modifier != NULL, NULL);
|
|
|
|
if (translation != NULL) {
|
|
- loc = newlocale (LC_MESSAGES_MASK, translation, (locale_t) 0);
|
|
- if (loc == (locale_t) 0) {
|
|
- return NULL;
|
|
- }
|
|
- old_locale = uselocale (loc);
|
|
+ old_locale = g_strdup (setlocale (LC_MESSAGES, NULL));
|
|
+ setlocale (LC_MESSAGES, translation);
|
|
}
|
|
|
|
/* Modifiers as listed in glibc's SUPPORTED file:
|
|
@@ -1405,8 +1389,7 @@ gnome_get_translated_modifier (const cha
|
|
g_hash_table_destroy (modifiers_map);
|
|
|
|
if (translation != NULL) {
|
|
- uselocale (old_locale);
|
|
- freelocale (loc);
|
|
+ setlocale (LC_MESSAGES, old_locale);
|
|
}
|
|
|
|
return retval;
|