diff options
author | Eric Andersen <andersen@codepoet.org> | 2000-07-11 17:29:36 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2000-07-11 17:29:36 +0000 |
commit | 61dc0571832b88097192a8c0eab190a44c577371 (patch) | |
tree | e8d48007f5e86b1fe04d3b4f4b56d53c6ef35eeb | |
parent | df5f6ba1159f8c1af500fa1b8eb9c9646e4de2a6 (diff) | |
download | busybox-w32-61dc0571832b88097192a8c0eab190a44c577371.tar.gz busybox-w32-61dc0571832b88097192a8c0eab190a44c577371.tar.bz2 busybox-w32-61dc0571832b88097192a8c0eab190a44c577371.zip |
Added 'dumpkmap' to allow people to dump a binary keymap, which can then be
loaded in by 'loadkmap' -- submitted by Arne Bernin <arne@matrix.loopback.org>
-Erik
-rw-r--r-- | Changelog | 3 | ||||
-rw-r--r-- | applets/busybox.c | 3 | ||||
-rw-r--r-- | busybox.c | 3 | ||||
-rw-r--r-- | busybox.def.h | 1 | ||||
-rw-r--r-- | console-tools/dumpkmap.c | 100 | ||||
-rw-r--r-- | console-tools/loadkmap.c | 2 | ||||
-rw-r--r-- | docs/busybox.pod | 12 | ||||
-rw-r--r-- | docs/busybox.sgml | 35 | ||||
-rw-r--r-- | dumpkmap.c | 100 | ||||
-rw-r--r-- | internal.h | 1 | ||||
-rw-r--r-- | loadkmap.c | 2 |
11 files changed, 248 insertions, 14 deletions
@@ -41,6 +41,9 @@ | |||
41 | couldn't maintain it very well, so including it was not really | 41 | couldn't maintain it very well, so including it was not really |
42 | very appropriate. Those wanting an fdisk are invited to | 42 | very appropriate. Those wanting an fdisk are invited to |
43 | grab a copy from util-linux. | 43 | grab a copy from util-linux. |
44 | * Added 'dumpkmap' to allow people to dump a binary keymap, which can | ||
45 | then be loaded in by 'loadkmap' -- submitted by | ||
46 | Arne Bernin <arne@matrix.loopback.org> | ||
44 | * Fixed NFS so it supports 2.4.x kernels and NFSv3. | 47 | * Fixed NFS so it supports 2.4.x kernels and NFSv3. |
45 | 48 | ||
46 | 49 | ||
diff --git a/applets/busybox.c b/applets/busybox.c index 44fa16994..5471db597 100644 --- a/applets/busybox.c +++ b/applets/busybox.c | |||
@@ -87,6 +87,9 @@ const struct BB_applet applets[] = { | |||
87 | #ifdef BB_DU | 87 | #ifdef BB_DU |
88 | {"du", du_main, _BB_DIR_BIN}, | 88 | {"du", du_main, _BB_DIR_BIN}, |
89 | #endif | 89 | #endif |
90 | #ifdef BB_DUMPKMAP | ||
91 | {"dumpkmap", dumpkmap_main, _BB_DIR_BIN}, | ||
92 | #endif | ||
90 | #ifdef BB_DUTMP | 93 | #ifdef BB_DUTMP |
91 | {"dutmp", dutmp_main, _BB_DIR_USR_SBIN}, | 94 | {"dutmp", dutmp_main, _BB_DIR_USR_SBIN}, |
92 | #endif | 95 | #endif |
@@ -87,6 +87,9 @@ const struct BB_applet applets[] = { | |||
87 | #ifdef BB_DU | 87 | #ifdef BB_DU |
88 | {"du", du_main, _BB_DIR_BIN}, | 88 | {"du", du_main, _BB_DIR_BIN}, |
89 | #endif | 89 | #endif |
90 | #ifdef BB_DUMPKMAP | ||
91 | {"dumpkmap", dumpkmap_main, _BB_DIR_BIN}, | ||
92 | #endif | ||
90 | #ifdef BB_DUTMP | 93 | #ifdef BB_DUTMP |
91 | {"dutmp", dutmp_main, _BB_DIR_USR_SBIN}, | 94 | {"dutmp", dutmp_main, _BB_DIR_USR_SBIN}, |
92 | #endif | 95 | #endif |
diff --git a/busybox.def.h b/busybox.def.h index 0f2bcefeb..854de1466 100644 --- a/busybox.def.h +++ b/busybox.def.h | |||
@@ -25,6 +25,7 @@ | |||
25 | #define BB_DMESG | 25 | #define BB_DMESG |
26 | #define BB_DUTMP | 26 | #define BB_DUTMP |
27 | #define BB_DU | 27 | #define BB_DU |
28 | #define BB_DUMPKMAP | ||
28 | #define BB_ECHO | 29 | #define BB_ECHO |
29 | #define BB_FBSET | 30 | #define BB_FBSET |
30 | #define BB_FDFLUSH | 31 | #define BB_FDFLUSH |
diff --git a/console-tools/dumpkmap.c b/console-tools/dumpkmap.c new file mode 100644 index 000000000..a497a07d1 --- /dev/null +++ b/console-tools/dumpkmap.c | |||
@@ -0,0 +1,100 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * Mini dumpkmap implementation for busybox | ||
4 | * | ||
5 | * Copyright (C) Arne Bernin <arne@matrix.loopback.org> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | * | ||
21 | */ | ||
22 | |||
23 | #include "internal.h" | ||
24 | #include <errno.h> | ||
25 | #include <fcntl.h> | ||
26 | #include <stdio.h> | ||
27 | #include <sys/ioctl.h> | ||
28 | |||
29 | /* From <linux/kd.h> */ | ||
30 | struct kbentry { | ||
31 | unsigned char kb_table; | ||
32 | unsigned char kb_index; | ||
33 | unsigned short kb_value; | ||
34 | }; | ||
35 | #define KDGKBENT 0x4B46 /* gets one entry in translation table */ | ||
36 | |||
37 | /* From <linux/keyboard.h> */ | ||
38 | #define NR_KEYS 128 | ||
39 | #define MAX_NR_KEYMAPS 256 | ||
40 | |||
41 | |||
42 | static const char dumpkmap_usage[] = "dumpkmap\n" | ||
43 | #ifndef BB_FEATURE_TRIVIAL_HELP | ||
44 | "\nPrints out a binary keyboard translation table to standard input.\n" | ||
45 | #endif | ||
46 | ; | ||
47 | |||
48 | |||
49 | int dumpkmap_main(int argc, char **argv) | ||
50 | { | ||
51 | struct kbentry ke; | ||
52 | int i, j, fd; | ||
53 | char flags[MAX_NR_KEYMAPS], magic[] = "bkeymap"; | ||
54 | |||
55 | if (argc>=2 && *argv[1]=='-') { | ||
56 | usage(dumpkmap_usage); | ||
57 | } | ||
58 | |||
59 | fd = open("/dev/tty0", O_RDWR); | ||
60 | if (fd < 0) { | ||
61 | fprintf(stderr, "Error opening /dev/tty0: %s\n", strerror(errno)); | ||
62 | return 1; | ||
63 | } | ||
64 | |||
65 | write(1, magic, 7); | ||
66 | |||
67 | for (i=0; i < MAX_NR_KEYMAPS; i++) flags[i]=0; | ||
68 | flags[0]=1; | ||
69 | flags[1]=1; | ||
70 | flags[2]=1; | ||
71 | flags[4]=1; | ||
72 | flags[5]=1; | ||
73 | flags[6]=1; | ||
74 | flags[8]=1; | ||
75 | flags[9]=1; | ||
76 | flags[10]=1; | ||
77 | flags[12]=1; | ||
78 | |||
79 | /* dump flags */ | ||
80 | for (i=0; i < MAX_NR_KEYMAPS; i++) write(1,&flags[i],1); | ||
81 | |||
82 | for (i = 0; i < MAX_NR_KEYMAPS; i++) { | ||
83 | if (flags[i] == 1) { | ||
84 | for (j = 0; j < NR_KEYS; j++) { | ||
85 | ke.kb_index = j; | ||
86 | ke.kb_table = i; | ||
87 | if (ioctl(fd, KDGKBENT, &ke) < 0) { | ||
88 | |||
89 | fprintf(stderr, "ioctl returned: %s, %s, %s, %xqq\n",strerror(errno),(char *)&ke.kb_index,(char *)&ke.kb_table,(int)&ke.kb_value); | ||
90 | } | ||
91 | else { | ||
92 | write(1,&ke.kb_value,2); | ||
93 | } | ||
94 | |||
95 | } | ||
96 | } | ||
97 | } | ||
98 | close(fd); | ||
99 | return 0; | ||
100 | } | ||
diff --git a/console-tools/loadkmap.c b/console-tools/loadkmap.c index 0e8c090d2..c2e4c94ed 100644 --- a/console-tools/loadkmap.c +++ b/console-tools/loadkmap.c | |||
@@ -41,7 +41,7 @@ struct kbentry { | |||
41 | 41 | ||
42 | static const char loadkmap_usage[] = "loadkmap\n" | 42 | static const char loadkmap_usage[] = "loadkmap\n" |
43 | #ifndef BB_FEATURE_TRIVIAL_HELP | 43 | #ifndef BB_FEATURE_TRIVIAL_HELP |
44 | "Loads a binary keyboard translation table from standard input.\n" | 44 | "\nLoads a binary keyboard translation table from standard input.\n" |
45 | #endif | 45 | #endif |
46 | ; | 46 | ; |
47 | 47 | ||
diff --git a/docs/busybox.pod b/docs/busybox.pod index b36619909..0e611deef 100644 --- a/docs/busybox.pod +++ b/docs/busybox.pod | |||
@@ -56,7 +56,7 @@ terse runtime description of their behavior. | |||
56 | Currently defined functions include: | 56 | Currently defined functions include: |
57 | 57 | ||
58 | ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear, cp, cut, date, | 58 | ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear, cp, cut, date, |
59 | dc, dd, deallocvt, df, dirname, dmesg, du, dutmp, echo, false, fbset, | 59 | dc, dd, deallocvt, df, dirname, dmesg, du, dumpkmap, dutmp, echo, false, fbset, |
60 | fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt, | 60 | fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt, |
61 | head, hostid, hostname, id, init, insmod, kill, killall, length, ln, | 61 | head, hostid, hostname, id, init, insmod, kill, killall, length, ln, |
62 | loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir, | 62 | loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir, |
@@ -440,6 +440,14 @@ Example: | |||
440 | 440 | ||
441 | ------------------------------- | 441 | ------------------------------- |
442 | 442 | ||
443 | =item dumpkmap | ||
444 | |||
445 | Usage: dumpkmap | ||
446 | |||
447 | Prints out a binary keyboard translation table to standard input. | ||
448 | |||
449 | ------------------------------- | ||
450 | |||
443 | =item dutmp | 451 | =item dutmp |
444 | 452 | ||
445 | Usage: dutmp [FILE] | 453 | Usage: dutmp [FILE] |
@@ -2020,4 +2028,4 @@ Enrique Zanardi <ezanardi@ull.es> | |||
2020 | 2028 | ||
2021 | =cut | 2029 | =cut |
2022 | 2030 | ||
2023 | # $Id: busybox.pod,v 1.55 2000/07/08 00:09:30 andersen Exp $ | 2031 | # $Id: busybox.pod,v 1.56 2000/07/11 17:29:36 andersen Exp $ |
diff --git a/docs/busybox.sgml b/docs/busybox.sgml index ca76b0f59..92b02c9ee 100644 --- a/docs/busybox.sgml +++ b/docs/busybox.sgml | |||
@@ -132,16 +132,19 @@ | |||
132 | </para> | 132 | </para> |
133 | 133 | ||
134 | <para> | 134 | <para> |
135 | ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear, cp, cut, date, | 135 | ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear, |
136 | dc, dd, deallocvt, df, dirname, dmesg, du, dutmp, echo, false, fbset, | 136 | cp, cut, date, dc, dd, deallocvt, df, dirname, dmesg, du, |
137 | fdflush, find, free, freeramdisk, fsck.minix, grep, gunzip, gzip, halt, | 137 | dumpkmap, dutmp, echo, false, fbset, fdflush, find, free, |
138 | head, hostid, hostname, id, init, insmod, kill, killall, length, ln, | 138 | freeramdisk, fsck.minix, grep, gunzip, gzip, halt, head, |
139 | loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, makedevs, mkdir, | 139 | hostid, hostname, id, init, insmod, kill, killall, length, ln, |
140 | mkfifo, mkfs.minix, mknod, mkswap, mktemp, more, mount, mt, mv, nc, | 140 | loadacm, loadfont, loadkmap, logger, logname, ls, lsmod, |
141 | nslookup, ping, poweroff, printf, ps, pwd, reboot, rm, rmdir, rmmod, sed, | 141 | makedevs, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp, |
142 | setkeycodes, sh, sleep, sort, swapoff, swapon, sync, syslogd, tail, | 142 | more, mount, mt, mv, nc, nslookup, ping, poweroff, printf, ps, |
143 | tar, tee, telnet, test, touch, tr, true, tty, umount, uname, uniq, update, | 143 | pwd, reboot, rm, rmdir, rmmod, sed, setkeycodes, sh, sleep, |
144 | uptime, usleep, uudecode, uuencode, wc, which, whoami, yes, zcat, [ | 144 | sort, swapoff, swapon, sync, syslogd, tail, tar, tee, telnet, |
145 | test, touch, tr, true, tty, umount, uname, uniq, update, | ||
146 | uptime, usleep, uudecode, uuencode, wc, which, whoami, yes, | ||
147 | zcat, [ | ||
145 | </para> | 148 | </para> |
146 | </sect1> | 149 | </sect1> |
147 | 150 | ||
@@ -783,6 +786,18 @@ | |||
783 | </para> | 786 | </para> |
784 | </sect1> | 787 | </sect1> |
785 | 788 | ||
789 | <sect1 id="dumpkmap"> | ||
790 | <title>dumpkmap</title> | ||
791 | |||
792 | <para> | ||
793 | Usage: dumpkmap | ||
794 | </para> | ||
795 | |||
796 | <para> | ||
797 | Prints out a binary keyboard translation table to standard input. | ||
798 | </para> | ||
799 | </sect1> | ||
800 | |||
786 | <sect1 id="dutmp"> | 801 | <sect1 id="dutmp"> |
787 | <title>dutmp</title> | 802 | <title>dutmp</title> |
788 | 803 | ||
diff --git a/dumpkmap.c b/dumpkmap.c new file mode 100644 index 000000000..a497a07d1 --- /dev/null +++ b/dumpkmap.c | |||
@@ -0,0 +1,100 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * Mini dumpkmap implementation for busybox | ||
4 | * | ||
5 | * Copyright (C) Arne Bernin <arne@matrix.loopback.org> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | * | ||
21 | */ | ||
22 | |||
23 | #include "internal.h" | ||
24 | #include <errno.h> | ||
25 | #include <fcntl.h> | ||
26 | #include <stdio.h> | ||
27 | #include <sys/ioctl.h> | ||
28 | |||
29 | /* From <linux/kd.h> */ | ||
30 | struct kbentry { | ||
31 | unsigned char kb_table; | ||
32 | unsigned char kb_index; | ||
33 | unsigned short kb_value; | ||
34 | }; | ||
35 | #define KDGKBENT 0x4B46 /* gets one entry in translation table */ | ||
36 | |||
37 | /* From <linux/keyboard.h> */ | ||
38 | #define NR_KEYS 128 | ||
39 | #define MAX_NR_KEYMAPS 256 | ||
40 | |||
41 | |||
42 | static const char dumpkmap_usage[] = "dumpkmap\n" | ||
43 | #ifndef BB_FEATURE_TRIVIAL_HELP | ||
44 | "\nPrints out a binary keyboard translation table to standard input.\n" | ||
45 | #endif | ||
46 | ; | ||
47 | |||
48 | |||
49 | int dumpkmap_main(int argc, char **argv) | ||
50 | { | ||
51 | struct kbentry ke; | ||
52 | int i, j, fd; | ||
53 | char flags[MAX_NR_KEYMAPS], magic[] = "bkeymap"; | ||
54 | |||
55 | if (argc>=2 && *argv[1]=='-') { | ||
56 | usage(dumpkmap_usage); | ||
57 | } | ||
58 | |||
59 | fd = open("/dev/tty0", O_RDWR); | ||
60 | if (fd < 0) { | ||
61 | fprintf(stderr, "Error opening /dev/tty0: %s\n", strerror(errno)); | ||
62 | return 1; | ||
63 | } | ||
64 | |||
65 | write(1, magic, 7); | ||
66 | |||
67 | for (i=0; i < MAX_NR_KEYMAPS; i++) flags[i]=0; | ||
68 | flags[0]=1; | ||
69 | flags[1]=1; | ||
70 | flags[2]=1; | ||
71 | flags[4]=1; | ||
72 | flags[5]=1; | ||
73 | flags[6]=1; | ||
74 | flags[8]=1; | ||
75 | flags[9]=1; | ||
76 | flags[10]=1; | ||
77 | flags[12]=1; | ||
78 | |||
79 | /* dump flags */ | ||
80 | for (i=0; i < MAX_NR_KEYMAPS; i++) write(1,&flags[i],1); | ||
81 | |||
82 | for (i = 0; i < MAX_NR_KEYMAPS; i++) { | ||
83 | if (flags[i] == 1) { | ||
84 | for (j = 0; j < NR_KEYS; j++) { | ||
85 | ke.kb_index = j; | ||
86 | ke.kb_table = i; | ||
87 | if (ioctl(fd, KDGKBENT, &ke) < 0) { | ||
88 | |||
89 | fprintf(stderr, "ioctl returned: %s, %s, %s, %xqq\n",strerror(errno),(char *)&ke.kb_index,(char *)&ke.kb_table,(int)&ke.kb_value); | ||
90 | } | ||
91 | else { | ||
92 | write(1,&ke.kb_value,2); | ||
93 | } | ||
94 | |||
95 | } | ||
96 | } | ||
97 | } | ||
98 | close(fd); | ||
99 | return 0; | ||
100 | } | ||
diff --git a/internal.h b/internal.h index 4ef15325e..8086aa1ca 100644 --- a/internal.h +++ b/internal.h | |||
@@ -117,6 +117,7 @@ extern int deallocvt_main(int argc, char** argv); | |||
117 | extern int df_main(int argc, char** argv); | 117 | extern int df_main(int argc, char** argv); |
118 | extern int dmesg_main(int argc, char** argv); | 118 | extern int dmesg_main(int argc, char** argv); |
119 | extern int du_main(int argc, char** argv); | 119 | extern int du_main(int argc, char** argv); |
120 | extern int dumpkmap_main(int argc, char** argv); | ||
120 | extern int dutmp_main(int argc, char** argv); | 121 | extern int dutmp_main(int argc, char** argv); |
121 | extern int echo_main(int argc, char** argv); | 122 | extern int echo_main(int argc, char** argv); |
122 | extern int false_main(int argc, char** argv); | 123 | extern int false_main(int argc, char** argv); |
diff --git a/loadkmap.c b/loadkmap.c index 0e8c090d2..c2e4c94ed 100644 --- a/loadkmap.c +++ b/loadkmap.c | |||
@@ -41,7 +41,7 @@ struct kbentry { | |||
41 | 41 | ||
42 | static const char loadkmap_usage[] = "loadkmap\n" | 42 | static const char loadkmap_usage[] = "loadkmap\n" |
43 | #ifndef BB_FEATURE_TRIVIAL_HELP | 43 | #ifndef BB_FEATURE_TRIVIAL_HELP |
44 | "Loads a binary keyboard translation table from standard input.\n" | 44 | "\nLoads a binary keyboard translation table from standard input.\n" |
45 | #endif | 45 | #endif |
46 | ; | 46 | ; |
47 | 47 | ||