aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.h
blob: 1869cdac140118db187a386af6dc240a92bc0b2d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <gio/gio.h>
#include "xml_defs.h"

//expects valid input, always free() output 
const gchar **get_prefixs(gchar *path, gchar *dname) {
    gsize size = sizeof(path) + sizeof(dname) + 11; //11 extra bytes for file suffix
    const gchar **ret = (gchar**) g_malloc0(2 * size);

    g_snprintf(ret[0], size, "%s%s-ispect.xml", path, dname);
    g_snprintf(ret[1], size, "%s%s-config.xml", path, dname);

    return ret;
}

const GString *strjoin(gchar *sep, GString strings[]) {
    GString *cur;
    GString *out;
    gint n;

    while((cur = &strings[n]) != NULL) {
        g_string_append(out, cur);
        n++;
    }

    return out;
}

gboolean install_conf() {
    gchar *our_conf_uri   = "systemd-utl/xml-conf/";
    gchar **data_dir = g_get_system_data_dirs();

    if(g_strcmp0(data_dir[0], NULL)) {
        const gchar our_conf_path[256];
        g_snprintf(our_conf_path, sizeof our_conf_path, "%s%s", *data_dir, our_conf_uri);
        GError **errors;

        /*TODO permissions w/ this */
        g_mkdir_with_parents(our_conf_path, 0644);

        const gchar   **hostnamed_prefixs   = get_prefixs(our_conf_path, "hostnamed");
        const GString *hostnamed_ispect_xml = strjoin("\n", hostnamed_ispect_xml_def);
        const GString *hostnamed_config_xml = strjoin("\n", hostnamed_config_xml_def);

        const gchar   **timedated_prefixs   = get_prefixs(our_conf_path, "timedated");
        const GString *timedated_ispect_xml = strjoin("\n", timedated_ispect_xml_def);
        const GString *timedated_config_xml = strjoin("\n", timedated_config_xml_def);

        const gchar   **localed_prefixs   = get_prefixs(our_conf_path, "localed");
        const GString *localed_ispect_xml = strjoin("\n", localed_ispect_xml_def);
        const GString *localed_config_xml = strjoin("\n", localed_config_xml_def);

        const gchar   **logind_prefixs   = get_prefixs(our_conf_path, "logind");
        const GString *logind_ispect_xml = strjoin("\n", logind_ispect_xml_def);
        const GString *logind_config_xml = strjoin("\n", logind_config_xml_def);    

        g_file_set_contents(*hostnamed_prefixs[0], hostnamed_config_xml, -1, errors);
        g_file_set_contents(*hostnamed_prefixs[1], hostnamed_config_xml, -1, errors);

        g_file_set_contents(*timedated_prefixs[0], timedated_config_xml, -1, errors);
        g_file_set_contents(*timedated_prefixs[1], timedated_config_xml, -1, errors);

        g_file_set_contents(*localed_prefixs[0], localed_config_xml, -1, errors);
        g_file_set_contents(*localed_prefixs[1], localed_config_xml, -1, errors);

        g_file_set_contents(*logind_prefixs[0], logind_config_xml, -1, errors);
        g_file_set_contents(*logind_prefixs[1], logind_config_xml, -1, errors);

        /* TODO: free() strings */

        return (errors[0] == NULL);

        } else
            return FALSE;
}