hostname: read hostname for Gentoo

This commit is contained in:
Marc-Antoine Perennou 2010-05-09 18:13:02 +02:00 committed by Lennart Poettering
parent 07b0b134d3
commit 3177a7fa12
3 changed files with 35 additions and 2 deletions

View file

@ -40,11 +40,13 @@
#define FILENAME "/etc/hostname"
#elif defined(TARGET_ARCH)
#define FILENAME "/etc/rc.conf"
#elif defined(TARGET_GENTOO)
#define FILENAME "/etc/conf.d/hostname"
#endif
static int read_hostname(char **hn) {
#if defined(TARGET_FEDORA) || defined(TARGET_ARCH)
#if defined(TARGET_FEDORA) || defined(TARGET_ARCH) || defined(TARGET_GENTOO)
int r;
FILE *f;
@ -67,7 +69,7 @@ static int read_hostname(char **hn) {
s = strstrip(line);
if (!startswith(s, "HOSTNAME="))
if (!startswith_no_case(s, "HOSTNAME="))
continue;
if (!(k = strdup(s+9))) {
@ -75,6 +77,11 @@ static int read_hostname(char **hn) {
goto finish;
}
if (!(k = delete_chars(k, "\"\'"))) {
r = -ENOMEM;
goto finish;
}
*hn = k;
break;
}

25
util.c
View file

@ -42,6 +42,7 @@
#include <sys/inotify.h>
#include <sys/poll.h>
#include <libgen.h>
#include <ctype.h>
#include "macro.h"
#include "util.h"
@ -141,6 +142,30 @@ bool startswith(const char *s, const char *prefix) {
return memcmp(s, prefix, pl) == 0;
}
bool startswith_no_case(const char *s, const char *prefix) {
size_t sl, pl;
unsigned i;
assert(s);
assert(prefix);
sl = strlen(s);
pl = strlen(prefix);
if (pl == 0)
return true;
if (sl < pl)
return false;
for(i = 0; i < pl; ++i) {
if (tolower(s[i]) != tolower(prefix[i]))
return false;
}
return true;
}
bool first_word(const char *s, const char *word) {
size_t sl, wl;

1
util.h
View file

@ -89,6 +89,7 @@ static inline bool is_path_absolute(const char *p) {
bool endswith(const char *s, const char *postfix);
bool startswith(const char *s, const char *prefix);
bool startswith_no_case(const char *s, const char *prefix);
bool first_word(const char *s, const char *word);