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.
73 lines
2.6 KiB
73 lines
2.6 KiB
6 years ago
|
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
|
||
|
|