62e76ff944aa6ea4b2ab469ab67a9e77da3a98e9
[tweakr] / modules / maemo-tweaks-mce-save.c
1 /*
2  * vim:ts=4:sw=4:et:cindent:cino=(0
3  */ 
4
5 #include <stdlib.h>
6 #include <glib.h>
7
8 #define FILENAME MCE
9
10 typedef struct _value_t
11 {
12     const gchar *group;
13     const gchar *name;
14     const gchar *value;
15 } value_t;
16
17 int main (int argc, char *argv[])
18 {
19     GKeyFile *kf;
20     value_t v[1];
21     gint i;
22     GError *error = NULL;
23     gchar *data;
24     gsize size;
25
26     if (argc < 2)
27     {
28         exit (EXIT_FAILURE);
29     }
30
31     v[0].group = "PowerKey";
32     v[0].name = "PowerKeyShortAction";
33     v[0].value = argv[1];
34
35     kf = g_key_file_new ();
36     if (!g_key_file_load_from_file (kf, FILENAME,
37                                     G_KEY_FILE_KEEP_COMMENTS |
38                                     G_KEY_FILE_KEEP_TRANSLATIONS,
39                                     &error))
40     {
41         g_warning ("Error while reading %s: %s", FILENAME, error->message);
42         g_error_free (error);
43         exit (EXIT_FAILURE);
44     }
45
46     for (i = 0; i < argc - 1; i++)
47     {
48         g_key_file_set_string (kf, v[i].group, v[i].name, v[i].value);
49     }
50
51     data = g_key_file_to_data (kf, &size, &error);
52     if (data == NULL)
53     {
54         g_warning ("Error while writing keyfile data.");
55         g_error_free (error);
56         exit (EXIT_FAILURE);
57     }
58     
59     if (!g_file_set_contents (FILENAME, data, size, &error))
60     {
61         g_warning ("Error writing %s", FILENAME);
62         g_free (data);
63         g_error_free (error);
64         exit (EXIT_FAILURE);
65     }
66
67     g_free (data);
68     g_key_file_free (kf);
69
70     exit (EXIT_SUCCESS);
71 }
72