From 929eb2a9b45b11b5e3d76f1d4ac744853b7ab2fe Mon Sep 17 00:00:00 2001 From: kremlin Date: Sun, 8 Jun 2014 01:19:46 -0500 Subject: [PATCH] started work on xml file installation/configuration --- src/interfaces/hostnamed/hostnamed.c | 10 - src/main.c | 14 + src/main.h | 121 +++++--- src/xml_defs.h | 446 +++++++++++++++++++++++++++ 4 files changed, 532 insertions(+), 59 deletions(-) create mode 100644 src/xml_defs.h diff --git a/src/interfaces/hostnamed/hostnamed.c b/src/interfaces/hostnamed/hostnamed.c index b2f9684..42137cd 100644 --- a/src/interfaces/hostnamed/hostnamed.c +++ b/src/interfaces/hostnamed/hostnamed.c @@ -105,17 +105,7 @@ GError * hostnamed_init() { guint bus_descriptor; GError *err = NULL; - gchar **hnd_ispect_xml; - GDir *cur_dir; - gchar *dir; - cur_dir = g_dir_open("./../", 0, err); - - g_sprintf(dir, "%s\n", g_dir_read_name(cur_dir)); - - //g_file_get_contents("../../../../conf/hostnamed-ispect.xml", hnd_ispect_xml, NULL, err); - //spect_data = g_dbus_node_info_new_for_xml(hnd_ispect_xml, &err); - bus_descriptor = g_bus_own_name(G_BUS_TYPE_SYSTEM, (gchar *)"org.freedesktop.hostname1", G_BUS_NAME_OWNER_FLAGS_NONE, diff --git a/src/main.c b/src/main.c index c19b489..59e23fe 100644 --- a/src/main.c +++ b/src/main.c @@ -1,7 +1,21 @@ +/* debugging */ +#define INSTALL 1 +#define NO_BUILTIN_XML 1 + +/* end debugging */ + #include #include "interfaces/hostnamed/hostnamed.c" +#include "main.h" int main() { + + #if (defined NO_BUILTIN_XML && defined INSTALL) + if(!install_conf()) + g_printf("%s\n", "FAILED to install xml configs!");; + #else + #endif + GMainLoop *mloop = NULL; mloop = g_main_loop_new(NULL, FALSE); diff --git a/src/main.h b/src/main.h index 2fd39ea..1869cda 100644 --- a/src/main.h +++ b/src/main.h @@ -1,51 +1,74 @@ #include +#include "xml_defs.h" -#ifdef NO BUILTIN XML -//TODO install conf -#endif - -#ifndef NO_BUILTIN_XML -gchar **hostnamed_config_xml = -"" -"" -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -""; - -gchar **hostnamed_ispect_xml = -"" -"" -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -" " -""; +//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; +} diff --git a/src/xml_defs.h b/src/xml_defs.h new file mode 100644 index 0000000..52fd066 --- /dev/null +++ b/src/xml_defs.h @@ -0,0 +1,446 @@ +const GString hostnamed_config_xml_def[] = { +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +""}; + +const GString hostnamed_ispect_xml_def[] = { +"", +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +""}; + +const GString timedated_config_xml_def[] = { +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +""}; + +const GString timedated_ispect_xml_def[] = { +"", +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +""}; + +const GString localed_config_xml_def[] = { +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +""}; + +const GString localed_ispect_xml_def[] = { +"", +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +""}; + +const GString logind_config_xml_def[] = { +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +""}; + +const GString logind_ispect_xml_def[] = { +"", +"", +"", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +"" }; + -- 2.41.0