File handle-etc-HOSTNAME.patch of Package systemd-208

From: Frederic Crozat <fcrozat@suse.com>
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.orig/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-206.orig/src/hostname/hostnamed.c
+++ systemd-206/src/hostname/hostnamed.c
@@ -129,6 +129,10 @@ static int read_data(void) {
         if (r < 0 && r != -ENOENT)
                 return r;
 
+        r = read_one_line_file("/etc/HOSTNAME", &data[PROP_STATIC_HOSTNAME]);
+        if (r < 0 && r != -ENOENT)
+                return r;
+
         return 0;
 }
 
@@ -283,6 +287,7 @@ static int write_data_hostname(void) {
 
 static int write_data_static_hostname(void) {
 
+        int r;
         if (isempty(data[PROP_STATIC_HOSTNAME])) {
 
                 if (unlink("/etc/hostname") < 0)
@@ -290,7 +295,12 @@ static int write_data_static_hostname(vo
 
                 return 0;
         }
-        return write_string_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]);
+
+        r = write_string_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]);
+        if (!r) {
+                r = symlink_atomic("/etc/hostname", "/etc/HOSTNAME");
+        }
+        return r;
 }
 
 static int write_data_other(void) {
openSUSE Build Service is sponsored by