--- a/hostname-setup.c 2010-05-08 10:42:46.308140618 +0200 +++ b/hostname-setup.c 2010-05-08 11:05:50.526138314 +0200 @@ -116,6 +116,51 @@ finish: fclose(f); return r; +#elif defined(TARGET_GENTOO) + int r; + FILE *f; + + assert(hn); + + if (!(f = fopen("/etc/conf.d/hostname", "re"))) + return -errno; + + for (;;) { + char line[LINE_MAX]; + char *s, *k; + + if (!fgets(line, sizeof(line), f)) { + if (feof(f)) + break; + + r = -errno; + goto finish; + } + + s = strstrip(line); + + if (!startswith(s, "HOSTNAME=") && !startswith(s, "hostname=")) + continue; + + if (!(k = strdup(s+9))) { + r = -ENOMEM; + goto finish; + } + if (!(k = delete_chars(k, "\"\'"))) { + r = -ENOMEM; /* is ENOMEM correct here? */ + goto finish; + } + + *hn = k; + break; + } + + r = 0; + +finish: + fclose(f); + return r; + #elif defined(TARGET_SUSE) int r; char *s, *k;