[gtk+/gtk-2-16] Make gtk-update-icon-cache not fall over leftover temp files



commit 2e9385efe2e3f2c5b4711ad51cdfa9f601762a8f
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon May 11 12:02:06 2009 -0400

    Make gtk-update-icon-cache not fall over leftover temp files
    
    When called with the --force option, try to remove the .icon-theme.cache
    file before giving up. This fixes rh#500163.
---
 gtk/updateiconcache.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/gtk/updateiconcache.c b/gtk/updateiconcache.c
index f61291e..f6a5cff 100644
--- a/gtk/updateiconcache.c
+++ b/gtk/updateiconcache.c
@@ -1438,6 +1438,7 @@ build_cache (const gchar *path)
   struct utimbuf utime_buf;
   GList *directories = NULL;
   int fd;
+  int retry_count = 0;
 #ifndef G_OS_WIN32
   mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
 #else
@@ -1450,8 +1451,15 @@ build_cache (const gchar *path)
   tmp_cache_path = g_build_filename (path, "."CACHE_NAME, NULL);
   cache_path = g_build_filename (path, CACHE_NAME, NULL);
 
+opentmp:
   if ((fd = g_open (tmp_cache_path, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC | _O_BINARY, mode)) == -1)
     {
+      if (force_update && retry_count == 0)
+        {
+          retry_count++;
+          g_remove (tmp_cache_path);
+          goto opentmp;
+        }
       g_printerr (_("Failed to open file %s : %s\n"), tmp_cache_path, g_strerror (errno));
       exit (1);
     }
@@ -1497,7 +1505,7 @@ build_cache (const gchar *path)
   if (!validate_file (tmp_cache_path))
     {
       g_printerr (_("The generated cache was invalid.\n"));
-      //g_unlink (tmp_cache_path);
+      /*g_unlink (tmp_cache_path);*/
       exit (1);
     }
 



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