X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=console-tools%2Fsetkeycodes.c;h=3de5f98568ab26425340586438a940f54498c459;hb=ebeaea04dc2b2e75048262355fbfb970e5c92595;hp=607b8c78570738553d83849c2801b1b40b44af4b;hpb=8fafacd7ec2ea70cb46b28e59c4c9b7473c44ca9;p=oweals%2Fbusybox.git diff --git a/console-tools/setkeycodes.c b/console-tools/setkeycodes.c index 607b8c785..3de5f9856 100644 --- a/console-tools/setkeycodes.c +++ b/console-tools/setkeycodes.c @@ -9,12 +9,8 @@ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. */ -#include -#include -#include -#include -#include "busybox.h" - +//#include +#include "libbb.h" /* From */ struct kbkeycode { @@ -24,10 +20,9 @@ enum { KDSETKEYCODE = 0x4B4D /* write kernel keycode table entry */ }; -extern int -setkeycodes_main(int argc, char** argv) +int setkeycodes_main(int argc, char** argv); +int setkeycodes_main(int argc, char** argv) { - char *ep; int fd, sc; struct kbkeycode a; @@ -38,21 +33,15 @@ setkeycodes_main(int argc, char** argv) fd = get_console_fd(); while (argc > 2) { - a.keycode = atoi(argv[2]); - a.scancode = sc = strtol(argv[1], &ep, 16); - if (*ep) { - bb_error_msg_and_die("error reading SCANCODE: '%s'", argv[1]); - } + a.keycode = xatoul_range(argv[2], 0, 127); + a.scancode = sc = xstrtoul_range(argv[1], 16, 0, 255); if (a.scancode > 127) { a.scancode -= 0xe000; a.scancode += 128; } - if (a.scancode > 255 || a.keycode > 127) { - bb_error_msg_and_die("SCANCODE or KEYCODE outside bounds"); - } - if (ioctl(fd,KDSETKEYCODE,&a)) { - bb_perror_msg_and_die("failed to set SCANCODE %x to KEYCODE %d", sc, a.keycode); - } + ioctl_or_perror_and_die(fd, KDSETKEYCODE, &a, + "failed to set SCANCODE %x to KEYCODE %d", + sc, a.keycode); argc -= 2; argv += 2; }