xref: /netbsd-src/sys/arch/x68k/usr.bin/loadkmap/loadkmap.c (revision 76dfffe33547c37f8bdd446e3e4ab0f3c16cea4b)
1 /*
2  * loadkmap - load keyboard map (for NetBSD/X680x0)
3  * from: amiga/stand/loadkmap/loadkmap.c
4  * Copyright 1994 by Masaru Oki
5  */
6 
7 #include <stdio.h>
8 #include <sys/ioctl.h>
9 #define ITEKANJI 1 /* XXX */
10 #include "../../dev/iteioctl.h"
11 #include "kbdmap.h"
12 
13 void load_kmap __P((const char *file));
14 
15 int
16 #ifdef __STDC__
17 main(int argc, char *argv[])
18 #else
19 main()
20      int argc;
21      char *argv[];
22 #endif
23 {
24   if (argc != 2)
25     fprintf (stderr, "Usage: %s kmapfile\n", argv[0]), exit (1);
26 
27   load_kmap (argv[1]);
28   exit (0);
29 }
30 
31 void
32 #ifdef __STDC__
33 load_kmap (const char *file)
34 #else
35 load_kmap (file)
36      const char *file;
37 #endif
38 {
39   int fd;
40   unsigned char buf[sizeof(struct kbdmap)];
41 
42   if ((fd = open (file, 0)) >= 0)
43     {
44       if (read (fd, buf, sizeof (buf)) == sizeof (buf))
45 	{
46 	  if (ioctl (0, ITEIOCSKMAP, buf) == 0)
47 	    return;
48 	  else
49 	    perror ("ITEIOCSKMAP");
50 	}
51       else
52 	perror ("read kbdmap");
53 
54       close (fd);
55     }
56   else
57     perror ("open kbdmap");
58 }
59