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=.
This commit is contained in:
Lennart Poettering 2011-04-20 04:30:08 +02:00
parent 0c749d504e
commit 944d4c91e6

View file

@ -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);