hostname: if there's already a hostname set when PID 1 is invoked, don't complain

This commit is contained in:
Lennart Poettering
2012-04-22 15:47:38 +02:00
parent 78ff1acdfe
commit fb3d2b8fec
+17 -8
View File
@@ -47,7 +47,8 @@ static int read_and_strip_hostname(const char *path, char **hn) {
assert(path);
assert(hn);
if ((r = read_one_line_file(path, &s)) < 0)
r = read_one_line_file(path, &s);
if (r < 0)
return r;
hostname_cleanup(s);
@@ -70,7 +71,8 @@ static int read_distro_hostname(char **hn) {
assert(hn);
if (!(f = fopen(FILENAME, "re")))
f = fopen(FILENAME, "re");
if (!f)
return -errno;
for (;;) {
@@ -90,7 +92,8 @@ static int read_distro_hostname(char **hn) {
if (!startswith_no_case(s, "HOSTNAME="))
continue;
if (!(k = strdup(s+9))) {
k = strdup(s+9);
if (!k) {
r = -ENOMEM;
goto finish;
}
@@ -129,8 +132,8 @@ static int read_hostname(char **hn) {
/* First, try to load the generic hostname configuration file,
* that we support on all distributions */
if ((r = read_and_strip_hostname("/etc/hostname", hn)) < 0) {
r = read_and_strip_hostname("/etc/hostname", hn);
if (r < 0) {
if (r == -ENOENT)
return read_distro_hostname(hn);
@@ -144,10 +147,12 @@ int hostname_setup(void) {
int r;
char *b = NULL;
const char *hn = NULL;
bool enoent = false;
if ((r = read_hostname(&b)) < 0) {
r = read_hostname(&b);
if (r < 0) {
if (r == -ENOENT)
log_info("No hostname configured.");
enoent = true;
else
log_warning("Failed to read configured hostname: %s", strerror(-r));
@@ -161,7 +166,8 @@ int hostname_setup(void) {
char *old_hostname = NULL;
if ((old_hostname = gethostname_malloc())) {
old_hostname = gethostname_malloc();
if (old_hostname) {
bool already_set;
already_set = old_hostname[0] != 0;
@@ -171,6 +177,9 @@ int hostname_setup(void) {
goto finish;
}
if (enoent)
log_info("No hostname configured.");
hn = "localhost";
}