dc28b49ae2192c4fab10e7875c13fc6c3cfcf264
[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[2];
21     gint i;
22     GError *error = NULL;
23     gchar *data;
24     gsize size;
25
26     if (argc < 3)
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     v[1].group = "PowerKey";
36     v[1].name = "PowerKeyLongAction";
37     v[1].value = argv[2];
38
39     kf = g_key_file_new ();
40     if (!g_key_file_load_from_file (kf, FILENAME,
41                                     G_KEY_FILE_KEEP_COMMENTS |
42                                     G_KEY_FILE_KEEP_TRANSLATIONS,
43                                     &error))
44     {
45         g_warning ("Error while reading %s: %s", FILENAME, error->message);
46         g_error_free (error);
47         exit (EXIT_FAILURE);
48     }
49
50     for (i = 0; i < argc - 1; i++)
51     {
52         g_key_file_set_string (kf, v[i].group, v[i].name, v[i].value);
53     }
54
55     data = g_key_file_to_data (kf, &size, &error);
56     if (data == NULL)
57     {
58         g_warning ("Error while writing keyfile data.");
59         g_error_free (error);
60         exit (EXIT_FAILURE);
61     }
62     
63     if (!g_file_set_contents (FILENAME, data, size, &error))
64     {
65         g_warning ("Error writing %s", FILENAME);
66         g_free (data);
67         g_error_free (error);
68         exit (EXIT_FAILURE);
69     }
70
71     g_free (data);
72     g_key_file_free (kf);
73
74     exit (EXIT_SUCCESS);
75 }
76