Avoid critical.
[tweakr] / modules / tweakr-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     gchar *lens_cover;
23     GError *error = NULL;
24     gchar *data;
25     gsize size;
26
27     if (argc < (sizeof (v) / sizeof (value_t)) + 1)
28     {
29         exit (EXIT_FAILURE);
30     }
31
32     v[0].group = "PowerKey";
33     v[0].name = "PowerKeyShortAction";
34     v[0].value = argv[1];
35
36     v[1].group = "PowerKey";
37     v[1].name = "PowerKeyLongAction";
38     v[1].value = argv[2];
39
40     v[2].group = "PowerKey";
41     v[2].name = "PowerKeyDoubleAction";
42     v[2].value = argv[3];
43
44     lens_cover = argv[4];
45
46     kf = g_key_file_new ();
47     if (!g_key_file_load_from_file (kf, FILENAME,
48                                     G_KEY_FILE_KEEP_COMMENTS |
49                                     G_KEY_FILE_KEEP_TRANSLATIONS,
50                                     &error))
51     {
52         g_warning ("Error while reading %s: %s", FILENAME, error->message);
53         g_error_free (error);
54         exit (EXIT_FAILURE);
55     }
56
57     for (i = 0; i < sizeof (v) / sizeof (value_t); i++)
58     {
59         g_key_file_set_string (kf, v[i].group, v[i].name, v[i].value);
60     }
61
62     g_key_file_set_string (kf, "TKLock", "LensCoverUnlock", lens_cover);
63
64     data = g_key_file_to_data (kf, &size, &error);
65     if (data == NULL)
66     {
67         g_warning ("Error while writing keyfile data.");
68         g_error_free (error);
69         exit (EXIT_FAILURE);
70     }
71     
72     if (!g_file_set_contents (FILENAME, data, size, &error))
73     {
74         g_warning ("Error writing %s", FILENAME);
75         g_free (data);
76         g_error_free (error);
77         exit (EXIT_FAILURE);
78     }
79
80     g_free (data);
81     g_key_file_free (kf);
82
83     exit (EXIT_SUCCESS);
84 }
85