glib r7792 - in branches/glib-2-18/gio: . xdgmime



Author: matthiasc
Date: Fri Jan  9 06:16:20 2009
New Revision: 7792
URL: http://svn.gnome.org/viewvc/glib?rev=7792&view=rev

Log:
       * xdgmime/xdgmimecache.c:
        * xdgmime/xdgmimeglob.c: Don't assume filenames are UTF-8.



Modified:
   branches/glib-2-18/gio/ChangeLog
   branches/glib-2-18/gio/xdgmime/xdgmimecache.c
   branches/glib-2-18/gio/xdgmime/xdgmimeglob.c

Modified: branches/glib-2-18/gio/xdgmime/xdgmimecache.c
==============================================================================
--- branches/glib-2-18/gio/xdgmime/xdgmimecache.c	(original)
+++ branches/glib-2-18/gio/xdgmime/xdgmimecache.c	Fri Jan  9 06:16:20 2009
@@ -31,6 +31,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <ctype.h>
 
 #include <fcntl.h>
 #include <unistd.h>
@@ -439,7 +440,7 @@
 cache_glob_node_lookup_suffix (XdgMimeCache  *cache,
 			       xdg_uint32_t   n_entries,
 			       xdg_uint32_t   offset,
-			       xdg_unichar_t *file_name,
+			       const char    *file_name,
 			       int            len,
 			       int            ignore_case,
 			       MimeWeight     mime_types[],
@@ -456,7 +457,7 @@
 
   character = file_name[len - 1];
   if (ignore_case)
-    character = _xdg_ucs4_to_lower (character);
+    character = tolower (character);
 
   assert (character != 0);
 
@@ -511,11 +512,11 @@
 }
 
 static int
-cache_glob_lookup_suffix (xdg_unichar_t *file_name,
-			  int            len,
-			  int            ignore_case,
-			  MimeWeight     mime_types[],
-			  int            n_mime_types)
+cache_glob_lookup_suffix (const char *file_name,
+			  int         len,
+			  int         ignore_case,
+			  MimeWeight  mime_types[],
+			  int         n_mime_types)
 {
   int i, n;
 
@@ -557,7 +558,6 @@
   MimeWeight mimes[10];
   int n_mimes = 10;
   int i;
-  xdg_unichar_t *ucs4;
   int len;
   
   assert (file_name != NULL && n_mime_types > 0);
@@ -567,12 +567,11 @@
   if (n > 0)
     return n;
 
-  ucs4 = _xdg_convert_to_ucs4 (file_name, &len);
-  n = cache_glob_lookup_suffix (ucs4, len, FALSE, mimes, n_mimes);
+  len = strlen (file_name);
+  n = cache_glob_lookup_suffix (file_name, len, FALSE, mimes, n_mimes);
 
   if (n == 0)
-    n = cache_glob_lookup_suffix (ucs4, len, TRUE, mimes, n_mimes);
-  free(ucs4);
+    n = cache_glob_lookup_suffix (file_name, len, TRUE, mimes, n_mimes);
   
   /* Last, try fnmatch */
   if (n == 0)

Modified: branches/glib-2-18/gio/xdgmime/xdgmimeglob.c
==============================================================================
--- branches/glib-2-18/gio/xdgmime/xdgmimeglob.c	(original)
+++ branches/glib-2-18/gio/xdgmime/xdgmimeglob.c	Fri Jan  9 06:16:20 2009
@@ -36,6 +36,7 @@
 #include <assert.h>
 #include <string.h>
 #include <fnmatch.h>
+#include <ctype.h>
 
 #ifndef	FALSE
 #define	FALSE	(0)
@@ -297,7 +298,7 @@
 
 static int
 _xdg_glob_hash_node_lookup_file_name (XdgGlobHashNode *glob_hash_node,
-				      xdg_unichar_t   *file_name,
+				      const char      *file_name,
 				      int              len,
 				      int              ignore_case,
 				      MimeWeight       mime_types[],
@@ -312,7 +313,7 @@
 
   character = file_name[len - 1];
   if (ignore_case)
-    character = _xdg_ucs4_to_lower(character);
+    character = tolower(character);
 
   for (node = glob_hash_node; node && character >= node->character; node = node->next)
     {
@@ -392,15 +393,13 @@
 	}
     }
 
-  ucs4 = _xdg_convert_to_ucs4 (file_name, &len);
-  n = _xdg_glob_hash_node_lookup_file_name (glob_hash->simple_node, ucs4, len, FALSE,
+  len = strlen (file_name);
+  n = _xdg_glob_hash_node_lookup_file_name (glob_hash->simple_node, file_name, len, FALSE,
 					    mimes, n_mimes);
   if (n == 0)
-    n = _xdg_glob_hash_node_lookup_file_name (glob_hash->simple_node, ucs4, len, TRUE,
+    n = _xdg_glob_hash_node_lookup_file_name (glob_hash->simple_node, file_name, len, TRUE,
 					      mimes, n_mimes);
-  free(ucs4);
 
-  /* FIXME: Not UTF-8 safe */
   if (n == 0)
     {
       for (list = glob_hash->full_list; list && n < n_mime_types; list = list->next)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]