--- src/NetworkManagerPolicy.c 2009-04-13 00:29:59.000000000 +0200 +++ src/NetworkManagerPolicyNew.c 2009-09-11 21:40:15.000000000 +0200 @@ -344,6 +344,34 @@ set_system_hostname (const char *new_hos int ret = 0; const char *name = new_hostname ? new_hostname : FALLBACK_HOSTNAME; +#ifdef TARGET_GENTOO + if (!new_hostname) { + static char* sysconf_hostname = NULL; + char *hostname_end = NULL; + char *contents = NULL; + gsize contents_len; + GError *error = NULL; + if (!sysconf_hostname && !g_file_get_contents (SYSCONFDIR "/conf.d/hostname", &contents, &contents_len, &error)) { + nm_warning ("%s: couldn't read " SYSCONFDIR "/conf.d/hostname: (%d) %s", + __func__, error ? error->code : 0, + (error && error->message) ? error->message : "(unknown)"); + } else if (!sysconf_hostname) { + contents = strstr(contents, "hostname=\""); + contents = strchr(contents, '"') + 1; + hostname_end = strchr(contents, '"'); + *hostname_end = '\0'; + + sysconf_hostname = contents; + } + + if(sysconf_hostname) + name = sysconf_hostname; + } +#endif + + + + old_hostname[HOST_NAME_MAX] = '\0'; errno = 0; ret = gethostname (old_hostname, HOST_NAME_MAX);