- cp2 = fgets(cp, BUFSIZ - (cp - canonb), stdin);
- canonb[strlen(canonb) - 1] = '\0';
+ cp2 = cp;
+ while (cp2 < canonb + BUFSIZ)
+ *cp2++ = 0;
+ cp2 = cp;
+ if (setjmp(rewrite))
+ goto redo;
+# ifdef VMUNIX
+ sigset(SIGCONT, ttycont);
+# endif VMUNIX
+ clearerr(stdin);
+ while (cp2 < canonb + BUFSIZ) {
+ c = getc(stdin);
+ if (c == EOF || c == '\n')
+ break;
+ *cp2++ = c;
+ }
+ *cp2 = 0;
+# ifdef VMUNIX
+ sigset(SIGCONT, signull);
+# endif VMUNIX
+ if (c == EOF && ferror(stdin) && hadcont) {
+redo:
+ hadcont = 0;
+ cp = strlen(canonb) > 0 ? canonb : NOSTR;
+ clearerr(stdin);
+ return(readtty(pr, cp));
+ }