Home | History | Annotate | Line # | Download | only in loadkmap
loadkmap.c revision 1.5.2.3
      1  1.5.2.3    skrll /*	$NetBSD: loadkmap.c,v 1.5.2.3 2004/09/21 13:24:20 skrll Exp $	*/
      2      1.1      oki /*
      3      1.1      oki  * loadkmap - load keyboard map (for NetBSD/X680x0)
      4      1.1      oki  * from: amiga/stand/loadkmap/loadkmap.c
      5      1.1      oki  * Copyright 1994 by Masaru Oki
      6      1.1      oki  */
      7      1.1      oki 
      8  1.5.2.1    skrll #include <sys/cdefs.h>
      9  1.5.2.3    skrll __RCSID("$NetBSD: loadkmap.c,v 1.5.2.3 2004/09/21 13:24:20 skrll Exp $");
     10  1.5.2.1    skrll 
     11      1.1      oki #include <stdio.h>
     12      1.4  minoura #include <sys/types.h>
     13      1.1      oki #include <sys/ioctl.h>
     14  1.5.2.1    skrll #include <machine/kbdmap.h>
     15      1.3  minoura #include <machine/iteioctl.h>
     16      1.1      oki 
     17      1.5    isaki void load_kmap(const char *);
     18      1.1      oki 
     19      1.1      oki int
     20      1.1      oki main(int argc, char *argv[])
     21      1.1      oki {
     22      1.1      oki 
     23      1.5    isaki 	if (argc != 2) {
     24      1.5    isaki 		fprintf(stderr, "Usage: %s kmapfile\n", argv[0]);
     25      1.5    isaki 		exit (1);
     26      1.5    isaki 	}
     27      1.5    isaki 
     28      1.5    isaki 	load_kmap(argv[1]);
     29      1.5    isaki 	exit(0);
     30      1.1      oki }
     31      1.1      oki 
     32      1.1      oki void
     33      1.5    isaki load_kmap(const char *file)
     34      1.1      oki {
     35      1.5    isaki 	unsigned char buf[sizeof(struct kbdmap)];
     36      1.5    isaki 	int fd;
     37      1.1      oki 
     38      1.5    isaki 	if ((fd = open(file, 0)) >= 0) {
     39      1.5    isaki 		if (read(fd, buf, sizeof(buf)) == sizeof(buf)) {
     40      1.5    isaki 			if (ioctl(0, ITEIOCSKMAP, buf) == 0)
     41      1.5    isaki 				return;
     42      1.5    isaki 			else
     43      1.5    isaki 				perror("ITEIOCSKMAP");
     44      1.5    isaki 		} else {
     45      1.5    isaki 			perror("read kbdmap");
     46      1.5    isaki 		}
     47      1.5    isaki 
     48      1.5    isaki 		close (fd);
     49      1.5    isaki 	} else {
     50      1.5    isaki 	    perror("open kbdmap");
     51      1.1      oki 	}
     52      1.1      oki }
     53