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