On Monday 16 September 2013 14:22, John Spencer wrote:
> saves 9 bytes.
> 
> Signed-off-by: John Spencer <[email protected]>

How about this?

function                                             old     new   delta
dumpkmap_main                                        223     160     -63
 
diff -ad -urpN busybox.1/console-tools/dumpkmap.c busybox.2/console-tools/dumpkmap.c
--- busybox.1/console-tools/dumpkmap.c	2013-07-25 03:48:30.000000000 +0200
+++ busybox.2/console-tools/dumpkmap.c	2013-09-17 02:17:26.000000000 +0200
@@ -36,47 +36,53 @@ int dumpkmap_main(int argc UNUSED_PARAM,
 {
 	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);
+#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",
+	/*****/sizeof("bkeymap\1\1\1\0\1\1\1\0\1\1\1\0\1")-1
+	);
+	write(STDOUT_FILENO, flags, 7 + MAX_NR_KEYMAPS);
+#endif
 
-	for (i = 0; i < MAX_NR_KEYMAPS; i++) {
-		if (flags[i] == 1) {
+	for (i = 0; i < 13; i++) {
+		if (flags[7 + 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;
 }
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to