X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=console-tools%2Fdumpkmap.c;h=5b5b296b4581ca1b568d24862dc5653fac62c8be;hb=d1b6078e5d614993de2a858e85f1dc06cfe5539b;hp=f1805052960f1f0e33446b433be8f21e027550c8;hpb=d537a95fdbc0b4a5f38edea8593b4c085fdd7fcb;p=oweals%2Fbusybox.git diff --git a/console-tools/dumpkmap.c b/console-tools/dumpkmap.c index f18050529..5b5b296b4 100644 --- a/console-tools/dumpkmap.c +++ b/console-tools/dumpkmap.c @@ -20,11 +20,14 @@ * */ -#include "internal.h" #include #include #include +#include +#include +#include #include +#include "busybox.h" /* From */ struct kbentry { @@ -32,19 +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 - - -static const char dumpkmap_usage[] = "dumpkmap\n" -#ifndef BB_FEATURE_TRIVIAL_HELP - "\nPrints out a binary keyboard translation table to standard input.\n" -#endif - ; - +#define NR_KEYS 128 +#define MAX_NR_KEYMAPS 256 int dumpkmap_main(int argc, char **argv) { @@ -52,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) { - errorMsg("Error opening /dev/tty0: %s\n", strerror(errno)); - return 1; - } + 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) { @@ -85,16 +69,16 @@ int dumpkmap_main(int argc, char **argv) ke.kb_index = j; ke.kb_table = i; if (ioctl(fd, KDGKBENT, &ke) < 0) { - - errorMsg("ioctl returned: %s, %s, %s, %xqq\n",strerror(errno),(char *)&ke.kb_index,(char *)&ke.kb_table,(int)&ke.kb_value); - } - else { - write(1,&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); + } } } } close(fd); - return 0; + return EXIT_SUCCESS; }