date and time created 83/02/11 15:45:06 by rrh
[unix-history] / usr / src / usr.bin / tip / tipout.c
index ea55ade..77613ac 100644 (file)
@@ -1,4 +1,4 @@
-/*     tipout.c        4.3     81/11/20        */
+/*     tipout.c        4.6     82/01/06        */
 #include "tip.h"
 /*
  * tip
 #include "tip.h"
 /*
  * tip
@@ -32,7 +32,7 @@ intEMT()
 
        signal(SIGEMT, SIG_IGN);
        read(fildes[0], &c, 1);
 
        signal(SIGEMT, SIG_IGN);
        read(fildes[0], &c, 1);
-       while(c != '\n') {
+       while (c != '\n') {
                *pline++ = c;
                read(fildes[0], &c, 1);
        }
                *pline++ = c;
                read(fildes[0], &c, 1);
        }
@@ -67,6 +67,7 @@ intSYS()
 {
        signal(SIGSYS, intSYS);
        boolean(value(BEAUTIFY)) = !boolean(value(BEAUTIFY));
 {
        signal(SIGSYS, intSYS);
        boolean(value(BEAUTIFY)) = !boolean(value(BEAUTIFY));
+       intflag = 1;
 }
 
 /*
 }
 
 /*
@@ -74,6 +75,10 @@ intSYS()
  */
 tipout()
 {
  */
 tipout()
 {
+       char buf[BUFSIZ];
+       register char *cp;
+       register int cnt;
+
        signal(SIGINT, SIG_IGN);
        signal(SIGQUIT, SIG_IGN);
        signal(SIGEMT, intEMT);         /* attention from TIPIN */
        signal(SIGINT, SIG_IGN);
        signal(SIGQUIT, SIG_IGN);
        signal(SIGEMT, intEMT);         /* attention from TIPIN */
@@ -82,18 +87,26 @@ tipout()
        signal(SIGHUP, intTERM);        /* for dial-ups */
        signal(SIGSYS, intSYS);         /* beautify toggle */
 
        signal(SIGHUP, intTERM);        /* for dial-ups */
        signal(SIGSYS, intSYS);         /* beautify toggle */
 
-       while(1) {
+       for (;;) {
                do {
                        intflag = 0;
                do {
                        intflag = 0;
-                       read(FD,&ch,1);
-                       ch &= 0177;
-               } while(intflag);
-               write(1, &ch, 1);
+                       cnt = read(FD, buf, BUFSIZ);
+               } while (intflag);
+               if (cnt <= 0)
+                       continue;
+               for (cp = buf; cp < buf + cnt; cp++)
+                       *cp &= 0177;
+               write(1, buf, cnt);
                if (boolean(value(SCRIPT)) && fscript != NULL) {
                if (boolean(value(SCRIPT)) && fscript != NULL) {
-                       if (boolean(value(BEAUTIFY)) && ch < 040 &&
-                           !any(ch, value(EXCEPTIONS)))
+                       if (!boolean(value(BEAUTIFY))) {
+                               fwrite(buf, 1, cnt, fscript);
+                               continue;
+                       }
+                       for (cp = buf; cp < buf + cnt; cp++) {
+                               if (*cp < ' ' && !any(*cp, value(EXCEPTIONS)))
                                        continue;
                                        continue;
-                       putc(ch, fscript);
+                               putc(*cp, fscript);
+                       }
                }
        }
 }
                }
        }
 }