From: Lennart Poettering Date: Sat, 8 May 2010 13:00:53 +0000 (+0200) Subject: hostname: unify hostname configuration file parsers a little X-Git-Tag: v1~427 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=ea6145dabe707ae721d036c6764c34a493cff401 hostname: unify hostname configuration file parsers a little --- diff --git a/Makefile.am b/Makefile.am index 4611a6620..c98ad0b8b 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 67891a52e..4d7f32d0a 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"