summary refs log tree commit diff
path: root/src/core/nm-hostname-manager.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2023-02-10 11:50:34 +0100
committerMichael Biebl <biebl@debian.org>2023-02-10 11:50:34 +0100
commit1372848511cb896b80b51ed1a3e9606bd9816631 (patch)
tree674792b9385bdef935988894b45f06b2af39f88c /src/core/nm-hostname-manager.c
parent40ec077ea305994c1fc2130add6787ca0c73e2c6 (diff)
New upstream version 1.42.0 upstream/1.42.0
Diffstat (limited to 'src/core/nm-hostname-manager.c')
-rw-r--r--src/core/nm-hostname-manager.c83
1 files changed, 33 insertions, 50 deletions
diff --git a/src/core/nm-hostname-manager.c b/src/core/nm-hostname-manager.c
index ba0c6c9d..b036590f 100644
--- a/src/core/nm-hostname-manager.c
+++ b/src/core/nm-hostname-manager.c
@@ -99,53 +99,32 @@ _file_monitor_new(const char *path)
 
 /*****************************************************************************/
 
-#if defined(HOSTNAME_PERSIST_GENTOO)
 static char *
-read_hostname_gentoo(const char *path)
+read_hostname(const char *path, gboolean is_gentoo)
 {
-    gs_free char      *contents  = NULL;
-    gs_strfreev char **all_lines = NULL;
-    const char        *tmp;
-    guint              i;
+    gs_free char        *contents  = NULL;
+    gs_free const char **all_lines = NULL;
+    const char          *tmp;
+    gsize                i;
 
     if (!g_file_get_contents(path, &contents, NULL, NULL))
         return NULL;
 
-    all_lines = g_strsplit(contents, "\n", 0);
-    for (i = 0; all_lines[i]; i++) {
-        g_strstrip(all_lines[i]);
-        if (all_lines[i][0] == '#' || all_lines[i][0] == '\0')
-            continue;
-        if (g_str_has_prefix(all_lines[i], "hostname=")) {
-            tmp = &all_lines[i][NM_STRLEN("hostname=")];
-            return g_shell_unquote(tmp, NULL);
+    all_lines = nm_strsplit_set_full(contents, "\n", NM_STRSPLIT_SET_FLAGS_STRSTRIP);
+    for (i = 0; (tmp = all_lines[i]); i++) {
+        if (is_gentoo) {
+            if (!NM_STR_HAS_PREFIX(tmp, "hostname="))
+                continue;
+            tmp = &tmp[NM_STRLEN("hostname=")];
+        } else {
+            if (tmp[0] == '#')
+                continue;
         }
+        nm_assert(tmp && tmp[0] != '\0');
+        return g_shell_unquote(tmp, NULL);
     }
     return NULL;
 }
-#endif
-
-#if defined(HOSTNAME_PERSIST_SLACKWARE)
-static char *
-read_hostname_slackware(const char *path)
-{
-    gs_free char      *contents  = NULL;
-    gs_strfreev char **all_lines = NULL;
-    guint              i         = 0;
-
-    if (!g_file_get_contents(path, &contents, NULL, NULL))
-        return NULL;
-
-    all_lines = g_strsplit(contents, "\n", 0);
-    for (i = 0; all_lines[i]; i++) {
-        g_strstrip(all_lines[i]);
-        if (all_lines[i][0] == '#' || all_lines[i][0] == '\0')
-            continue;
-        return g_shell_unquote(&all_lines[i][0], NULL);
-    }
-    return NULL;
-}
-#endif
 
 #if defined(HOSTNAME_PERSIST_SUSE)
 static gboolean
@@ -237,10 +216,11 @@ _set_hostname_read_file(NMHostnameManager *self)
 #endif
 
 #if defined(HOSTNAME_PERSIST_GENTOO)
-    hostname = read_hostname_gentoo(HOSTNAME_FILE);
+    hostname = read_hostname(HOSTNAME_FILE, TRUE);
 #elif defined(HOSTNAME_PERSIST_SLACKWARE)
-    hostname = read_hostname_slackware(HOSTNAME_FILE);
+    hostname = read_hostname(HOSTNAME_FILE, FALSE);
 #else
+    (void) read_hostname;
     if (g_file_get_contents(HOSTNAME_FILE, &hostname, NULL, NULL))
         g_strchomp(hostname);
 #endif
@@ -433,11 +413,11 @@ _write_hostname_on_idle_cb(gpointer user_data, GCancellable *cancellable)
 }
 
 void
-nm_hostname_manager_write_hostname(NMHostnameManager  *self,
-                                   const char         *hostname,
-                                   GCancellable       *cancellable,
-                                   GAsyncReadyCallback callback,
-                                   gpointer            user_data)
+nm_hostname_manager_set_static_hostname(NMHostnameManager  *self,
+                                        const char         *hostname,
+                                        GCancellable       *cancellable,
+                                        GAsyncReadyCallback callback,
+                                        gpointer            user_data)
 {
     NMHostnameManagerPrivate *priv;
     GTask                    *task;
@@ -446,8 +426,11 @@ nm_hostname_manager_write_hostname(NMHostnameManager  *self,
 
     priv = NM_HOSTNAME_MANAGER_GET_PRIVATE(self);
 
-    task =
-        nm_g_task_new(self, cancellable, nm_hostname_manager_write_hostname, callback, user_data);
+    task = nm_g_task_new(self,
+                         cancellable,
+                         nm_hostname_manager_set_static_hostname,
+                         callback,
+                         user_data);
 
     g_task_set_task_data(task, g_strdup(hostname), g_free);
 
@@ -467,12 +450,12 @@ nm_hostname_manager_write_hostname(NMHostnameManager  *self,
 }
 
 gboolean
-nm_hostname_manager_write_hostname_finish(NMHostnameManager *self,
-                                          GAsyncResult      *result,
-                                          GError           **error)
+nm_hostname_manager_set_static_hostname_finish(NMHostnameManager *self,
+                                               GAsyncResult      *result,
+                                               GError           **error)
 {
     g_return_val_if_fail(NM_IS_HOSTNAME_MANAGER(self), FALSE);
-    g_return_val_if_fail(nm_g_task_is_valid(result, self, nm_hostname_manager_write_hostname),
+    g_return_val_if_fail(nm_g_task_is_valid(result, self, nm_hostname_manager_set_static_hostname),
                          FALSE);
 
     return g_task_propagate_boolean(G_TASK(result), error);