[git commit] dumpkmap: code shrink

Denys Vlasenko vda.linux at googlemail.com
Tue Sep 17 12:16:25 UTC 2013


commit: http://git.busybox.net/busybox/commit/?id=32ed30d96b56ea7322218061f09e62feda9948e3
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
dumpkmap_main                                        223     160     -63

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 console-tools/dumpkmap.c |   37 +++++++++++++++++++++++--------------
 1 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/console-tools/dumpkmap.c b/console-tools/dumpkmap.c
index 6b923d2..bf8d690 100644
--- a/console-tools/dumpkmap.c
+++ b/console-tools/dumpkmap.c
@@ -36,47 +36,56 @@ int dumpkmap_main(int argc UNUSED_PARAM, char **argv)
 {
 	struct kbentry ke;
 	int i, j, fd;
-	RESERVE_CONFIG_BUFFER(flags, MAX_NR_KEYMAPS);
+#define flags bb_common_bufsiz1
 
 	/* When user accidentally runs "dumpkmap FILE"
 	 * instead of "dumpkmap >FILE", we'd dump binary stuff to tty.
-	 * Let's prevent it: */
+	 * Let's prevent it:
+	 */
 	if (argv[1])
 		bb_show_usage();
 /*	bb_warn_ignoring_args(argv[1]);*/
 
 	fd = get_console_fd_or_die();
 
+#if 0
 	write(STDOUT_FILENO, "bkeymap", 7);
-
 	/* Here we want to set everything to 0 except for indexes:
-	 * [0-2] [4-6] [8-10] [12] */
-	memset(flags, 0x00, MAX_NR_KEYMAPS);
+	 * [0-2] [4-6] [8-10] [12]
+	 */
+	/*memset(flags, 0x00, MAX_NR_KEYMAPS); - already is */
 	memset(flags, 0x01, 13);
 	flags[3] = flags[7] = flags[11] = 0;
-
 	/* dump flags */
 	write(STDOUT_FILENO, flags, MAX_NR_KEYMAPS);
+#define flags7 flags
+#else
+	/* Same effect */
+	/*                     0 1 2 3 4 5 6 7 8 9 a b c=12 */
+	memcpy(flags, "bkeymap\1\1\1\0\1\1\1\0\1\1\1\0\1",
+	/* Can use sizeof, or sizeof-1. sizeof is even, using that */
+	/****/ sizeof("bkeymap\1\1\1\0\1\1\1\0\1\1\1\0\1")
+	);
+	write(STDOUT_FILENO, flags, 7 + MAX_NR_KEYMAPS);
+#define flags7 (flags + 7)
+#endif
 
-	for (i = 0; i < MAX_NR_KEYMAPS; i++) {
-		if (flags[i] == 1) {
+	for (i = 0; i < 13; i++) {
+		if (flags7[i]) {
 			for (j = 0; j < NR_KEYS; j++) {
 				ke.kb_index = j;
 				ke.kb_table = i;
 				if (!ioctl_or_perror(fd, KDGKBENT, &ke,
-						"ioctl failed with %s, %s, %p",
-						(char *)&ke.kb_index,
-						(char *)&ke.kb_table,
-						&ke.kb_value)
+						"ioctl(KDGKBENT{%d,%d}) failed",
+						j, i)
 				) {
-					write(STDOUT_FILENO, (void*)&ke.kb_value, 2);
+					write(STDOUT_FILENO, &ke.kb_value, 2);
 				}
 			}
 		}
 	}
 	if (ENABLE_FEATURE_CLEAN_UP) {
 		close(fd);
-		RELEASE_CONFIG_BUFFER(flags);
 	}
 	return EXIT_SUCCESS;
 }


More information about the busybox-cvs mailing list