diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-09-14 14:52:28 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-09-14 14:52:28 +0000 |
commit | 56f42405eb79a21a068414913ea705a5c7ea0d18 (patch) | |
tree | c0d02fabc30d6decf15bc3618b7429368a044cf6 /src/trg-prefs.c | |
parent | 8a020ef0e9acb803d48aca357879166269de6fa1 (diff) |
issue 101
Diffstat (limited to 'src/trg-prefs.c')
-rw-r--r-- | src/trg-prefs.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/trg-prefs.c b/src/trg-prefs.c index 4e7a23e..862b21d 100644 --- a/src/trg-prefs.c +++ b/src/trg-prefs.c @@ -18,7 +18,7 @@ */ #include <glib.h> -#include <stdio.h> +#include <glib/gstdio.h> #include <json-glib/json-glib.h> #include <glib/gi18n.h> #include <glib/gprintf.h> @@ -320,11 +320,15 @@ gboolean trg_prefs_save(TrgPrefs *p) { JsonGenerator *gen = json_generator_new(); gchar *dirName; gboolean success = TRUE; + gboolean isNew = TRUE; dirName = g_path_get_dirname(priv->file); - if (!g_file_test(dirName, G_FILE_TEST_IS_DIR)) + if (!g_file_test(dirName, G_FILE_TEST_IS_DIR)) { success = g_mkdir_with_parents(dirName, TRG_PREFS_DEFAULT_DIR_MODE) == 0; + } else if (g_file_test(priv->file, G_FILE_TEST_IS_REGULAR)) { + isNew = FALSE; + } g_free(dirName); if (!success) { @@ -336,8 +340,11 @@ gboolean trg_prefs_save(TrgPrefs *p) { json_generator_set_root(gen, priv->user); success = json_generator_to_file(gen, priv->file, NULL); - if (!success) + if (!success) { g_error("Problem writing configuration file (permissions?) to: %s", priv->file); + } else if (isNew ) { + g_chmod(priv->file, 384); + } g_object_unref(gen); |