[git commit master 1/1] conspy: stop losing some keyboard keys.

Denys Vlasenko vda.linux at googlemail.com
Thu Jul 1 05:18:41 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=81199672bed1446fa6b584728c92ecfb11bc530b
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

11 bytes shrink.

Signed-off-by: Pascal Bellard <pascal.bellard at ads-lu.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 miscutils/conspy.c |   20 +++++++++++---------
 1 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/miscutils/conspy.c b/miscutils/conspy.c
index 565922c..3f341ce 100644
--- a/miscutils/conspy.c
+++ b/miscutils/conspy.c
@@ -517,21 +517,23 @@ int conspy_main(int argc UNUSED_PARAM, char **argv)
 			G.key_count += bytes_read;
 			handle = xopen(tty_name, O_WRONLY);
 			result = ioctl(handle, KDGKBMODE, &kbd_mode);
-			if (result == -1)
-				/* nothing */;
-			else if (kbd_mode != K_XLATE && kbd_mode != K_UNICODE)
-				G.key_count = 0; // scan code mode
-			else {
+			if (result >= 0) {
 				char *p = keybuf;
-				for (; G.key_count != 0 && result != -1; p++, G.key_count--) {
+
+				if (kbd_mode != K_XLATE && kbd_mode != K_UNICODE) {
+					G.key_count = 0; // scan code mode
+				}
+				for (; G.key_count != 0; p++, G.key_count--) {
 					result = ioctl(handle, TIOCSTI, p);
+					if (result < 0) {
+						memmove(keybuf, p, G.key_count);
+						break;
+					}
 					// If there is an application on console which reacts
 					// to keypresses, we need to make our first sleep
 					// shorter to quickly redraw whatever it printed there.
 					poll_timeout_ms = 20;
 				}
-				if (G.key_count)
-					memmove(keybuf, p, G.key_count);
 			}
 			// Close & re-open tty in case they have
 			// swapped virtual consoles
@@ -539,7 +541,7 @@ int conspy_main(int argc UNUSED_PARAM, char **argv)
 
 			// We sometimes get spurious IO errors on the TTY
 			// as programs close and re-open it
-			if (result != -1)
+			if (result >= 0)
 				G.ioerror_count = 0;
 			else if (errno != EIO || ++G.ioerror_count > 4)
 				cleanup(1);
-- 
1.7.1



More information about the busybox-cvs mailing list