Fix a bug when talking to non-freebsd machines where carriage return
was being interperated and displayed as ^M on the remote side. Old curses used to change the behavior of the tty and how carriage return was interperated via STDIN. ncurses does this on a per-window basis within the library rather than using the tty modes. Since talk is bypassing ncurses, it was missing the conversion. Reviewed by: peter
This commit is contained in:
parent
93ea51b60e
commit
4f81558e41
@ -103,10 +103,14 @@ talk()
|
|||||||
* We can't make the tty non_blocking, because
|
* We can't make the tty non_blocking, because
|
||||||
* curses's output routines would screw up
|
* curses's output routines would screw up
|
||||||
*/
|
*/
|
||||||
|
int i;
|
||||||
ioctl(0, FIONREAD, (struct sgttyb *) &nb);
|
ioctl(0, FIONREAD, (struct sgttyb *) &nb);
|
||||||
nb = read(0, buf, nb);
|
nb = read(0, buf, nb);
|
||||||
display(&my_win, buf, nb);
|
display(&my_win, buf, nb);
|
||||||
/* might lose data here because sockt is non-blocking */
|
/* might lose data here because sockt is non-blocking */
|
||||||
|
for (i = 0; i < nb; ++i)
|
||||||
|
if (buf[i] == '\r')
|
||||||
|
buf[i] = '\n';
|
||||||
write(sockt, buf, nb);
|
write(sockt, buf, nb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user