From 1a714ee5e68f855b816ee947d4c49cb25c8227a4 Mon Sep 17 00:00:00 2001 From: "Patrick J. Volkerding" Date: Fri, 22 Apr 2016 20:30:56 -0500 Subject: settings: fix Slackware hostname setting https://mail.gnome.org/archives/networkmanager-list/2016-April/msg00075.html --- src/settings/nm-settings.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index ee6e4f8078..f68c5f4bb7 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -500,6 +500,41 @@ read_hostname_gentoo (const char *path) } #endif +#if defined(HOSTNAME_PERSIST_SLACKWARE) +static gchar * +read_hostname_slackware (const char *path) +{ + gchar *contents = NULL, *result = NULL, *tmp; + gchar **all_lines = NULL; + guint line_num, i, j = 0; + + if (!g_file_get_contents (path, &contents, NULL, NULL)) + return NULL; + all_lines = g_strsplit (contents, "\n", 0); + line_num = g_strv_length (all_lines); + for (i = 0; i < line_num; i++) { + g_strstrip (all_lines[i]); + if (all_lines[i][0] == '#' || all_lines[i][0] == '\0') + continue; + tmp = &all_lines[i][0]; + /* We only want up to the first '.' -- the rest of the */ + /* fqdn is defined in /etc/hosts */ + while (tmp[j] != '\0') { + if (tmp[j] == '.') { + tmp[j] = '\0'; + break; + } + j++; + } + result = g_shell_unquote (tmp, NULL); + break; + } + g_strfreev (all_lines); + g_free (contents); + return result; +} +#endif + #if defined(HOSTNAME_PERSIST_SUSE) static gboolean hostname_is_dynamic (void) @@ -547,6 +582,10 @@ nm_settings_get_hostname (NMSettings *self) hostname = read_hostname_gentoo (priv->hostname.file); #else +#if defined(HOSTNAME_PERSIST_SLACKWARE) + hostname = read_hostname_slackware (priv->hostname.file); +#else + #if defined(HOSTNAME_PERSIST_SUSE) if (priv->hostname.dhcp_monitor_id && hostname_is_dynamic ()) return NULL; @@ -555,6 +594,7 @@ nm_settings_get_hostname (NMSettings *self) g_strchomp (hostname); #endif /* HOSTNAME_PERSIST_GENTOO */ +#endif /* HOSTNAME_PERSIST_SLACKWARE */ out: if (hostname && !hostname[0]) { -- cgit v1.2.1 From 79d85ca180c7510e9e6a07e7295d84f0151f0243 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 25 Apr 2016 15:03:31 +0200 Subject: settings: cleanup #if blocks for HOSTNAME_PERSIST_* --- src/settings/nm-settings.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index f68c5f4bb7..6b06335036 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -112,6 +112,10 @@ EXPORT(nm_settings_connection_replace_and_commit) #define PLUGIN_MODULE_PATH "plugin-module-path" +#if (defined(HOSTNAME_PERSIST_SUSE) + defined(HOSTNAME_PERSIST_SLACKWARE) + defined(HOSTNAME_PERSIST_GENTOO)) > 1 +#error "Can only define one of HOSTNAME_PERSIST_*" +#endif + #if defined(HOSTNAME_PERSIST_SUSE) #define HOSTNAME_FILE HOSTNAME_FILE_UCASE_HOSTNAME #elif defined(HOSTNAME_PERSIST_SLACKWARE) @@ -522,7 +526,7 @@ read_hostname_slackware (const char *path) while (tmp[j] != '\0') { if (tmp[j] == '.') { tmp[j] = '\0'; - break; + break; } j++; } @@ -578,23 +582,19 @@ nm_settings_get_hostname (NMSettings *self) goto out; } -#if defined(HOSTNAME_PERSIST_GENTOO) - hostname = read_hostname_gentoo (priv->hostname.file); -#else - -#if defined(HOSTNAME_PERSIST_SLACKWARE) - hostname = read_hostname_slackware (priv->hostname.file); -#else - #if defined(HOSTNAME_PERSIST_SUSE) if (priv->hostname.dhcp_monitor_id && hostname_is_dynamic ()) return NULL; #endif + +#if defined(HOSTNAME_PERSIST_GENTOO) + hostname = read_hostname_gentoo (priv->hostname.file); +#elif defined(HOSTNAME_PERSIST_SLACKWARE) + hostname = read_hostname_slackware (priv->hostname.file); +#else if (g_file_get_contents (priv->hostname.file, &hostname, NULL, NULL)) g_strchomp (hostname); - -#endif /* HOSTNAME_PERSIST_GENTOO */ -#endif /* HOSTNAME_PERSIST_SLACKWARE */ +#endif out: if (hostname && !hostname[0]) { -- cgit v1.2.1 From 316359d8b65030df2ac8b34be926bc752a96802c Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 25 Apr 2016 15:13:18 +0200 Subject: settings: refactor read_hostname_*() --- src/settings/nm-settings.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 6b06335036..281f299f1f 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -480,27 +480,25 @@ get_plugin (NMSettings *self, guint32 capability) static gchar * read_hostname_gentoo (const char *path) { - gchar *contents = NULL, *result = NULL, *tmp; - gchar **all_lines = NULL; - guint line_num, i; + gs_free char *contents = NULL; + gs_strfreev char **all_lines = NULL; + const char *tmp; + guint i; if (!g_file_get_contents (path, &contents, NULL, NULL)) return NULL; + all_lines = g_strsplit (contents, "\n", 0); - line_num = g_strv_length (all_lines); - for (i = 0; i < line_num; i++) { + 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=")]; - result = g_shell_unquote (tmp, NULL); - break; + return g_shell_unquote (tmp, NULL); } } - g_strfreev (all_lines); - g_free (contents); - return result; + return NULL; } #endif @@ -508,15 +506,16 @@ read_hostname_gentoo (const char *path) static gchar * read_hostname_slackware (const char *path) { - gchar *contents = NULL, *result = NULL, *tmp; - gchar **all_lines = NULL; - guint line_num, i, j = 0; + gs_free char *contents = NULL; + gs_strfreev char **all_lines = NULL; + char *tmp; + guint i, j = 0; if (!g_file_get_contents (path, &contents, NULL, NULL)) return NULL; + all_lines = g_strsplit (contents, "\n", 0); - line_num = g_strv_length (all_lines); - for (i = 0; i < line_num; i++) { + for (i = 0; all_lines[i]; i++) { g_strstrip (all_lines[i]); if (all_lines[i][0] == '#' || all_lines[i][0] == '\0') continue; @@ -530,12 +529,9 @@ read_hostname_slackware (const char *path) } j++; } - result = g_shell_unquote (tmp, NULL); - break; + return g_shell_unquote (tmp, NULL); } - g_strfreev (all_lines); - g_free (contents); - return result; + return NULL; } #endif -- cgit v1.2.1