use the filesystem's locale for opening a .desktop file
authorDana Jansens <danakj@orodu.net>
Thu, 27 Jan 2011 22:27:22 +0000 (17:27 -0500)
committerDana Jansens <danakj@orodu.net>
Sun, 16 Oct 2011 22:54:04 +0000 (18:54 -0400)
obt/ddparse.c

index fc988499f706970a4ef024792f4d669118413bc2..31c7c6c6640e839fb60902c66f431ba3dd7154b9 100644 (file)
@@ -854,6 +854,7 @@ GHashTable* obt_ddparse_file(const gchar *filename,
     ObtDDParseGroup *desktop_entry;
     FILE *f;
     gboolean success;
+    gchar *fs_filename;
 
     if (!g_utf8_validate(filename, -1, NULL)) {
         g_warning("Filename contains bad utf8: %s", filename);
@@ -877,7 +878,8 @@ GHashTable* obt_ddparse_file(const gchar *filename,
     g_hash_table_insert(parse.group_hash, desktop_entry->name, desktop_entry);
 
     success = FALSE;
-    if ((f = fopen(parse.filename, "r"))) {
+    fs_filename = g_filename_from_utf8(filename, -1, NULL, NULL, NULL);
+    if ((f = fopen(fs_filename, "r"))) {
         parse.lineno = 1;
         parse.flags = 0;
         if ((success = parse_file(f, &parse))) {
@@ -906,6 +908,7 @@ GHashTable* obt_ddparse_file(const gchar *filename,
         }
         fclose(f);
     }
+    g_free(fs_filename);
     if (!success) {
         g_hash_table_destroy(parse.group_hash);
         parse.group_hash = NULL;