hostname: simplify _set_hostname() code

- drop nm_hostname_manager_read_hostname() from header file.
  It's only used internally.

- inline some code and drop helper functions.
This commit is contained in:
Thomas Haller 2021-06-24 15:02:56 +02:00
parent 6bc6d45925
commit 429816080e
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728
2 changed files with 46 additions and 80 deletions

View file

@ -162,21 +162,51 @@ hostname_is_dynamic(void)
}
#endif
/* Returns an allocated string which the caller owns and must eventually free */
char *
nm_hostname_manager_read_hostname(NMHostnameManager *self)
/*****************************************************************************/
const char *
nm_hostname_manager_get_hostname(NMHostnameManager *self)
{
g_return_val_if_fail(NM_IS_HOSTNAME_MANAGER(self), NULL);
return NM_HOSTNAME_MANAGER_GET_PRIVATE(self)->current_hostname;
}
static void
_set_hostname(NMHostnameManager *self, const char *hostname)
{
NMHostnameManagerPrivate *priv = NM_HOSTNAME_MANAGER_GET_PRIVATE(self);
char * old_hostname;
hostname = nm_str_not_empty(hostname);
if (nm_streq0(hostname, priv->current_hostname))
return;
_LOGI("hostname changed from %s%s%s to %s%s%s",
NM_PRINT_FMT_QUOTED(priv->current_hostname, "\"", priv->current_hostname, "\"", "(none)"),
NM_PRINT_FMT_QUOTED(hostname, "\"", hostname, "\"", "(none)"));
old_hostname = priv->current_hostname;
priv->current_hostname = g_strdup(hostname);
g_free(old_hostname);
_notify(self, PROP_HOSTNAME);
}
static void
_set_hostname_read_file(NMHostnameManager *self)
{
NMHostnameManagerPrivate *priv = NM_HOSTNAME_MANAGER_GET_PRIVATE(self);
char * hostname = NULL;
gs_free char * hostname = NULL;
if (priv->hostnamed_proxy) {
hostname = g_strdup(priv->current_hostname);
goto out;
/* read-hostname returns the current hostname with hostnamed. */
return;
}
#if defined(HOSTNAME_PERSIST_SUSE)
if (priv->dhcp_monitor_id && hostname_is_dynamic())
return NULL;
return;
#endif
#if defined(HOSTNAME_PERSIST_GENTOO)
@ -188,67 +218,7 @@ nm_hostname_manager_read_hostname(NMHostnameManager *self)
g_strchomp(hostname);
#endif
out:
if (hostname && !hostname[0]) {
g_free(hostname);
return NULL;
}
return hostname;
}
/*****************************************************************************/
const char *
nm_hostname_manager_get_hostname(NMHostnameManager *self)
{
g_return_val_if_fail(NM_IS_HOSTNAME_MANAGER(self), NULL);
return NM_HOSTNAME_MANAGER_GET_PRIVATE(self)->current_hostname;
}
static void
_set_hostname_take(NMHostnameManager *self, char *hostname)
{
NMHostnameManagerPrivate *priv = NM_HOSTNAME_MANAGER_GET_PRIVATE(self);
_LOGI("hostname changed from %s%s%s to %s%s%s",
NM_PRINT_FMT_QUOTED(priv->current_hostname, "\"", priv->current_hostname, "\"", "(none)"),
NM_PRINT_FMT_QUOTED(hostname, "\"", hostname, "\"", "(none)"));
g_free(priv->current_hostname);
priv->current_hostname = hostname;
_notify(self, PROP_HOSTNAME);
}
static void
_set_hostname(NMHostnameManager *self, const char *hostname)
{
NMHostnameManagerPrivate *priv = NM_HOSTNAME_MANAGER_GET_PRIVATE(self);
hostname = nm_str_not_empty(hostname);
if (!nm_streq0(hostname, priv->current_hostname))
_set_hostname_take(self, g_strdup(hostname));
}
static void
_set_hostname_read(NMHostnameManager *self)
{
NMHostnameManagerPrivate *priv = NM_HOSTNAME_MANAGER_GET_PRIVATE(self);
char * hostname;
if (priv->hostnamed_proxy) {
/* read-hostname returns the current hostname with hostnamed. */
return;
}
hostname = nm_hostname_manager_read_hostname(self);
if (nm_streq0(hostname, priv->current_hostname)) {
g_free(hostname);
return;
}
_set_hostname_take(self, hostname);
_set_hostname(self, hostname);
}
/*****************************************************************************/
@ -462,7 +432,7 @@ hostname_file_changed_cb(GFileMonitor * monitor,
GFileMonitorEvent event_type,
gpointer user_data)
{
_set_hostname_read(user_data);
_set_hostname_read_file(user_data);
}
/*****************************************************************************/
@ -473,15 +443,13 @@ hostnamed_properties_changed(GDBusProxy *proxy,
char ** invalidated_properties,
gpointer user_data)
{
NMHostnameManager * self = user_data;
NMHostnameManagerPrivate *priv = NM_HOSTNAME_MANAGER_GET_PRIVATE(self);
GVariant * v_hostname;
NMHostnameManager * self = user_data;
NMHostnameManagerPrivate *priv = NM_HOSTNAME_MANAGER_GET_PRIVATE(self);
gs_unref_variant GVariant *variant = NULL;
v_hostname = g_dbus_proxy_get_cached_property(priv->hostnamed_proxy, "StaticHostname");
if (v_hostname) {
_set_hostname(self, g_variant_get_string(v_hostname, NULL));
g_variant_unref(v_hostname);
}
variant = g_dbus_proxy_get_cached_property(priv->hostnamed_proxy, "StaticHostname");
if (variant && g_variant_is_of_type(variant, G_VARIANT_TYPE_STRING))
_set_hostname(self, g_variant_get_string(variant, NULL));
}
static void
@ -527,7 +495,7 @@ setup_hostname_file_monitors(NMHostnameManager *self)
}
#endif
_set_hostname_read(self);
_set_hostname_read_file(self);
}
/*****************************************************************************/

View file

@ -36,8 +36,6 @@ NMHostnameManager *nm_hostname_manager_get(void);
const char *nm_hostname_manager_get_hostname(NMHostnameManager *self);
char *nm_hostname_manager_read_hostname(NMHostnameManager *self);
gboolean nm_hostname_manager_write_hostname(NMHostnameManager *self, const char *hostname);
void nm_hostname_manager_set_transient_hostname(NMHostnameManager * self,