[glib] gio-querymodules: unlink instead of writing empty cache



commit 3fa735848782735a7ccff3abba39c53388592588
Author: Ryan Lortie <desrt desrt ca>
Date:   Thu Mar 8 11:55:09 2012 -0500

    gio-querymodules: unlink instead of writing empty cache
    
    If there are no modules installed then the most appropriate thing is to
    have no cachefile instead of an empty one.  This unbreaks the "clean
    directory after 'make uninstall'" check that automake does.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=671664

 gio/gio-querymodules.c |   20 ++++++++++++++++----
 1 files changed, 16 insertions(+), 4 deletions(-)
---
diff --git a/gio/gio-querymodules.c b/gio/gio-querymodules.c
index 716a7b8..0ebc850 100644
--- a/gio/gio-querymodules.c
+++ b/gio/gio-querymodules.c
@@ -23,6 +23,9 @@
 #include "config.h"
 #include "giomodule.h"
 
+#include <gstdio.h>
+#include <errno.h>
+
 static gboolean
 is_valid_module_name (const gchar *basename)
 {
@@ -101,11 +104,20 @@ query_dir (const char *dirname)
 
   cachename = g_build_filename (dirname, "giomodule.cache", NULL);
 
-  error = NULL;
-  if (!g_file_set_contents (cachename, data->str, data->len, &error))
+  if (data->len > 0)
     {
-      g_printerr ("Unable to create %s: %s\n", cachename, error->message);
-      g_error_free (error);
+      error = NULL;
+
+      if (!g_file_set_contents (cachename, data->str, data->len, &error))
+        {
+          g_printerr ("Unable to create %s: %s\n", cachename, error->message);
+          g_error_free (error);
+        }
+    }
+  else
+    {
+      if (g_unlink (cachename) != 0 && errno != ENOENT)
+        g_printerr ("Unable to unlink %s: %s\n", cachename, g_strerror (errno));
     }
 
   g_string_free (data, TRUE);



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