[systemd-commits] hostname-setup.c Makefile.am

Lennart Poettering lennart at kemper.freedesktop.org
Sat May 8 06:01:01 PDT 2010


 Makefile.am      |    4 +--
 hostname-setup.c |   73 +++++++++----------------------------------------------
 2 files changed, 15 insertions(+), 62 deletions(-)

New commits:
commit ea6145dabe707ae721d036c6764c34a493cff401
Author: Lennart Poettering <lennart at poettering.net>
Date:   Sat May 8 15:00:53 2010 +0200

    hostname: unify hostname configuration file parsers a little

diff --git a/Makefile.am b/Makefile.am
index 4611a66..c98ad0b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -77,7 +77,7 @@ EXTRA_DIST = \
 	units/systemd-logger.service.in \
 	units/systemd-logger.socket
 
-BASIC_SOURCES= \
+BASIC_SOURCES = \
         util.c \
         util.h \
         hashmap.c \
@@ -95,7 +95,7 @@ BASIC_SOURCES= \
         ratelimit.c \
         ratelimit.h
 
-COMMON_SOURCES= \
+COMMON_SOURCES = \
 	$(BASIC_SOURCES) \
 	unit.c \
 	unit.h \
diff --git a/hostname-setup.c b/hostname-setup.c
index 67891a5..4d7f32d 100644
--- a/hostname-setup.c
+++ b/hostname-setup.c
@@ -32,56 +32,25 @@
 
 #define LINE_MAX 4096
 
-static int read_hostname(char **hn) {
-
 #if defined(TARGET_FEDORA)
-        int r;
-        FILE *f;
-
-        assert(hn);
-
-        if (!(f = fopen("/etc/sysconfig/network", "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="))
-                        continue;
-
-                if (!(k = strdup(s+9))) {
-                        r = -ENOMEM;
-                        goto finish;
-                }
-
-                *hn = k;
-                break;
-        }
-
-        r = 0;
+#define FILENAME "/etc/sysconfig/network"
+#elif defined(TARGET_SUSE)
+#define FILENAME "/etc/HOSTNAME"
+#elif defined(TARGET_DEBIAN)
+#define FILENAME "/etc/hostname"
+#elif defined(TARGET_ARCH)
+#define FILENAME "/etc/rc.conf"
+#endif
 
-finish:
-        fclose(f);
-        return r;
+static int read_hostname(char **hn) {
 
-#elif defined(TARGET_ARCH)
+#if defined(TARGET_FEDORA) || defined(TARGET_ARCH)
         int r;
         FILE *f;
 
         assert(hn);
 
-        if (!(f = fopen("/etc/rc.conf", "re")))
+        if (!(f = fopen(FILENAME, "re")))
                 return -errno;
 
         for (;;) {
@@ -116,13 +85,13 @@ finish:
         fclose(f);
         return r;
 
-#elif defined(TARGET_SUSE)
+#elif defined(TARGET_SUSE) || defined(TARGET_DEBIAN)
         int r;
         char *s, *k;
 
         assert(hn);
 
-        if ((r = read_one_line_file("/etc/HOSTNAME", &s)) < 0)
+        if ((r = read_one_line_file(FILENAME, &s)) < 0)
                 return r;
 
         k = strdup(strstrip(s));
@@ -133,22 +102,6 @@ finish:
 
         *hn = k;
 
-#elif defined(TARGET_DEBIAN)
-        int r;
-        char *s, *k;
-
-        assert(hn);
-
-        if ((r = read_one_line_file("/etc/hostname", &s)) < 0)
-                return r;
-
-        k = strdup(strstrip(s));
-        free(s);
-
-        if (!k)
-                return -ENOMEM;
-
-        *hn = k;
 #else
 #warning "Don't know how to read the hostname"
 


More information about the systemd-commits mailing list