loadkmap.c revision 1.5
11.5Saymeric/*	$NetBSD: loadkmap.c,v 1.5 2002/01/26 13:21:12 aymeric 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.1Smw
101.1Smw
111.5Saymericvoid load_kmap(const char *);
121.5Saymericvoid dump_kmap(void);
131.1Smw
141.1Smwint
151.5Saymericmain(int argc, char *argv[])
161.1Smw{
171.1Smw  if (argc > 2)
181.1Smw    {
191.1Smw      fprintf (stderr, "%s keymap\n", argv[0]);
201.1Smw      exit (1);
211.1Smw    }
221.1Smw
231.1Smw  if (argc == 1)
241.1Smw    dump_kmap ();
251.1Smw  else
261.1Smw    load_kmap (argv[1]);
271.1Smw
281.1Smw  exit (0);
291.1Smw}
301.1Smw
311.1Smw
321.1Smwvoid
331.5Saymericload_kmap(const char *file)
341.1Smw{
351.1Smw  int fd;
361.1Smw  char buf[sizeof (struct kbdmap)];
371.1Smw
381.1Smw  if ((fd = open (file, 0)) >= 0)
391.1Smw    {
401.1Smw      if (read (fd, buf, sizeof (buf)) == sizeof (buf))
411.1Smw	{
421.3Schopps	  if (ioctl (0, ITEIOCSKMAP, buf) == 0)
431.1Smw	    return;
441.1Smw	  else
451.3Schopps	    perror ("ITEIOCSKMAP");
461.1Smw	}
471.1Smw      else
481.1Smw	perror ("read kmap");
491.1Smw
501.1Smw      close (fd);
511.1Smw    }
521.1Smw  else
531.1Smw    perror ("open kmap");
541.1Smw}
551.1Smw
561.1Smwvoid
571.5Saymericdump_kmap(void)
581.1Smw{
591.1Smw  char buf[sizeof (struct kbdmap)];
601.3Schopps  if (ioctl (0, ITEIOCGKMAP, buf) == 0)
611.1Smw    write (1, buf, sizeof (buf));
621.1Smw  else
631.3Schopps    perror ("ITEIOCGKMAP");
641.1Smw}
65