From: Frederic Crozat Date: Fri, 15 Feb 2013 16:04:39 +0000 Subject: handle /etc/HOSTNAME (bnc#803653) --- src/core/hostname-setup.c | 22 +++++++++++++++++----- src/hostname/hostnamed.c | 12 +++++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) --- systemd-206/src/core/hostname-setup.c +++ systemd-206/src/core/hostname-setup.c @@ -61,12 +61,24 @@ int hostname_setup(void) { r = read_and_strip_hostname("/etc/hostname", &b); if (r < 0) { - if (r == -ENOENT) - enoent = true; - else - log_warning("Failed to read configured hostname: %s", strerror(-r)); + if (r == -ENOENT) { + /* use SUSE fallback */ + r = read_and_strip_hostname("/etc/HOSTNAME", &b); + if (r < 0) { + if (r == -ENOENT) + enoent = true; + else + log_warning("Failed to read configured hostname: %s", strerror(-r)); + hn = NULL; + } + else + hn = b; - hn = NULL; + } + else { + log_warning("Failed to read configured hostname: %s", strerror(-r)); + hn = NULL; + } } else hn = b; --- systemd-209/src/hostname/hostnamed.c +++ systemd-209/src/hostname/hostnamed.c 2014-02-28 11:36:30.594735241 +0000 @@ -89,6 +89,10 @@ static int context_read_data(Context *c) if (r < 0 && r != -ENOENT) return r; + r = read_one_line_file("/etc/HOSTNAME", &c->data[PROP_STATIC_HOSTNAME]); + if (r < 0 && r != -ENOENT) + return r; + return 0; } @@ -246,6 +250,7 @@ static int context_write_data_hostname(C } static int context_write_data_static_hostname(Context *c) { + int r; assert(c); @@ -256,7 +261,12 @@ static int context_write_data_static_hos return 0; } - return write_string_file_atomic_label("/etc/hostname", c->data[PROP_STATIC_HOSTNAME]); + + r = write_string_file_atomic_label("/etc/hostname", c->data[PROP_STATIC_HOSTNAME]); + if (!r) { + r = symlink_atomic("/etc/hostname", "/etc/HOSTNAME"); + } + return r; } static int context_write_data_other(Context *c) {