aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjylefort <jylefort@FreeBSD.org>2005-11-20 03:53:14 +0800
committerjylefort <jylefort@FreeBSD.org>2005-11-20 03:53:14 +0800
commit74a10c9cb51b2e571541621392ede6484e4bbb01 (patch)
treecc1ba24ed74e0d276e7ffbe4fc492933737cfabf
parent7b8cb1b82263fa9ae6f622e4da38e872048dd49f (diff)
downloadfreebsd-ports-gnome-74a10c9cb51b2e571541621392ede6484e4bbb01.tar.gz
freebsd-ports-gnome-74a10c9cb51b2e571541621392ede6484e4bbb01.tar.zst
freebsd-ports-gnome-74a10c9cb51b2e571541621392ede6484e4bbb01.zip
Reliably detect if icon-theme.cache is uptodate, by checking the mtime
of all the files in a theme directory.
-rw-r--r--x11-toolkits/gtk20/Makefile2
-rw-r--r--x11-toolkits/gtk20/files/patch-gtk_gtkiconcache.c49
-rw-r--r--x11-toolkits/gtk30/Makefile2
-rw-r--r--x11-toolkits/gtk30/files/patch-gtk_gtkiconcache.c49
4 files changed, 100 insertions, 2 deletions
diff --git a/x11-toolkits/gtk20/Makefile b/x11-toolkits/gtk20/Makefile
index ff7f9bdc0769..2f5719b47791 100644
--- a/x11-toolkits/gtk20/Makefile
+++ b/x11-toolkits/gtk20/Makefile
@@ -8,7 +8,7 @@
PORTNAME= gtk
PORTVERSION= 2.8.7
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= x11-toolkits
MASTER_SITES= ${MASTER_SITE_GNOME:S,%SUBDIR%,sources/gtk+/2.8,} \
ftp://ftp.gtk.org/pub/gtk/v2.8/ \
diff --git a/x11-toolkits/gtk20/files/patch-gtk_gtkiconcache.c b/x11-toolkits/gtk20/files/patch-gtk_gtkiconcache.c
new file mode 100644
index 000000000000..f875c2e799b5
--- /dev/null
+++ b/x11-toolkits/gtk20/files/patch-gtk_gtkiconcache.c
@@ -0,0 +1,49 @@
+--- gtk/gtkiconcache.c.orig Mon Aug 29 07:05:13 2005
++++ gtk/gtkiconcache.c Sat Nov 19 19:14:10 2005
+@@ -75,6 +75,37 @@
+ }
+ }
+
++static gboolean
++is_uptodate (const char *dirname, time_t cache_mtime)
++{
++ GDir *dir;
++ const char *filename;
++ gboolean uptodate = TRUE;
++
++ dir = g_dir_open (dirname, 0, NULL);
++ if (! dir)
++ return TRUE;
++
++ while (uptodate && (filename = g_dir_read_name (dir)))
++ if (filename[0] != '.')
++ {
++ char *pathname;
++ struct stat st;
++
++ pathname = g_build_filename (dirname, filename, NULL);
++ if (g_stat (pathname, &st) >= 0
++ && (cache_mtime < st.st_mtime
++ || (S_ISDIR (st.st_mode)
++ && ! is_uptodate (pathname, cache_mtime))))
++ uptodate = FALSE;
++ g_free(pathname);
++ }
++
++ g_dir_close(dir);
++
++ return uptodate;
++}
++
+ GtkIconCache *
+ _gtk_icon_cache_new_for_path (const gchar *path)
+ {
+@@ -106,7 +137,7 @@
+ goto done;
+
+ /* Verify cache is uptodate */
+- if (st.st_mtime < path_st.st_mtime)
++ if (st.st_mtime < path_st.st_mtime || ! is_uptodate(path, st.st_mtime))
+ {
+ GTK_NOTE (ICONTHEME,
+ g_print ("cache outdated\n"));
diff --git a/x11-toolkits/gtk30/Makefile b/x11-toolkits/gtk30/Makefile
index ff7f9bdc0769..2f5719b47791 100644
--- a/x11-toolkits/gtk30/Makefile
+++ b/x11-toolkits/gtk30/Makefile
@@ -8,7 +8,7 @@
PORTNAME= gtk
PORTVERSION= 2.8.7
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= x11-toolkits
MASTER_SITES= ${MASTER_SITE_GNOME:S,%SUBDIR%,sources/gtk+/2.8,} \
ftp://ftp.gtk.org/pub/gtk/v2.8/ \
diff --git a/x11-toolkits/gtk30/files/patch-gtk_gtkiconcache.c b/x11-toolkits/gtk30/files/patch-gtk_gtkiconcache.c
new file mode 100644
index 000000000000..f875c2e799b5
--- /dev/null
+++ b/x11-toolkits/gtk30/files/patch-gtk_gtkiconcache.c
@@ -0,0 +1,49 @@
+--- gtk/gtkiconcache.c.orig Mon Aug 29 07:05:13 2005
++++ gtk/gtkiconcache.c Sat Nov 19 19:14:10 2005
+@@ -75,6 +75,37 @@
+ }
+ }
+
++static gboolean
++is_uptodate (const char *dirname, time_t cache_mtime)
++{
++ GDir *dir;
++ const char *filename;
++ gboolean uptodate = TRUE;
++
++ dir = g_dir_open (dirname, 0, NULL);
++ if (! dir)
++ return TRUE;
++
++ while (uptodate && (filename = g_dir_read_name (dir)))
++ if (filename[0] != '.')
++ {
++ char *pathname;
++ struct stat st;
++
++ pathname = g_build_filename (dirname, filename, NULL);
++ if (g_stat (pathname, &st) >= 0
++ && (cache_mtime < st.st_mtime
++ || (S_ISDIR (st.st_mode)
++ && ! is_uptodate (pathname, cache_mtime))))
++ uptodate = FALSE;
++ g_free(pathname);
++ }
++
++ g_dir_close(dir);
++
++ return uptodate;
++}
++
+ GtkIconCache *
+ _gtk_icon_cache_new_for_path (const gchar *path)
+ {
+@@ -106,7 +137,7 @@
+ goto done;
+
+ /* Verify cache is uptodate */
+- if (st.st_mtime < path_st.st_mtime)
++ if (st.st_mtime < path_st.st_mtime || ! is_uptodate(path, st.st_mtime))
+ {
+ GTK_NOTE (ICONTHEME,
+ g_print ("cache outdated\n"));