static const char rcsid[] = "$Id: fontmake.c,v 1.4 2000/06/24 00:51:34 ben Exp $"; #include #include #include #include #include #include #include void usage(void); void font_make(FILE *); int main(int argc, char **argv) { FILE *fp; if (getopt(argc, argv, "") != -1) usage(); argc -= optind; argv += optind; if (argc != 1) usage(); if (isatty(STDOUT_FILENO)) errx(1, "please redirect stdout to a non-terminal device"); if ((fp = fopen(*argv, "r")) == NULL) err(1, "%s", *argv); font_make(fp); return (EXIT_SUCCESS); } void font_make(FILE *fp) { char line[20]; int byte, bit, size; size = 0; while (fgets(line, sizeof line, fp) != NULL) { if (strlen(line) > 4 && strcmp(line + 4, "----\n") == 0) { if (size != 0 && size != 8 && size != 14 && size != 16) errx(1, "bad file format, wrong size"); else { size = 0; continue; } } size++; byte = 0; for (bit = 0; bit < 8; bit++) if (line[bit] == '\n') /* end of line, assume all spaces */ break; else if (line[bit] == '#') byte |= 1 << (7 - bit); else if (line[bit] != ' ') errx(1, "bad file format, " "bad character %#x", line[bit]); putc(byte, stdout); } if (size != 0 && size != 8 && size != 14 && size != 16) errx(1, "bad file format, wrong size %d (at end)", size); } void usage(void) { fprintf(stderr, "usage: fontedit \n\n"); fprintf(stderr, "this will read the human readable file \n"); fprintf(stderr, "and write a raw font file to stdout which you\n"); fprintf(stderr, "can then use as a console font.\n"); exit(EXIT_FAILURE); }