diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2003-11-21 12:27:02 +0300 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2003-11-21 12:27:02 +0300 |
commit | acbdc47aac6c01d15522e8c921cd010b8ea958d6 (patch) | |
tree | 8424826bfd1129602178a9813bcb4f55126e7a50 /console-tools/loadkmap.c | |
parent | 2cd1eb16ad0131674251eeceed23298e29361d51 (diff) |
Make use of libbb functions bb_xopen, bb_full_read, used #define's
instead of static consts, avoid xmalloc.
Diffstat (limited to 'console-tools/loadkmap.c')
-rw-r--r-- | console-tools/loadkmap.c | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/console-tools/loadkmap.c b/console-tools/loadkmap.c index f4208df63..5b2f31abc 100644 --- a/console-tools/loadkmap.c +++ b/console-tools/loadkmap.c @@ -37,43 +37,35 @@ struct kbentry { unsigned char kb_index; unsigned short kb_value; }; -static const int KDSKBENT = 0x4B47; /* sets one entry in translation table */ +/* sets one entry in translation table */ +#define KDSKBENT 0x4B47 /* From <linux/keyboard.h> */ -static const int NR_KEYS = 128; -static const int MAX_NR_KEYMAPS = 256; +#define NR_KEYS 128 +#define 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], buff[7]; + int i, j, fd; + u_short ibuff[NR_KEYS]; + char flags[MAX_NR_KEYMAPS]; + char buff[7]; if (argc != 1) bb_show_usage(); - fd = open(CURRENT_VC, O_RDWR); - if (fd < 0) - bb_perror_msg_and_die("Error opening " CURRENT_VC); + fd = bb_xopen(CURRENT_VC, O_RDWR); - read(0, buff, 7); - if (0 != strncmp(buff, BINARY_KEYMAP_MAGIC, 7)) + if ((bb_full_read(0, buff, 7) != 7) || (strncmp(buff, BINARY_KEYMAP_MAGIC, 7) != 0)) bb_error_msg_and_die("This is not a valid binary keymap."); - if (MAX_NR_KEYMAPS != read(0, flags, MAX_NR_KEYMAPS)) + if (bb_full_read(0, flags, MAX_NR_KEYMAPS) != MAX_NR_KEYMAPS) bb_perror_msg_and_die("Error reading keymap flags"); - 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) - bb_perror_msg_and_die("Error reading keymap"); - pos += readsz; - } + bb_full_read(0, ibuff, NR_KEYS * sizeof(u_short)); for (j = 0; j < NR_KEYS; j++) { ke.kb_index = j; ke.kb_table = i; @@ -82,6 +74,7 @@ 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); */ |