xref: /netbsd/sys/arch/x68k/usr.bin/loadkmap/loadkmap.c (revision bf9ec67e)
1 /*	$NetBSD: loadkmap.c,v 1.4 2000/07/31 23:40:02 minoura 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/types.h>
10 #include <sys/ioctl.h>
11 #define ITEKANJI 1 /* XXX */
12 #include <machine/iteioctl.h>
13 #include "kbdmap.h"
14 
15 void load_kmap __P((const char *file));
16 
17 int
18 #ifdef __STDC__
19 main(int argc, char *argv[])
20 #else
21 main()
22      int argc;
23      char *argv[];
24 #endif
25 {
26   if (argc != 2)
27     fprintf (stderr, "Usage: %s kmapfile\n", argv[0]), exit (1);
28 
29   load_kmap (argv[1]);
30   exit (0);
31 }
32 
33 void
34 #ifdef __STDC__
35 load_kmap (const char *file)
36 #else
37 load_kmap (file)
38      const char *file;
39 #endif
40 {
41   int fd;
42   unsigned char buf[sizeof(struct kbdmap)];
43 
44   if ((fd = open (file, 0)) >= 0)
45     {
46       if (read (fd, buf, sizeof (buf)) == sizeof (buf))
47 	{
48 	  if (ioctl (0, ITEIOCSKMAP, buf) == 0)
49 	    return;
50 	  else
51 	    perror ("ITEIOCSKMAP");
52 	}
53       else
54 	perror ("read kbdmap");
55 
56       close (fd);
57     }
58   else
59     perror ("open kbdmap");
60 }
61