summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-04-20 04:30:08 +0200
committerLennart Poettering <lennart@poettering.net>2011-04-20 04:30:08 +0200
commit944d4c91e68508d997409008ab7acd8d6e162965 (patch)
tree490430136f8bbb28214a78484ea35874921d26a5
parent0c749d504e98dddde3c39025b03744198a667fcc (diff)
vconsole: don't set console font/keymap if settings are empty
https://bugs.freedesktop.org/show_bug.cgi?id=36052 If KEYMAP= is set to the empty string in /etc/vconsole leave the kernel keymap loaded. Similar for FONT=.
-rw-r--r--src/vconsole-setup.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/vconsole-setup.c b/src/vconsole-setup.c
index 86e290b5d5..1be260bc2f 100644
--- a/src/vconsole-setup.c
+++ b/src/vconsole-setup.c
@@ -83,6 +83,12 @@ static int load_keymap(const char *vc, const char *map, const char *map_toggle,
int i = 0;
pid_t pid;
+ if (isempty(map)) {
+ /* An empty map means kernel map */
+ *_pid = 0;
+ return 0;
+ }
+
args[i++] = KBD_LOADKEYS;
args[i++] = "-q";
args[i++] = "-C";
@@ -111,6 +117,12 @@ static int load_font(const char *vc, const char *font, const char *map, const ch
int i = 0;
pid_t pid;
+ if (isempty(font)) {
+ /* An empty font means kernel font */
+ *_pid = 0;
+ return 0;
+ }
+
args[i++] = KBD_SETFONT;
args[i++] = "-C";
args[i++] = vc;
@@ -155,7 +167,7 @@ int main(int argc, char **argv) {
int r = EXIT_FAILURE;
pid_t font_pid = 0, keymap_pid = 0;
- log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
+ log_set_target(LOG_TARGET_AUTO);
log_parse_environment();
log_open();
@@ -176,6 +188,16 @@ int main(int argc, char **argv) {
utf8 = is_locale_utf8();
+ vc_keymap = strdup("us");
+ vc_font = strdup(DEFAULT_FONT);
+
+ if (!vc_keymap || !vc_font) {
+ log_error("Failed to allocate strings.");
+ goto finish;
+ }
+
+ r = 0;
+
if (detect_container(NULL) <= 0)
if ((r = parse_env_file("/proc/cmdline", WHITESPACE,
#if defined(TARGET_FEDORA) || defined(TARGET_MEEGO)
@@ -410,15 +432,7 @@ int main(int argc, char **argv) {
#endif
}
- if (!vc_keymap)
- vc_keymap = strdup("us");
- if (!vc_font)
- vc_font = strdup(DEFAULT_FONT);
-
- if (!vc_keymap || !vc_font) {
- log_error("Failed to allocate strings.");
- goto finish;
- }
+ r = EXIT_FAILURE;
if (!utf8)
disable_utf8(fd);