[gtk+/gtk-2-24] Make sure icon cache has /-separated subdirs only (v2 - use g_build_path)
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-24] Make sure icon cache has /-separated subdirs only (v2 - use g_build_path)
- Date: Thu, 21 Feb 2013 18:39:07 +0000 (UTC)
commit d9f87ff0980a6b1ef03ef39dcfeeaec927ec1ecc
Author: Руслан Ижбулатов <lrn1986 gmail com>
Date: Thu Feb 21 22:25:21 2013 +0400
Make sure icon cache has /-separated subdirs only (v2 - use g_build_path)
https://bugzilla.gnome.org/show_bug.cgi?id=692955
(cherry picked from commit 8e80fd1ab9eb3c6389b0582eab21b637141e7f92)
Conflicts:
gtk/updateiconcache.c
gtk/updateiconcache.c | 23 +++++++++++++++++++++--
1 files changed, 21 insertions(+), 2 deletions(-)
---
diff --git a/gtk/updateiconcache.c b/gtk/updateiconcache.c
index 9bced42..cc6d5f1 100644
--- a/gtk/updateiconcache.c
+++ b/gtk/updateiconcache.c
@@ -576,6 +576,23 @@ maybe_cache_icon_data (Image *image,
}
}
+/**
+ * Finds all dir separators and replaces them with '/'.
+ * This makes sure that only /-separated paths are written in cache files,
+ * maintaining compatibility with theme index files that use slashes as
+ * directory separators on all platforms.
+ */
+static void
+replace_backslashes_with_slashes (gchar *path)
+{
+ size_t i;
+ if (path == NULL)
+ return;
+ for (i = 0; path[i]; i++)
+ if (G_IS_DIR_SEPARATOR (path[i]))
+ path[i] = '/';
+}
+
static GList *
scan_directory (const gchar *base_path,
const gchar *subdir,
@@ -590,7 +607,7 @@ scan_directory (const gchar *base_path,
gboolean dir_added = FALSE;
guint dir_index = 0xffff;
- dir_path = g_build_filename (base_path, subdir, NULL);
+ dir_path = g_build_path ("/", base_path, subdir, NULL);
/* FIXME: Use the gerror */
dir = g_dir_open (dir_path, 0, NULL);
@@ -609,13 +626,14 @@ scan_directory (const gchar *base_path,
gchar *basename, *dot;
path = g_build_filename (dir_path, name, NULL);
+
retval = g_file_test (path, G_FILE_TEST_IS_DIR);
if (retval)
{
gchar *subsubdir;
if (subdir)
- subsubdir = g_build_filename (subdir, name, NULL);
+ subsubdir = g_build_path ("/", subdir, name, NULL);
else
subsubdir = g_strdup (name);
directories = scan_directory (base_path, subsubdir, files,
@@ -1744,6 +1762,7 @@ main (int argc, char **argv)
return 0;
g_type_init ();
+ replace_backslashes_with_slashes (path);
build_cache (path);
if (strcmp (var_name, "-") != 0)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]