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 <[email protected]>
  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;
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to