diff options
author | Michal Schmidt <mschmidt@redhat.com> | 2013-04-05 13:32:34 +0200 |
---|---|---|
committer | Michal Schmidt <mschmidt@redhat.com> | 2013-04-05 13:46:47 +0200 |
commit | 2034ec42ec9e18db1ec908c87bb7c24cc63d2412 (patch) | |
tree | 3a29e2f7a5213ff6b13524925e6f7d0d40dfa990 /src/vconsole | |
parent | c784c5ce777f16ee56086a072dc1466639bc9eff (diff) |
vconsole-setup: fix vconsole.conf vs. cmdline overriding logic
Skipping the parsing of /etc/vconsole.conf just because some values were
already assigned from the cmdline never made sense. And by the way, commit
f73141d changed the return values of parse_env_file() - it now gives 0
on success. Which means in current HEAD /etc/vconsole.conf overrides the
cmdline, which is the reverse of what's expected.
We need to parse /etc/vconsole.conf first and then let vconsole.*
overrides from cmdline take effect. The behaviour is documented in
vconsole.conf(5).
https://bugzilla.redhat.com/show_bug.cgi?id=948750
Diffstat (limited to 'src/vconsole')
-rw-r--r-- | src/vconsole/vconsole-setup.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index 84d7c5cba2..efeae909d9 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -254,8 +254,18 @@ int main(int argc, char **argv) { utf8 = is_locale_utf8(); - r = 0; - + r = parse_env_file("/etc/vconsole.conf", NEWLINE, + "KEYMAP", &vc_keymap, + "KEYMAP_TOGGLE", &vc_keymap_toggle, + "FONT", &vc_font, + "FONT_MAP", &vc_font_map, + "FONT_UNIMAP", &vc_font_unimap, + NULL); + + if (r < 0 && r != -ENOENT) + log_warning("Failed to read /etc/vconsole.conf: %s", strerror(-r)); + + /* Let the kernel command line override /etc/vconsole.conf */ if (detect_container(NULL) <= 0) { r = parse_env_file("/proc/cmdline", WHITESPACE, "vconsole.keymap", &vc_keymap, @@ -269,21 +279,6 @@ int main(int argc, char **argv) { log_warning("Failed to read /proc/cmdline: %s", strerror(-r)); } - /* Hmm, nothing set on the kernel cmd line? Then let's - * try /etc/vconsole.conf */ - if (r <= 0) { - r = parse_env_file("/etc/vconsole.conf", NEWLINE, - "KEYMAP", &vc_keymap, - "KEYMAP_TOGGLE", &vc_keymap_toggle, - "FONT", &vc_font, - "FONT_MAP", &vc_font_map, - "FONT_UNIMAP", &vc_font_unimap, - NULL); - - if (r < 0 && r != -ENOENT) - log_warning("Failed to read /etc/vconsole.conf: %s", strerror(-r)); - } - if (utf8) enable_utf8(fd); else |