showkey: code shrink
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 29 Aug 2010 03:00:40 +0000 (05:00 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 29 Aug 2010 03:00:40 +0000 (05:00 +0200)
function                                             old     new   delta
signal_handler                                        52      45      -7
showkey_main                                         461     454      -7
xset1                                                 40      29     -11

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
console-tools/showkey.c

index ef16f6fb1b8dd84d1e1d6ae9d7d0482526f4d7bb..149ea64659f2f13b50fe34ac9768ab22954f77cc 100644 (file)
 // set raw tty mode
 // also used by microcom
 // libbb candidates?
-static void xget1(int fd, struct termios *t, struct termios *oldt)
+static void xget1(struct termios *t, struct termios *oldt)
 {
-       tcgetattr(fd, oldt);
+       tcgetattr(STDIN_FILENO, oldt);
        *t = *oldt;
        cfmakeraw(t);
 }
 
-static int xset1(int fd, struct termios *tio, const char *device)
+static void xset1(struct termios *tio)
 {
-       int ret = tcsetattr(fd, TCSAFLUSH, tio);
-
+       int ret = tcsetattr(STDIN_FILENO, TCSAFLUSH, tio);
        if (ret) {
-               bb_perror_msg("can't tcsetattr for %s", device);
+               bb_perror_msg("can't tcsetattr for stdin");
        }
-       return ret;
 }
 
 /*
@@ -49,7 +47,7 @@ struct globals {
 static void signal_handler(int signo)
 {
        // restore keyboard and console settings
-       xset1(STDIN_FILENO, &tio0, "stdin");
+       xset1(&tio0);
        xioctl(STDIN_FILENO, KDSKBMODE, (void *)(ptrdiff_t)kbmode);
        // alarmed? -> exit 0
        exit(SIGALRM == signo);
@@ -79,15 +77,15 @@ int showkey_main(int argc UNUSED_PARAM, char **argv)
                , (option_mask32 & OPT_a) ? "when CTRL+D pressed" : "10s after last keypress"
        );
        // prepare for raw mode
-       xget1(STDIN_FILENO, &tio, &tio0);
+       xget1(&tio, &tio0);
        // put stdin in raw mode
-       xset1(STDIN_FILENO, &tio, "stdin");
+       xset1(&tio);
 
        if (option_mask32 & OPT_a) {
-               char c;
+               unsigned char c;
                // just read stdin char by char
                while (1 == safe_read(STDIN_FILENO, &c, 1)) {
-                       printf("%3d 0%03o 0x%02x\r\n", c, c, c);
+                       printf("%3u 0%03o 0x%02x\r\n", c, c, c);
                        if (04 /*CTRL-D*/ == c)
                                break;
                }
@@ -114,16 +112,18 @@ int showkey_main(int argc UNUSED_PARAM, char **argv)
                                // show interpreted scancodes (default) ? ->
                                } else {
                                        int kc;
-                                       if (i+2 < n && (c & 0x7f) == 0
-                                               && (buf[i+1] & 0x80) != 0
-                                               && (buf[i+2] & 0x80) != 0) {
+                                       if (i+2 < n
+                                        && (c & 0x7f) == 0
+                                        && (buf[i+1] & 0x80) != 0
+                                        && (buf[i+2] & 0x80) != 0
+                                       ) {
                                                kc = ((buf[i+1] & 0x7f) << 7) | (buf[i+2] & 0x7f);
                                                i += 3;
                                        } else {
                                                kc = (c & 0x7f);
                                                i++;
                                        }
-                                       printf("keycode %3d %s", kc, (c & 0x80) ? "release" : "press");
+                                       printf("keycode %3u %s", kc, (c & 0x80) ? "release" : "press");
                                }
                        }
                        puts("\r");