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