diff options
author | jylefort <jylefort@FreeBSD.org> | 2005-11-20 03:53:14 +0800 |
---|---|---|
committer | jylefort <jylefort@FreeBSD.org> | 2005-11-20 03:53:14 +0800 |
commit | 74a10c9cb51b2e571541621392ede6484e4bbb01 (patch) | |
tree | cc1ba24ed74e0d276e7ffbe4fc492933737cfabf | |
parent | 7b8cb1b82263fa9ae6f622e4da38e872048dd49f (diff) | |
download | freebsd-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/Makefile | 2 | ||||
-rw-r--r-- | x11-toolkits/gtk20/files/patch-gtk_gtkiconcache.c | 49 | ||||
-rw-r--r-- | x11-toolkits/gtk30/Makefile | 2 | ||||
-rw-r--r-- | x11-toolkits/gtk30/files/patch-gtk_gtkiconcache.c | 49 |
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")); |