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:
parent
0c749d504e
commit
944d4c91e6
|
@ -83,6 +83,12 @@ static int load_keymap(const char *vc, const char *map, const char *map_toggle,
|
||||||
int i = 0;
|
int i = 0;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
|
if (isempty(map)) {
|
||||||
|
/* An empty map means kernel map */
|
||||||
|
*_pid = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
args[i++] = KBD_LOADKEYS;
|
args[i++] = KBD_LOADKEYS;
|
||||||
args[i++] = "-q";
|
args[i++] = "-q";
|
||||||
args[i++] = "-C";
|
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;
|
int i = 0;
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
|
if (isempty(font)) {
|
||||||
|
/* An empty font means kernel font */
|
||||||
|
*_pid = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
args[i++] = KBD_SETFONT;
|
args[i++] = KBD_SETFONT;
|
||||||
args[i++] = "-C";
|
args[i++] = "-C";
|
||||||
args[i++] = vc;
|
args[i++] = vc;
|
||||||
|
@ -155,7 +167,7 @@ int main(int argc, char **argv) {
|
||||||
int r = EXIT_FAILURE;
|
int r = EXIT_FAILURE;
|
||||||
pid_t font_pid = 0, keymap_pid = 0;
|
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_parse_environment();
|
||||||
log_open();
|
log_open();
|
||||||
|
|
||||||
|
@ -176,6 +188,16 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
utf8 = is_locale_utf8();
|
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 (detect_container(NULL) <= 0)
|
||||||
if ((r = parse_env_file("/proc/cmdline", WHITESPACE,
|
if ((r = parse_env_file("/proc/cmdline", WHITESPACE,
|
||||||
#if defined(TARGET_FEDORA) || defined(TARGET_MEEGO)
|
#if defined(TARGET_FEDORA) || defined(TARGET_MEEGO)
|
||||||
|
@ -410,15 +432,7 @@ int main(int argc, char **argv) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!vc_keymap)
|
r = EXIT_FAILURE;
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!utf8)
|
if (!utf8)
|
||||||
disable_utf8(fd);
|
disable_utf8(fd);
|
||||||
|
|
Loading…
Reference in a new issue