You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.6 KiB
72 lines
2.6 KiB
From 7974045302fe53629e70501f0180f30cbaa25b1e Mon Sep 17 00:00:00 2001 |
|
From: Karel Zak <kzak@redhat.com> |
|
Date: Wed, 6 Jun 2018 15:57:24 +0200 |
|
Subject: [PATCH 162/173] agetty: keep c_iflags unmodified on --autologin |
|
|
|
agetty sets c_iflags according to interaction with serial line in |
|
get_logname(). For --autologin it does not read from the line, so we |
|
have no clue how to set the flags. |
|
|
|
The current behavior is to zeroize the flags. Unfortunately, it seems |
|
like bad idea, because the line may be already properly initialized by |
|
kernel (or systemd, etc.). |
|
|
|
The new behavior is not touch the flags on --autologin. |
|
|
|
Upstream: http://github.com/karelzak/util-linux/commit/2c4d86abdadab19be76abecb156da7f7dc284d81 |
|
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1252764 |
|
Signed-off-by: Karel Zak <kzak@redhat.com> |
|
--- |
|
term-utils/agetty.8 | 4 ++++ |
|
term-utils/agetty.c | 17 +++++++++++++---- |
|
2 files changed, 17 insertions(+), 4 deletions(-) |
|
|
|
diff --git a/term-utils/agetty.8 b/term-utils/agetty.8 |
|
index a42cdf158..fe4bfd427 100644 |
|
--- a/term-utils/agetty.8 |
|
+++ b/term-utils/agetty.8 |
|
@@ -94,6 +94,10 @@ password. The \-f \fIusername\fP option is added to the \fB/bin/login\fP |
|
command line by default. The \-\-login-options option changes this default |
|
behaviour and then only \\u is replaced by the \fIusername\fP and no other |
|
option is added to the login command line. |
|
+ |
|
+Note that \fB\-\-autologin\fP may affect the way how agetty initializes the |
|
+serial line, because on auto-login agetty does not read from the line and it |
|
+has no opportunity optimize the line setting. |
|
.TP |
|
\-c, \-\-noreset |
|
Don't reset terminal cflags (control modes). See \fItermios(3)\fP for more |
|
diff --git a/term-utils/agetty.c b/term-utils/agetty.c |
|
index b626cdbeb..948d77246 100644 |
|
--- a/term-utils/agetty.c |
|
+++ b/term-utils/agetty.c |
|
@@ -1100,13 +1100,22 @@ static void termio_init(struct options *op, struct termios *tp) |
|
/* Flush input and output queues, important for modems! */ |
|
tcflush(STDIN_FILENO, TCIOFLUSH); |
|
|
|
+ /* The defaul is set c_iflag in termio_final() according to chardata. |
|
+ * Unfortunately, the chardata are not set according to the serial line |
|
+ * if --autolog is enabled. In this case we do not read from the line |
|
+ * at all. The best what we can do in this case is to keep c_iflag |
|
+ * unmodified for --autolog. |
|
+ */ |
|
+ if (!op->autolog) { |
|
#ifdef IUTF8 |
|
- tp->c_iflag = tp->c_iflag & IUTF8; |
|
- if (tp->c_iflag & IUTF8) |
|
- op->flags |= F_UTF8; |
|
+ tp->c_iflag = tp->c_iflag & IUTF8; |
|
+ if (tp->c_iflag & IUTF8) |
|
+ op->flags |= F_UTF8; |
|
#else |
|
- tp->c_iflag = 0; |
|
+ tp->c_iflag = 0; |
|
#endif |
|
+ } |
|
+ |
|
tp->c_lflag = 0; |
|
tp->c_oflag &= OPOST | ONLCR; |
|
|
|
-- |
|
2.14.4 |
|
|
|
|