X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=modules%2Fmaemo-tweaks-desktop-save.c;h=3b56065db7a3d25ed7822289ed23b6b05c6fc672;hb=37e8ad83f24a142409596c600c825e6b2d7841e6;hp=9323ccf61a8ce8ab7d7b4d35a5395faf4bf01ccc;hpb=5a6ed68fd936eef0471e4b34c68fbce94a73c099;p=tweakr diff --git a/modules/maemo-tweaks-desktop-save.c b/modules/maemo-tweaks-desktop-save.c index 9323ccf..3b56065 100644 --- a/modules/maemo-tweaks-desktop-save.c +++ b/modules/maemo-tweaks-desktop-save.c @@ -2,6 +2,7 @@ * vim:ts=4:sw=4:et:cindent:cino=(0 */ +#include #include static gchar *groups[] = @@ -19,20 +20,48 @@ int main (int argc, char *argv[]) { GKeyFile *kf; gint i; + GError *error = NULL; + gchar *data; + gsize size; if (argc < 2) { - return -1; + exit (EXIT_FAILURE);; } kf = g_key_file_new (); - g_key_file_load_from_file (kf, TRANSITIONS, G_KEY_FILE_NONE, NULL); + if (!g_key_file_load_from_file (kf, TRANSITIONS, + G_KEY_FILE_KEEP_COMMENTS | + G_KEY_FILE_KEEP_TRANSLATIONS, + &error)) + { + g_warning ("Error while reading %s: %s", TRANSITIONS, error->message); + g_error_free (error); + exit (EXIT_FAILURE); + } + + for (i = 0; i < argc - 1; i++) + { + g_key_file_set_string (kf, groups[i], keys[i], argv[i+1]); + } - for (i = 1; i < argc; i++) + data = g_key_file_to_data (kf, &size, &error); + if (data == NULL) { - g_key_file_set_string (kf, groups[i], keys[i], argv[i]); + g_warning ("Error while writing keyfile data."); + g_error_free (error); + exit (EXIT_FAILURE); } + if (!g_file_set_contents (TRANSITIONS, data, size, &error)) + { + g_warning ("Error writing %s", TRANSITIONS); + g_free (data); + g_error_free (error); + exit (EXIT_FAILURE); + } + + g_free (data); g_key_file_free (kf); return 0;