dumpkmap: code shrink
function old new delta dumpkmap_main 223 160 -63 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		| @@ -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; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user