int main(int argc, char *argv[]) { int fd, c; char *console = NULL; char *outfnam = NULL; char *infnam = "def.uni"; set_progname(argv[0]); setlocale(LC_ALL, ""); bindtextdomain(PACKAGE_NAME, LOCALEDIR); textdomain(PACKAGE_NAME); if (argc == 2 && (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version"))) print_version_and_exit(); while ((c = getopt(argc, argv, "C:o:")) != EOF) { switch (c) { case 'C': console = optarg; break; case 'o': outfnam = optarg; break; default: usage(); } } if (argc > optind+1 || (argc == optind && !outfnam)) usage(); fd = getfd(console); if (outfnam) { saveunicodemap(fd, outfnam); if (argc == optind) exit(0); } if (argc == optind+1) infnam = argv[optind]; loadunicodemap(fd, infnam); exit(0); }
int main(int argc, char *argv[]) { char *ifiles[MAXIFILES]; char *mfil, *ufil, *Ofil, *ofil, *omfil, *oufil, *console; int ifilct = 0, fd, i, iunit, hwunit, no_m, no_u; int restore = 0; set_progname(argv[0]); setlocale(LC_ALL, ""); bindtextdomain(PACKAGE_NAME, LOCALEDIR); textdomain(PACKAGE_NAME); ifiles[0] = mfil = ufil = Ofil = ofil = omfil = oufil = NULL; iunit = hwunit = 0; no_m = no_u = 0; console = NULL; /* * No getopt() here because of the -om etc options. */ for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-V")) { print_version_and_exit(); } else if (!strcmp(argv[i], "-v")) { verbose++; } else if (!strcmp(argv[i], "-R")) { restore = 1; } else if (!strcmp(argv[i], "-C")) { if (++i == argc || console) usage(); console = argv[i]; } else if (!strcmp(argv[i], "-O")) { if (++i == argc || Ofil) usage(); Ofil = argv[i]; } else if (!strcmp(argv[i], "-o")) { if (++i == argc || ofil) usage(); ofil = argv[i]; } else if (!strcmp(argv[i], "-om")) { if (++i == argc || omfil) usage(); omfil = argv[i]; } else if (!strcmp(argv[i], "-ou")) { if (++i == argc || oufil) usage(); oufil = argv[i]; } else if (!strcmp(argv[i], "-m")) { if (++i == argc || mfil) usage(); if (!strcmp(argv[i], "none")) no_m = 1; else mfil = argv[i]; } else if (!strcmp(argv[i], "-u")) { if (++i == argc || ufil) usage(); if (!strcmp(argv[i], "none")) no_u = 1; else ufil = argv[i]; } else if (!strcmp(argv[i], "-f")) { force = 1; } else if (!strncmp(argv[i], "-h", 2)) { hwunit = atoi(argv[i]+2); if (hwunit <= 0 || hwunit > 32) usage(); } else if (argv[i][0] == '-') { iunit = atoi(argv[i]+1); if(iunit <= 0 || iunit > 32) usage(); } else { if (ifilct == MAXIFILES) { fprintf(stderr, _("setfont: too many input files\n")); exit(EX_USAGE); } ifiles[ifilct++] = argv[i]; } } if (ifilct && restore) { fprintf(stderr, _("setfont: cannot both restore from character ROM" " and from file. Font unchanged.\n")); exit(EX_USAGE); } fd = getfd(console); int kd_mode = -1; if (!ioctl(fd, KDGETMODE, &kd_mode) && (kd_mode == KD_GRAPHICS)) { /* * PIO_FONT will fail on a console which is in foreground and in KD_GRAPHICS mode. * 2005-03-03, [email protected]. */ if (verbose) printf("setfont: graphics console %s skipped\n", console?console:""); close(fd); return 0; } if (!ifilct && !mfil && !ufil && !Ofil && !ofil && !omfil && !oufil && !restore) /* reset to some default */ ifiles[ifilct++] = ""; if (Ofil) saveoldfontplusunicodemap(fd, Ofil); if (ofil) saveoldfont(fd, ofil); if (omfil) saveoldmap(fd, omfil); if (oufil) saveunicodemap(fd, oufil); if (mfil) { loadnewmap(fd, mfil); activatemap(fd); no_m = 1; } if (ufil) no_u = 1; if (restore) restorefont(fd); if (ifilct) loadnewfonts(fd, ifiles, ifilct, iunit, hwunit, no_m, no_u); if (ufil) loadunicodemap(fd, ufil); return 0; }