- cp2 = fgets(cp, BUFSIZ - (cp - canonb), stdin);
- cp = index(canonb, '\n');
- if (cp != NOSTR)
- *cp = 0;
+ cp2 = cp;
+ while (cp2 < canonb + BUFSIZ)
+ *cp2++ = 0;
+ cp2 = cp;
+ if (setjmp(rewrite))
+ goto redo;
+# ifdef VMUNIX
+ sigset(SIGCONT, ttycont);
+# endif VMUNIX
+ 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));
+ }