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
This commit is contained in:
Ryan Lortie 2012-03-08 11:55:09 -05:00
parent c9f55445aa
commit 3fa7358487

View File

@ -23,6 +23,9 @@
#include "config.h" #include "config.h"
#include "giomodule.h" #include "giomodule.h"
#include <gstdio.h>
#include <errno.h>
static gboolean static gboolean
is_valid_module_name (const gchar *basename) is_valid_module_name (const gchar *basename)
{ {
@ -101,11 +104,20 @@ query_dir (const char *dirname)
cachename = g_build_filename (dirname, "giomodule.cache", NULL); cachename = g_build_filename (dirname, "giomodule.cache", NULL);
error = NULL; if (data->len > 0)
if (!g_file_set_contents (cachename, data->str, data->len, &error))
{ {
g_printerr ("Unable to create %s: %s\n", cachename, error->message); error = NULL;
g_error_free (error);
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); g_string_free (data, TRUE);