Write GKeyFile data to a file.
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.info>
Tue, 8 Oct 2013 01:06:43 +0000 (22:06 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.info>
Tue, 8 Oct 2013 01:06:43 +0000 (22:06 -0300)
There is no API for writing a GKeyFile back, so we need a hack like
this.

friend.c

index 07a6556..dc0f25e 100644 (file)
--- a/friend.c
+++ b/friend.c
@@ -129,6 +129,8 @@ int store_cache(struct cache *cache, char *fname)
 {
        GKeyFile *file;
        GList *f;
+       gchar *contents;
+       gssize len;
        file = g_key_file_new();
        g_key_file_load_from_file(file, fname, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, NULL);
        for (f = g_list_first(cache->friends); f != NULL; f = g_list_next(f)) {
@@ -137,6 +139,9 @@ int store_cache(struct cache *cache, char *fname)
                g_key_file_set_value(file, friend->name, "address", friend->address);
                g_key_file_set_value(file, friend->name, "port", friend->port);
        }
+       contents = g_key_file_to_data(file, &len, NULL);
+       g_file_set_contents(fname, contents, len, NULL);
+       g_free(contents);
        g_key_file_free(file);
        return 0;
 }