Author: pluto Date: Wed Mar 9 14:18:24 2005 GMT
Module: SOURCES Tag: LINUX_2_6
---- Log message:
- fix from lkml.
---- Files affected:
SOURCES:
linux-2.6-pty-is-losing-bytes.patch (NONE -> 1.1.2.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/linux-2.6-pty-is-losing-bytes.patch
diff -u /dev/null SOURCES/linux-2.6-pty-is-losing-bytes.patch:1.1.2.1
--- /dev/null Wed Mar 9 15:18:24 2005
+++ SOURCES/linux-2.6-pty-is-losing-bytes.patch Wed Mar 9 15:18:19 2005
@@ -0,0 +1,66 @@
+--- linux-2.6.orig/drivers/char/n_tty.c 2005-02-16 16:01:35.000000000
+0100
++++ linux-2.6/drivers/char/n_tty.c 2005-02-16 19:17:13.053000548 +0100
+@@ -770,10 +770,8 @@ send_signal:
+ }
+ if (c == '\n') {
+ if (L_ECHO(tty) || L_ECHONL(tty)) {
+- if (tty->read_cnt >= N_TTY_BUF_SIZE-1) {
++ if (tty->read_cnt >= N_TTY_BUF_SIZE-1)
+ put_char('\a', tty);
+- return;
+- }
+ opost('\n', tty);
+ }
+ goto handle_newline;
+@@ -790,10 +788,8 @@ send_signal:
+ * XXX are EOL_CHAR and EOL2_CHAR echoed?!?
+ */
+ if (L_ECHO(tty)) {
+- if (tty->read_cnt >= N_TTY_BUF_SIZE-1) {
++ if (tty->read_cnt >= N_TTY_BUF_SIZE-1)
+ put_char('\a', tty);
+- return;
+- }
+ /* Record the column of first canon char. */
+ if (tty->canon_head == tty->read_head)
+ tty->canon_column = tty->column;
+@@ -862,12 +858,9 @@ static int n_tty_receive_room(struct tty
+ * that erase characters will be handled. Other excess
+ * characters will be beeped.
+ */
+- if (tty->icanon && !tty->canon_data)
+- return N_TTY_BUF_SIZE;
+-
+- if (left > 0)
+- return left;
+- return 0;
++ if (left <= 0)
++ left = tty->icanon && !tty->canon_data;
++ return left;
+ }
+
+ /**
+@@ -1473,13 +1466,17 @@ static ssize_t write_chan(struct tty_str
+ if (tty->driver->flush_chars)
+ tty->driver->flush_chars(tty);
+ } else {
+- c = tty->driver->write(tty, b, nr);
+- if (c < 0) {
+- retval = c;
+- goto break_out;
++ while (nr > 0) {
++ c = tty->driver->write(tty, b, nr);
++ if (c < 0) {
++ retval = c;
++ goto break_out;
++ }
++ if (!c)
++ break;
++ b += c;
++ nr -= c;
+ }
+- b += c;
+- nr -= c;
+ }
+ if (!nr)
+ break;
================================================================
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit