1 diff --git a/Makefile.am b/Makefile.am
2 index 170465a..bce467d 100644
10 +GRAPHICAL_TARGET_WANTS =
15 what="$(SYSINIT_TARGET_WANTS)" && wants=sysinit.target && $(add-wants)
16 what="$(SOCKETS_TARGET_WANTS)" && wants=sockets.target && $(add-wants)
17 what="$(TIMERS_TARGET_WANTS)" && wants=timers.target && $(add-wants)
18 + what="$(FINAL_TARGET_WANTS)" && wants=final.target && $(add-wants)
19 + what="$(GRAPHICAL_TARGET_WANTS)" && wants=graphical.target && $(add-wants)
22 [ -z "$$what" ] || ( \
23 @@ -3388,9 +3392,16 @@
26 MULTI_USER_TARGET_WANTS += \
28 systemd-logind.service \
29 systemd-user-sessions.service
31 +FINAL_TARGET_WANTS += \
34 +GRAPHICAL_TARGET_WANTS += \
35 + display-manager.service
37 SYSTEM_UNIT_ALIASES += \
38 systemd-logind.service dbus-org.freedesktop.login1.service
40 @@ -3790,6 +3801,10 @@
41 uninstall-hook: $(UNINSTALL_DATA_HOOKS) $(UNINSTALL_EXEC_HOOKS)
43 install-data-hook: $(INSTALL_DATA_HOOKS)
44 + ( cd $(DESTDIR)$(systemunitdir) && \
45 + rm -f display-manager.service single.service && \
46 + $(LN_S) prefdm.service display-manager.service && \
47 + $(LN_S) rescue.service single.service )
49 distclean-local: $(DISTCLEAN_LOCAL_HOOKS)
51 diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c
52 index 2c2f10c..754f0c7 100644
53 --- a/src/core/hostname-setup.c
54 +++ b/src/core/hostname-setup.c
55 @@ -64,13 +64,84 @@ static int read_and_strip_hostname(const char *path, char **hn) {
59 +static int read_distro_hostname(char **hn) {
61 + _cleanup_fclose_ FILE *f = NULL;
65 + f = fopen("/etc/sysconfig/network", "re");
70 + char line[LINE_MAX];
73 + if (!fgets(line, sizeof(line), f)) {
83 + if (!startswith_no_case(s, "HOSTNAME="))
92 + hostname_cleanup(k);
111 +static int read_hostname(char **hn) {
116 + /* First, try to load the generic hostname configuration file,
117 + * that we support on all distributions */
119 + r = read_and_strip_hostname("/etc/hostname", hn);
122 + return read_distro_hostname(hn);
130 int hostname_setup(void) {
132 _cleanup_free_ char *b = NULL;
136 - r = read_and_strip_hostname("/etc/hostname", &b);
137 + r = read_hostname(&b);
141 diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c
142 index 7f692e9..0a45854 100644
143 --- a/src/core/locale-setup.c
144 +++ b/src/core/locale-setup.c
145 @@ -74,6 +74,7 @@ int locale_setup(void) {
147 if (detect_container(NULL) <= 0) {
148 r = parse_env_file("/proc/cmdline", WHITESPACE,
149 + "LANG", &variables[VARIABLE_LANG],
150 "locale.LANG", &variables[VARIABLE_LANG],
151 "locale.LANGUAGE", &variables[VARIABLE_LANGUAGE],
152 "locale.LC_CTYPE", &variables[VARIABLE_LC_CTYPE],
153 @@ -121,6 +121,15 @@ int locale_setup(void) {
154 log_warning("Failed to read /etc/locale.conf: %s", strerror(-r));
158 + (r = parse_env_file("/etc/sysconfig/i18n", NEWLINE,
159 + "LANG", &variables[VARIABLE_LANG],
163 + log_warning("Failed to read /etc/sysconfig/i18n: %s", strerror(-r));
166 if (!variables[VARIABLE_LANG]) {
167 variables[VARIABLE_LANG] = strdup("C");
168 if (!variables[VARIABLE_LANG]) {
169 --- systemd-196/src/timedate/timedated.c~ 2012-10-16 23:35:40.589269718 +0200
170 +++ systemd-196/src/timedate/timedated.c 2012-12-21 11:46:13.545086335 +0100
175 + r = parse_env_file("/etc/sysconfig/timezone", NEWLINE,
176 + "TIMEZONE", &tz.zone,
180 + log_warning("Failed to read /etc/sysconfig/timezone: %s", strerror(-r));
183 if (isempty(tz.zone)) {
185 diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
186 index 9196789..1d1a916 100644
187 --- a/src/vconsole/vconsole-setup.c
188 +++ b/src/vconsole/vconsole-setup.c
190 if (r < 0 && r != -ENOENT)
191 log_warning("Failed to read /etc/vconsole.conf: %s", strerror(-r));
195 + r = parse_env_file("/etc/sysconfig/console", NEWLINE,
196 + "CONSOLEFONT", &vc_font,
197 + "CONSOLEMAP", &vc_font_map,
198 + "CONSOLESCREENFONTMAP", &vc_font_unimap,
199 + "KEYTABLE", &vc_keymap,
201 + if (r < 0 && r != -ENOENT)
202 + log_warning("Failed to read /etc/sysconfig/console: %s", strerror(-r));