![](https://seccdn.libravatar.org/avatar/e2145bc5cf53dda95c308a3c75e8fef3.jpg?s=120&d=mm&r=g)
Hello community, here is the log from the commit of package util-linux for openSUSE:Factory checked in at 2014-01-13 16:53:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/util-linux (Old) and /work/SRC/openSUSE:Factory/.util-linux.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "util-linux" Changes: -------- --- /work/SRC/openSUSE:Factory/util-linux/util-linux.changes 2013-12-16 07:15:13.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.util-linux.new/util-linux.changes 2014-01-13 16:53:17.000000000 +0100 @@ -1,0 +2,9 @@ +Fri Jan 10 13:08:45 UTC 2014 - werner@suse.de + +- Add patch + agetty-fooled-on-serial-line-due-plymouth.patch + even with TTYReset=no it seems with systemd or plymouth the termios + flags become changed from under the first agetty on a serial system + console as the flags are locked (bnc#774126). + +------------------------------------------------------------------- New: ---- agetty-fooled-on-serial-line-due-plymouth.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ util-linux.spec ++++++ --- /var/tmp/diff_new_pack.oTgaMJ/_old 2014-01-13 16:53:18.000000000 +0100 +++ /var/tmp/diff_new_pack.oTgaMJ/_new 2014-01-13 16:53:18.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package util-linux # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -108,6 +108,8 @@ Patch13: blkdiscard-BLKSSZGET-fills-in-an-int.patch # PATCH-FIX-SUSE -- better support of S390 in agetty Patch14: tty3270-on-serial-line-of-s390.patch +# PATCH-FIX-SUSE -- Let agetty not be fooled by locked termios srtucture +Patch15: agetty-fooled-on-serial-line-due-plymouth.patch # hack for boot.localfs Patch20: util-linux-HACK-boot.localfs.diff @@ -226,6 +228,7 @@ %patch12 -p1 %patch13 -p1 %patch14 -p0 +%patch15 -p0 # %patch20 -p1 # ++++++ agetty-fooled-on-serial-line-due-plymouth.patch ++++++ Even with TTYReset=no it seems with systemd or plymouth the termios flags become changed from under the first agetty on a serial system console as the flags are locked. --- agetty.c | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) --- term-utils/agetty.c +++ term-utils/agetty.c 2014-01-10 13:05:50.411075349 +0000 @@ -281,8 +281,9 @@ static void login_options_to_argv(char * static char *fakehost; #ifdef DEBUGGING +# include "closestream.h" # ifndef DEBUG_OUTPUT -# define DEBUG_OUTPUT "/dev/ttyp0" +# define DEBUG_OUTPUT "/dev/tty10" # endif # define debug(s) do { fprintf(dbf,s); fflush(dbf); } while (0) FILE *dbf; @@ -320,8 +321,12 @@ int main(int argc, char **argv) #ifdef DEBUGGING dbf = fopen(DEBUG_OUTPUT, "w"); - for (int i = 1; i < argc; i++) + for (int i = 1; i < argc; i++) { + if (i > 1) + debug(" "); debug(argv[i]); + } + debug("\n"); #endif /* DEBUGGING */ /* Parse command-line arguments. */ @@ -473,7 +478,6 @@ int main(int argc, char **argv) if (options.osrelease) free(options.osrelease); #ifdef DEBUGGING - fprintf(dbf, "read %c\n", ch); if (close_stream(dbf) != 0) log_err("write failed: %s", DEBUG_OUTPUT); #endif @@ -1090,6 +1094,23 @@ static void termio_init(struct options * { speed_t ispeed, ospeed; struct winsize ws; + int i; + + for (i = 0; i < 20; i++) { + /* + * Even with TTYReset=no it seems with systemd or plymouth + * the termios flags become changed from under the first + * agetty on a serial system console as the flags are locked. + */ + struct termios lock; + memset(&lock, 0, sizeof(struct termios)); + if (ioctl(STDIN_FILENO, TIOCGLCKTRMIOS, &lock) < 0) + break; + if (!lock.c_iflag && !lock.c_oflag && !lock.c_cflag && !lock.c_lflag) + break; + debug("termios locked\n"); + tcsendbreak(STDIN_FILENO, 0); /* 0.25 upto 0.5 seconds */ + } if (op->flags & F_VCONSOLE) { #if defined(IUTF8) && defined(KDGKBMODE) @@ -1154,9 +1175,6 @@ static void termio_init(struct options * * later on. */ - /* Flush input and output queues, important for modems! */ - tcflush(STDIN_FILENO, TCIOFLUSH); - #ifdef IUTF8 tp->c_iflag = tp->c_iflag & IUTF8; if (tp->c_iflag & IUTF8) @@ -1216,8 +1234,11 @@ static void termio_init(struct options * if (op->flags & F_RTSCTS) tp->c_cflag |= CRTSCTS; #endif + /* Flush input and output queues, important for modems! */ + tcflush(STDIN_FILENO, TCIOFLUSH); - tcsetattr(STDIN_FILENO, TCSANOW, tp); + if (tcsetattr(STDIN_FILENO, TCSANOW, tp)) + log_warn(_("setting terminal attributes failed: %m")); /* Go to blocking input even in local mode. */ fcntl(STDIN_FILENO, F_SETFL, @@ -1238,6 +1259,10 @@ static void reset_vc(const struct option if (tcsetattr(STDIN_FILENO, TCSADRAIN, tp)) log_warn(_("setting terminal attributes failed: %m")); + + /* Go to blocking input even in local mode. */ + fcntl(STDIN_FILENO, F_SETFL, + fcntl(STDIN_FILENO, F_GETFL, 0) & ~O_NONBLOCK); } /* Extract baud rate from modem status message. */ -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org