Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/console-tools/dumpkmap.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 815 by niro, Sat Sep 1 22:45:15 2007 UTC revision 816 by niro, Fri Apr 24 18:33:46 2009 UTC
# Line 7  Line 7 
7   * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.   * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8   *   *
9   */   */
10    /* no options, no getopt */
11    
12  #include "busybox.h"  #include "libbb.h"
13    
14  /* From <linux/kd.h> */  /* From <linux/kd.h> */
15  struct kbentry {  struct kbentry {
# Line 22  struct kbentry { Line 23  struct kbentry {
23  #define NR_KEYS 128  #define NR_KEYS 128
24  #define MAX_NR_KEYMAPS 256  #define MAX_NR_KEYMAPS 256
25    
26  int dumpkmap_main(int argc, char **argv)  int dumpkmap_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
27    int dumpkmap_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
28  {  {
29   struct kbentry ke;   struct kbentry ke;
30   int i, j, fd;   int i, j, fd;
31   char flags[MAX_NR_KEYMAPS], magic[] = "bkeymap";   RESERVE_CONFIG_BUFFER(flags,MAX_NR_KEYMAPS);
32    
33   if (argc >= 2 && *argv[1] == '-')  /* bb_warn_ignoring_args(argc>=2);*/
  bb_show_usage();  
34    
35   fd = xopen(CURRENT_VC, O_RDWR);   fd = get_console_fd_or_die();
36    
37   write(1, magic, 7);   write(STDOUT_FILENO, "bkeymap", 7);
38    
39   /* Here we want to set everything to 0 except for indexes:   /* Here we want to set everything to 0 except for indexes:
40   * [0-2] [4-6] [8-10] [12] */   * [0-2] [4-6] [8-10] [12] */
# Line 42  int dumpkmap_main(int argc, char **argv) Line 43  int dumpkmap_main(int argc, char **argv)
43   flags[3] = flags[7] = flags[11] = 0;   flags[3] = flags[7] = flags[11] = 0;
44    
45   /* dump flags */   /* dump flags */
46   write(1, flags, MAX_NR_KEYMAPS);   write(STDOUT_FILENO, flags, MAX_NR_KEYMAPS);
47    
48   for (i = 0; i < MAX_NR_KEYMAPS; i++) {   for (i = 0; i < MAX_NR_KEYMAPS; i++) {
49   if (flags[i] == 1) {   if (flags[i] == 1) {
50   for (j = 0; j < NR_KEYS; j++) {   for (j = 0; j < NR_KEYS; j++) {
51   ke.kb_index = j;   ke.kb_index = j;
52   ke.kb_table = i;   ke.kb_table = i;
53   if (ioctl(fd, KDGKBENT, &ke) < 0) {   if (!ioctl_or_perror(fd, KDGKBENT, &ke,
54   bb_perror_msg("ioctl failed with %s, %s, %p",   "ioctl failed with %s, %s, %p",
55   (char *)&ke.kb_index,   (char *)&ke.kb_index,
56   (char *)&ke.kb_table,   (char *)&ke.kb_table,
57   &ke.kb_value);   &ke.kb_value)
58   } else {   ) {
59   write(1, (void*)&ke.kb_value, 2);   write(STDOUT_FILENO, (void*)&ke.kb_value, 2);
60   }   }
61   }   }
62   }   }
63   }   }
64   close(fd);   if (ENABLE_FEATURE_CLEAN_UP) {
65     close(fd);
66     RELEASE_CONFIG_BUFFER(flags);
67     }
68   return EXIT_SUCCESS;   return EXIT_SUCCESS;
69  }  }

Legend:
Removed from v.815  
changed lines
  Added in v.816