[systemd-devel] [PATCH resend] getty-generator: Enable getty on all active serial consoles.
Michael Marineau
michael.marineau at coreos.com
Wed Aug 28 13:12:31 PDT 2013
This enables a getty on active kernel consoles even when they are not
the last one specified on the kernel command line and mapped to
/dev/console. Now the order "console=ttyS0 console=tty0" works in
addition to "console=tty0 console=ttyS0".
---
src/getty-generator/getty-generator.c | 37 ++++++++++++++++++++++-------------
1 file changed, 23 insertions(+), 14 deletions(-)
diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
index 4b7a60a..6c93806 100644
--- a/src/getty-generator/getty-generator.c
+++ b/src/getty-generator/getty-generator.c
@@ -122,33 +122,42 @@ int main(int argc, char *argv[]) {
}
if (read_one_line_file("/sys/class/tty/console/active", &active) >= 0) {
- const char *tty;
-
- tty = strrchr(active, ' ');
- if (tty)
- tty ++;
- else
- tty = active;
-
- /* Automatically add in a serial getty on the kernel
- * console */
- if (isempty(tty) || tty_is_vc(tty))
- free(active);
- else {
+ char *w, *state;
+ size_t l;
+
+ /* Automatically add in a serial getty on all active
+ * kernel consoles */
+ FOREACH_WORD(w, l, active, state) {
+ char *tty;
int k;
+ tty = strndup(w, l);
+ if (!tty) {
+ log_oom();
+ free(active);
+ r = EXIT_FAILURE;
+ goto finish;
+ }
+
+ if (isempty(tty) || tty_is_vc(tty)) {
+ free(tty);
+ continue;
+ }
+
/* We assume that gettys on virtual terminals are
* started via manual configuration and do this magic
* only for non-VC terminals. */
k = add_serial_getty(tty);
- free(active);
if (k < 0) {
+ free(tty);
+ free(active);
r = EXIT_FAILURE;
goto finish;
}
}
+ free(active);
}
/* Automatically add in a serial getty on the first
--
1.8.1.5
More information about the systemd-devel
mailing list