xref: /netbsd-src/sys/arch/x68k/usr.bin/loadkmap/loadkmap.c (revision 23c8222edbfb0f0932d88a8351d3a0cf817dfb9e)
1 /*	$NetBSD: loadkmap.c,v 1.7 2004/05/12 14:25:08 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 <sys/cdefs.h>
9 __RCSID("$NetBSD: loadkmap.c,v 1.7 2004/05/12 14:25:08 minoura Exp $");
10 
11 #include <stdio.h>
12 #include <sys/types.h>
13 #include <sys/ioctl.h>
14 #include <machine/kbdmap.h>
15 #include <machine/iteioctl.h>
16 
17 void load_kmap(const char *);
18 
19 int
20 main(int argc, char *argv[])
21 {
22 
23 	if (argc != 2) {
24 		fprintf(stderr, "Usage: %s kmapfile\n", argv[0]);
25 		exit (1);
26 	}
27 
28 	load_kmap(argv[1]);
29 	exit(0);
30 }
31 
32 void
33 load_kmap(const char *file)
34 {
35 	unsigned char buf[sizeof(struct kbdmap)];
36 	int fd;
37 
38 	if ((fd = open(file, 0)) >= 0) {
39 		if (read(fd, buf, sizeof(buf)) == sizeof(buf)) {
40 			if (ioctl(0, ITEIOCSKMAP, buf) == 0)
41 				return;
42 			else
43 				perror("ITEIOCSKMAP");
44 		} else {
45 			perror("read kbdmap");
46 		}
47 
48 		close (fd);
49 	} else {
50 	    perror("open kbdmap");
51 	}
52 }
53