loadkmap.c revision 1.1
11.1Smw#include <sys/types.h>
21.1Smw#include <sys/stat.h>
31.1Smw#include <sys/ioctl.h>
41.1Smw#include "../../dev/iteioctl.h"
51.1Smw#include "../../dev/kbdmap.h"
61.1Smw#include <stdio.h>
71.1Smw
81.1Smw
91.1Smwvoid load_kmap __P((const char *));
101.1Smwvoid dump_kmap();
111.1Smw
121.1Smwint
131.1Smwmain(argc, argv)
141.1Smw     int argc;
151.1Smw     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.1Smwload_kmap (file)
341.1Smw     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.1Smw	  if (ioctl (0, ITELOADKMAP, buf) == 0)
441.1Smw	    return;
451.1Smw	  else
461.1Smw	    perror ("ITELOADKMAP");
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.1Smwdump_kmap()
591.1Smw{
601.1Smw  char buf[sizeof (struct kbdmap)];
611.1Smw  if (ioctl (0, ITEGETKMAP, buf) == 0)
621.1Smw    write (1, buf, sizeof (buf));
631.1Smw  else
641.1Smw    perror ("ITEGETKMAP");
651.1Smw}
66