73 lines
2.6 KiB
Diff
73 lines
2.6 KiB
Diff
|
diff -up plymouth-0.8.9/src/main.c.sysfs-tty-fix plymouth-0.8.9/src/main.c
|
||
|
--- plymouth-0.8.9/src/main.c.sysfs-tty-fix 2014-02-20 13:30:12.391455465 -0500
|
||
|
+++ plymouth-0.8.9/src/main.c 2014-02-20 13:29:43.673747888 -0500
|
||
|
@@ -1980,6 +1980,7 @@ add_display_and_keyboard_for_console (co
|
||
|
|
||
|
static int
|
||
|
add_consoles_from_file (state_t *state,
|
||
|
+ const char *default_tty,
|
||
|
ply_hashtable_t *consoles,
|
||
|
const char *path)
|
||
|
{
|
||
|
@@ -1988,7 +1989,6 @@ add_consoles_from_file (state_t
|
||
|
ssize_t contents_length;
|
||
|
int num_consoles;
|
||
|
const char *remaining_file_contents;
|
||
|
-
|
||
|
ply_trace ("opening %s", path);
|
||
|
fd = open (path, O_RDONLY);
|
||
|
|
||
|
@@ -2009,6 +2009,8 @@ add_consoles_from_file (state_t
|
||
|
}
|
||
|
close (fd);
|
||
|
|
||
|
+ ply_trace ("kernel reports active consoles are '%s'", contents);
|
||
|
+
|
||
|
remaining_file_contents = contents;
|
||
|
num_consoles = 0;
|
||
|
|
||
|
@@ -2034,18 +2036,26 @@ add_consoles_from_file (state_t
|
||
|
console_length = strcspn (remaining_file_contents, " \n\t\v");
|
||
|
console = strndup (remaining_file_contents, console_length);
|
||
|
|
||
|
- /* If this console is anything besides tty0, then the user is sort
|
||
|
- * of a weird case (uses a serial console or whatever) and they
|
||
|
- * most likely don't want a graphical splash, so force details.
|
||
|
- */
|
||
|
- if (strcmp (console, "tty0") != 0)
|
||
|
- state->should_force_details = true;
|
||
|
-
|
||
|
asprintf (&console_device, "/dev/%s", console);
|
||
|
|
||
|
+ /* If this console is anything besides tty0 or the default tty, then
|
||
|
+ * the user is sort of a weird case (uses a serial console or whatever)
|
||
|
+ * and they most likely don't want a graphical splash, so force details.
|
||
|
+ */
|
||
|
+ if (!state->should_force_details &&
|
||
|
+ (strcmp (console, "tty0") != 0) &&
|
||
|
+ (strcmp (console_device, default_tty) != 0))
|
||
|
+ {
|
||
|
+ ply_trace ("forcing details because serial console %s found!", console_device);
|
||
|
+ state->should_force_details = true;
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ ply_trace ("local console %s found!", console_device);
|
||
|
+ }
|
||
|
+
|
||
|
free (console);
|
||
|
|
||
|
- ply_trace ("console %s found!", console_device);
|
||
|
ply_hashtable_insert (consoles, console_device, console_device);
|
||
|
num_consoles++;
|
||
|
|
||
|
@@ -2135,7 +2145,7 @@ check_for_consoles (state_t *state,
|
||
|
|
||
|
if (!ignore_serial_consoles)
|
||
|
{
|
||
|
- num_consoles = add_consoles_from_file (state, consoles, "/sys/class/tty/console/active");
|
||
|
+ num_consoles = add_consoles_from_file (state, default_tty, consoles, "/sys/class/tty/console/active");
|
||
|
|
||
|
if (num_consoles == 0)
|
||
|
{
|