void loadnewmap(int fd, char *mfil) { unsigned short ubuf[E_TABSZ]; char buf[E_TABSZ]; int i, u; /* default: trivial straight-to-font */ for (i=0; i<E_TABSZ; i++) { buf[i] = i; ubuf[i] = (0xf000 + i); } u = 0; if (mfil) u = readnewmapfromfile(fd, mfil, buf, ubuf); /* do we need to use loaduniscrnmap() ? */ if (u) { /* yes */ if (loaduniscrnmap(fd, ubuf)) exit(1); } else { /* no */ if (loadscrnmap(fd,buf)) exit(1); } }
leave(int n) { if (have_obuf && loaduniscrnmap(fd, obuf)) { kbd_warning(0, _("failed to restore original translation table\n")); n = EXIT_FAILURE; } if (have_ounimap && loadunimap(fd, NULL, &ounimap)) { kbd_warning(0, _("failed to restore original unimap\n")); n = EXIT_FAILURE; } exit(n); }
static void settrivialscreenmap(void) { unsigned short i; if (getuniscrnmap(fd, obuf)) exit(1); have_obuf = 1; for (i = 0; i < E_TABSZ; i++) nbuf[i] = i; if (loaduniscrnmap(fd, nbuf)) { kbd_error(EXIT_FAILURE, 0, _("cannot change translation table\n")); } }