X-Git-Url: https://uglyman.kremlin.cc/gitweb/gitweb.cgi?p=systembsd.git;a=blobdiff_plain;f=src%2Finterfaces%2Fhostnamed%2Fhostnamed.c;h=87401f141522175e4058ad612e2d287c6ecccee2;hp=6d83852788ab13c6faf08b88f5eaeffafdcce55a;hb=af14252f42dcdae4b0dcb6d66e34c27fa0776a09;hpb=90f544079ab170636e65ed7815317559f2a7924b diff --git a/src/interfaces/hostnamed/hostnamed.c b/src/interfaces/hostnamed/hostnamed.c index 6d83852..87401f1 100644 --- a/src/interfaces/hostnamed/hostnamed.c +++ b/src/interfaces/hostnamed/hostnamed.c @@ -89,13 +89,14 @@ our_get_hostname() { gchar *hostname_buf, *ret; size_t hostname_divider; - hostname_buf = (gchar*) g_malloc0(MAXHOSTNAMELEN); /* todo check & free */ + hostname_buf = (gchar*) g_malloc0(MAXHOSTNAMELEN); ret = (gchar*) g_malloc0(MAXHOSTNAMELEN); + g_ptr_array_add(hostnamed_freeable, hostname_buf); g_ptr_array_add(hostnamed_freeable, ret); - if(gethostname(hostname_buf, MAXHOSTNAMELEN)) - return ""; + if(gethostname(hostname_buf, MAXHOSTNAMELEN) || g_strcmp0(hostname_buf, "") == 0) + return "localhost"; hostname_divider = strcspn(hostname_buf, "."); @@ -105,13 +106,40 @@ our_get_hostname() { const gchar * our_get_static_hostname() { - return "TODO"; + const gchar *pretty_hostname; + const gchar *ret; + + pretty_hostname = our_get_pretty_hostname(); + + if(g_strcmp0(pretty_hostname, "") == 0) + ret = our_get_hostname(); + + else if((ret = g_hostname_to_ascii(pretty_hostname))) { + + g_ptr_array_add(hostnamed_freeable, (gpointer)ret); + return ret; + } + + return ret; } const gchar * our_get_pretty_hostname() { - return "TODO"; + GKeyFile *config; + gchar *ret; + + if(g_key_file_load_from_file(config, "/etc/systemd_compat.conf", G_KEY_FILE_NONE, NULL) + && (ret = g_key_file_get_value(config, "hostnamed", "PrettyHostname", NULL))) { /* ret might need to be freed, docs dont specify but i am suspicious */ + + g_free(config); + return ret; + } + + if(config) + g_free(config); + + return ""; } const gchar *