X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=loadkmap.c;h=4f217d6304cc104e0743353d29bf2c0953d113f5;hb=8aa0b62a885e1a0f125e4cd47d993fa7025daf36;hp=0e8c090d2fef255bd20330248403aa8d50c277f2;hpb=bd22ed806782eec76929bcd2ec556717e79d24c7;p=oweals%2Fbusybox.git diff --git a/loadkmap.c b/loadkmap.c index 0e8c090d2..4f217d630 100644 --- a/loadkmap.c +++ b/loadkmap.c @@ -20,11 +20,16 @@ * */ -#include "internal.h" #include #include #include +#include +#include +#include #include +#include "busybox.h" + +#define BINARY_KEYMAP_MAGIC "bkeymap" /* From */ struct kbentry { @@ -32,65 +37,41 @@ struct kbentry { unsigned char kb_index; unsigned short kb_value; }; -#define KDSKBENT 0x4B47 /* sets one entry in translation table */ +static const int KDSKBENT = 0x4B47; /* sets one entry in translation table */ /* From */ -#define NR_KEYS 128 -#define MAX_NR_KEYMAPS 256 - - -static const char loadkmap_usage[] = "loadkmap\n" -#ifndef BB_FEATURE_TRIVIAL_HELP - "Loads a binary keyboard translation table from standard input.\n" -#endif - ; - +static const int NR_KEYS = 128; +static const int MAX_NR_KEYMAPS = 256; int loadkmap_main(int argc, char **argv) { struct kbentry ke; u_short *ibuff; int i, j, fd, readsz, pos, ibuffsz = NR_KEYS * sizeof(u_short); - char flags[MAX_NR_KEYMAPS], magic[] = "bkeymap", buff[7]; + char flags[MAX_NR_KEYMAPS], buff[7]; - if (argc>=2 && *argv[1]=='-') { - usage(loadkmap_usage); - } + if (argc != 1) + show_usage(); - fd = open("/dev/tty0", O_RDWR); - if (fd < 0) { - fprintf(stderr, "Error opening /dev/tty0: %s\n", strerror(errno)); - exit(FALSE); - } + fd = open(CURRENT_VC, O_RDWR); + if (fd < 0) + perror_msg_and_die("Error opening " CURRENT_VC); read(0, buff, 7); - if (0 != strncmp(buff, magic, 7)) { - fprintf(stderr, "This is not a valid binary keymap.\n"); - exit(FALSE); - } + if (0 != strncmp(buff, BINARY_KEYMAP_MAGIC, 7)) + error_msg_and_die("This is not a valid binary keymap."); - if (MAX_NR_KEYMAPS != read(0, flags, MAX_NR_KEYMAPS)) { - fprintf(stderr, "Error reading keymap flags: %s\n", - strerror(errno)); - exit(FALSE); - } + if (MAX_NR_KEYMAPS != read(0, flags, MAX_NR_KEYMAPS)) + perror_msg_and_die("Error reading keymap flags"); - ibuff = (u_short *) malloc(ibuffsz); - if (!ibuff) { - fprintf(stderr, "Out of memory.\n"); - exit(FALSE); - } + ibuff = (u_short *) xmalloc(ibuffsz); for (i = 0; i < MAX_NR_KEYMAPS; i++) { if (flags[i] == 1) { pos = 0; while (pos < ibuffsz) { - if ((readsz = read(0, (char *) ibuff + pos, ibuffsz - pos)) - < 0) { - fprintf(stderr, "Error reading keymap: %s\n", - strerror(errno)); - exit(FALSE); - } + if ((readsz = read(0, (char *) ibuff + pos, ibuffsz - pos)) < 0) + perror_msg_and_die("Error reading keymap"); pos += readsz; } for (j = 0; j < NR_KEYS; j++) { @@ -104,5 +85,5 @@ int loadkmap_main(int argc, char **argv) /* Don't bother to close files. Exit does that * automagically, so we can save a few bytes */ /* close(fd); */ - return(TRUE); + return EXIT_SUCCESS; }