summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2023-03-02 13:23:33 +0100
committerCarlos Garnacho <carlosg@gnome.org>2023-03-02 15:44:59 +0100
commit76f7d6da7fd155b5a54482bc459d5d2001aa1ec7 (patch)
treec7ee9d6bba0ccafc491b9cd13a41440d5aa4c771 /src
parente12f03d62079294a4349e33ff9a36fea8a1fea73 (diff)
downloadtracker-76f7d6da7fd155b5a54482bc459d5d2001aa1ec7.tar.gz
libtracker-sparql: Use setlocale() directly to query locale
Long long ago, this was an integration point since the Maemo platform (I thought I'd never write that in 2023) had some infrastructure to allow on-the-fly locale changes. This is long long gone, and nowadays it's just a setlocale() wrapper with a recursive lock that does nothing since all MT-unsafety of this function comes from the global environment. We can just setlocale() directly to query the locale details, with pretty much all the same guarantees.
Diffstat (limited to 'src')
-rw-r--r--src/libtracker-common/tracker-parser-libicu.c6
-rw-r--r--src/libtracker-sparql/core/tracker-db-manager.c11
2 files changed, 7 insertions, 10 deletions
diff --git a/src/libtracker-common/tracker-parser-libicu.c b/src/libtracker-common/tracker-parser-libicu.c
index 06ba77da5..ede943003 100644
--- a/src/libtracker-common/tracker-parser-libicu.c
+++ b/src/libtracker-common/tracker-parser-libicu.c
@@ -32,7 +32,6 @@
#include <unicode/unorm.h>
#include <unicode/ucol.h>
-#include "tracker-locale.h"
#include "tracker-debug.h"
#include "tracker-parser.h"
#include "tracker-parser-utils.h"
@@ -764,10 +763,10 @@ tracker_collation_init (void)
{
UCollator *collator = NULL;
UErrorCode status = U_ZERO_ERROR;
- gchar *locale;
+ const gchar *locale;
/* Get locale! */
- locale = tracker_locale_get (TRACKER_LOCALE_COLLATE);
+ locale = setlocale (LC_COLLATE, NULL);
TRACKER_NOTE (COLLATION, g_message ("[ICU collation] Initializing collator for locale '%s'", locale));
collator = ucol_open (locale, &status);
@@ -782,7 +781,6 @@ tracker_collation_init (void)
u_errorName (status));
}
}
- g_free (locale);
return collator;
}
diff --git a/src/libtracker-sparql/core/tracker-db-manager.c b/src/libtracker-sparql/core/tracker-db-manager.c
index cb4318727..cebf1fe5b 100644
--- a/src/libtracker-sparql/core/tracker-db-manager.c
+++ b/src/libtracker-sparql/core/tracker-db-manager.c
@@ -22,6 +22,7 @@
#include <fcntl.h>
#include <glib/gstdio.h>
+#include <locale.h>
#include <libtracker-common/tracker-common.h>
#include <libtracker-common/tracker-parser.h>
@@ -335,11 +336,11 @@ tracker_db_manager_locale_changed (TrackerDBManager *db_manager,
GError **error)
{
gchar *db_locale;
- gchar *current_locale;
+ const gchar *current_locale;
gboolean changed;
/* Get current collation locale */
- current_locale = tracker_locale_get (TRACKER_LOCALE_COLLATE);
+ current_locale = setlocale (LC_COLLATE, NULL);
/* Get db locale */
db_locale = db_get_locale (db_manager);
@@ -361,7 +362,6 @@ tracker_db_manager_locale_changed (TrackerDBManager *db_manager,
}
g_free (db_locale);
- g_free (current_locale);
return changed;
}
@@ -369,13 +369,12 @@ tracker_db_manager_locale_changed (TrackerDBManager *db_manager,
void
tracker_db_manager_set_current_locale (TrackerDBManager *db_manager)
{
- gchar *current_locale;
+ const gchar *current_locale;
/* Get current collation locale */
- current_locale = tracker_locale_get (TRACKER_LOCALE_COLLATE);
+ current_locale = setlocale (LC_COLLATE, NULL);
g_debug ("Saving DB locale as: '%s'", current_locale);
db_set_locale (db_manager, current_locale);
- g_free (current_locale);
}
static void