X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=console-tools%2Fdumpkmap.c;h=5b5b296b4581ca1b568d24862dc5653fac62c8be;hb=d1b6078e5d614993de2a858e85f1dc06cfe5539b;hp=3ff5ef691a49dde95797f35232a846ef1092e67f;hpb=f57c944e09417edcbcd69f2b01b937cadef39db2;p=oweals%2Fbusybox.git diff --git a/console-tools/dumpkmap.c b/console-tools/dumpkmap.c index 3ff5ef691..5b5b296b4 100644 --- a/console-tools/dumpkmap.c +++ b/console-tools/dumpkmap.c @@ -20,11 +20,14 @@ * */ -#include "busybox.h" #include #include #include +#include +#include +#include #include +#include "busybox.h" /* From */ struct kbentry { @@ -32,11 +35,11 @@ struct kbentry { unsigned char kb_index; unsigned short kb_value; }; -#define KDGKBENT 0x4B46 /* gets one entry in translation table */ +#define KDGKBENT 0x4B46 /* gets one entry in translation table */ /* From */ -#define NR_KEYS 128 -#define MAX_NR_KEYMAPS 256 +#define NR_KEYS 128 +#define MAX_NR_KEYMAPS 256 int dumpkmap_main(int argc, char **argv) { @@ -44,32 +47,21 @@ int dumpkmap_main(int argc, char **argv) int i, j, fd; char flags[MAX_NR_KEYMAPS], magic[] = "bkeymap"; - if (argc>=2 && *argv[1]=='-') { - usage(dumpkmap_usage); - } + if (argc >= 2 && *argv[1] == '-') + bb_show_usage(); - fd = open("/dev/tty0", O_RDWR); - if (fd < 0) { - error_msg("Error opening /dev/tty0: %s\n", strerror(errno)); - return EXIT_FAILURE; - } + fd = bb_xopen(CURRENT_VC, O_RDWR); write(1, magic, 7); - for (i=0; i < MAX_NR_KEYMAPS; i++) flags[i]=0; - flags[0]=1; - flags[1]=1; - flags[2]=1; - flags[4]=1; - flags[5]=1; - flags[6]=1; - flags[8]=1; - flags[9]=1; - flags[10]=1; - flags[12]=1; - + /* Here we want to set everything to 0 except for indexes: + * [0-2] [4-6] [8-10] [12] */ + memset(flags, 0x00, MAX_NR_KEYMAPS); + memset(flags, 0x01, 13); + flags[3] = flags[7] = flags[11] = 0; + /* dump flags */ - for (i=0; i < MAX_NR_KEYMAPS; i++) write(1,&flags[i],1); + write(1, flags, MAX_NR_KEYMAPS); for (i = 0; i < MAX_NR_KEYMAPS; i++) { if (flags[i] == 1) { @@ -77,13 +69,13 @@ int dumpkmap_main(int argc, char **argv) ke.kb_index = j; ke.kb_table = i; if (ioctl(fd, KDGKBENT, &ke) < 0) { - - error_msg("ioctl returned: %s, %s, %s, %xqq\n",strerror(errno),(char *)&ke.kb_index,(char *)&ke.kb_table,(int)&ke.kb_value); - } - else { - write(1,(void*)&ke.kb_value,2); - } - + bb_perror_msg("ioctl failed with %s, %s, %p", + (char *)&ke.kb_index, + (char *)&ke.kb_table, + &ke.kb_value); + } else { + write(1, (void*)&ke.kb_value, 2); + } } } }