SCCS-vsn: usr.bin/tip/tip.c 5.11
SCCS-vsn: usr.bin/tip/tip.c 5.11
#endif /* not lint */
#ifndef lint
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)tip.c 5.10 (Berkeley) %G%";
+static char sccsid[] = "@(#)tip.c 5.11 (Berkeley) %G%";
}
static char partab[0200];
}
static char partab[0200];
/*
* Do a write to the remote machine with the correct parity.
/*
* Do a write to the remote machine with the correct parity.
extern int errno;
bp = buf;
extern int errno;
bp = buf;
- for (i = 0; i < n; i++) {
- *bp = partab[(*bp) & 0177];
- bp++;
- }
+ if (bits8 == 0)
+ for (i = 0; i < n; i++) {
+ *bp = partab[(*bp) & 0177];
+ bp++;
+ }
if (write(fd, buf, n) < 0) {
if (errno == EIO)
abort("Lost carrier.");
if (write(fd, buf, n) < 0) {
if (errno == EIO)
abort("Lost carrier.");
if (value(PARITY) == NOSTR)
value(PARITY) = defparity;
parity = value(PARITY);
if (value(PARITY) == NOSTR)
value(PARITY) = defparity;
parity = value(PARITY);
+ if (equal(parity, "none")) {
+ bits8 = 1;
+ return;
+ } else
+ bits8 = 0;
for (i = 0; i < 0200; i++)
partab[i] = evenpartab[i];
if (equal(parity, "even"))
for (i = 0; i < 0200; i++)
partab[i] = evenpartab[i];
if (equal(parity, "even"))
partab[i] ^= 0200; /* reverse bit 7 */
return;
}
partab[i] ^= 0200; /* reverse bit 7 */
return;
}
- if (equal(parity, "none") || equal(parity, "zero")) {
+ if (equal(parity, "zero")) {
for (i = 0; i < 0200; i++)
partab[i] &= ~0200; /* turn off bit 7 */
return;
for (i = 0; i < 0200; i++)
partab[i] &= ~0200; /* turn off bit 7 */
return;