svn commit: r364112 - head/usr.bin/script

Mark Johnston markj at FreeBSD.org
Tue Aug 11 14:19:06 UTC 2020


Author: markj
Date: Tue Aug 11 14:19:05 2020
New Revision: 364112
URL: https://svnweb.freebsd.org/changeset/base/364112

Log:
  script: Minor cleanups.
  
  - Instead of using isatty() to decide whether to call tcgetattr(), just
    call tcgetattr() directly, since that's all that isatty() does anyway.
  - Simplify error handling in termset().  Check for errno != ENOTTY from
    tcgetattr() to handle errors that may be raised while running
    script(1) under a debugger.
  
  PR:		248377
  Submitted by:	Soumendra Ganguly <soumendraganguly at gmail.com>
  MFC after:	1 week

Modified:
  head/usr.bin/script/script.c

Modified: head/usr.bin/script/script.c
==============================================================================
--- head/usr.bin/script/script.c	Tue Aug 11 13:51:48 2020	(r364111)
+++ head/usr.bin/script/script.c	Tue Aug 11 14:19:05 2020	(r364112)
@@ -176,16 +176,16 @@ main(int argc, char *argv[])
 	if (pflg)
 		playback(fscript);
 
-	if ((ttyflg = isatty(STDIN_FILENO)) != 0) {
-		if (tcgetattr(STDIN_FILENO, &tt) == -1)
-			err(1, "tcgetattr");
-		if (ioctl(STDIN_FILENO, TIOCGWINSZ, &win) == -1)
-			err(1, "ioctl");
-		if (openpty(&master, &slave, NULL, &tt, &win) == -1)
+	if (tcgetattr(STDIN_FILENO, &tt) == -1 ||
+	    ioctl(STDIN_FILENO, TIOCGWINSZ, &win) == -1) {
+		if (errno != ENOTTY) /* For debugger. */
+			err(1, "tcgetattr/ioctl");
+		if (openpty(&master, &slave, NULL, NULL, NULL) == -1)
 			err(1, "openpty");
 	} else {
-		if (openpty(&master, &slave, NULL, NULL, NULL) == -1)
+		if (openpty(&master, &slave, NULL, &tt, &win) == -1)
 			err(1, "openpty");
+		ttyflg = 1;
 	}
 
 	if (rawout)
@@ -433,9 +433,8 @@ termset(void)
 	struct termios traw;
 
 	if (tcgetattr(STDOUT_FILENO, &tt) == -1) {
-		if (errno == EBADF)
-			err(1, "%d not valid fd", STDOUT_FILENO);
-		/* errno == ENOTTY */
+		if (errno != ENOTTY) /* For debugger. */
+			err(1, "tcgetattr");
 		return;
 	}
 	ttyflg = 1;


More information about the svn-src-head mailing list