loadkmap.c revision 1.6
11.6Stsutsui/*	$NetBSD: loadkmap.c,v 1.6 2006/06/27 10:55:16 tsutsui Exp $	*/
21.2Schopps
31.1Smw#include <sys/types.h>
41.1Smw#include <sys/stat.h>
51.1Smw#include <sys/ioctl.h>
61.1Smw#include "../../dev/iteioctl.h"
71.1Smw#include "../../dev/kbdmap.h"
81.1Smw#include <stdio.h>
91.6Stsutsui#include <stdlib.h>
101.1Smw
111.1Smw
121.5Saymericvoid load_kmap(const char *);
131.5Saymericvoid dump_kmap(void);
141.1Smw
151.1Smwint
161.5Saymericmain(int argc, char *argv[])
171.1Smw{
181.1Smw  if (argc > 2)
191.1Smw    {
201.1Smw      fprintf (stderr, "%s keymap\n", argv[0]);
211.1Smw      exit (1);
221.1Smw    }
231.1Smw
241.1Smw  if (argc == 1)
251.1Smw    dump_kmap ();
261.1Smw  else
271.1Smw    load_kmap (argv[1]);
281.1Smw
291.1Smw  exit (0);
301.1Smw}
311.1Smw
321.1Smw
331.1Smwvoid
341.5Saymericload_kmap(const char *file)
351.1Smw{
361.1Smw  int fd;
371.1Smw  char buf[sizeof (struct kbdmap)];
381.1Smw
391.1Smw  if ((fd = open (file, 0)) >= 0)
401.1Smw    {
411.1Smw      if (read (fd, buf, sizeof (buf)) == sizeof (buf))
421.1Smw	{
431.3Schopps	  if (ioctl (0, ITEIOCSKMAP, buf) == 0)
441.1Smw	    return;
451.1Smw	  else
461.3Schopps	    perror ("ITEIOCSKMAP");
471.1Smw	}
481.1Smw      else
491.1Smw	perror ("read kmap");
501.1Smw
511.1Smw      close (fd);
521.1Smw    }
531.1Smw  else
541.1Smw    perror ("open kmap");
551.1Smw}
561.1Smw
571.1Smwvoid
581.5Saymericdump_kmap(void)
591.1Smw{
601.1Smw  char buf[sizeof (struct kbdmap)];
611.3Schopps  if (ioctl (0, ITEIOCGKMAP, buf) == 0)
621.1Smw    write (1, buf, sizeof (buf));
631.1Smw  else
641.3Schopps    perror ("ITEIOCGKMAP");
651.1Smw}
66