summaryrefslogtreecommitdiffstats
path: root/term-utils
diff options
context:
space:
mode:
Diffstat (limited to 'term-utils')
-rw-r--r--term-utils/agetty.84
-rw-r--r--term-utils/agetty.c17
2 files changed, 17 insertions, 4 deletions
diff --git a/term-utils/agetty.8 b/term-utils/agetty.8
index fcb1fd5fe..5a480808d 100644
--- a/term-utils/agetty.8
+++ b/term-utils/agetty.8
@@ -93,6 +93,10 @@ Automatically log in the specified user without asking for a username or passwor
Using this option causes an \fB\-f \fIusername\fR option and argument to be
added to the \fB/bin/login\fP command line. See \fB\-\-login\-options\fR, which
can be used to modify this option's behavior.
+
+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
Do not reset terminal cflags (control modes). See \fBtermios\fP(3) for more
diff --git a/term-utils/agetty.c b/term-utils/agetty.c
index 844220401..e22600e28 100644
--- a/term-utils/agetty.c
+++ b/term-utils/agetty.c
@@ -1264,13 +1264,22 @@ static void termio_init(struct options *op, struct termios *tp)
* later on.
*/
+ /* 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;