|
|
1.1 ! root 1: /* ! 2: * $Locker: $ ! 3: */ ! 4: static char *rcsid = "$Header: showsnf.c,v 1.3 87/07/24 14:54:26 toddb Exp $"; ! 5: #include <stdio.h> ! 6: #include <sys/types.h> ! 7: #include <sys/file.h> ! 8: #include <sys/stat.h> ! 9: #include <errno.h> ! 10: /* #include <malloc.h> */ extern char *malloc(), *realloc(); ! 11: ! 12: #include "misc.h" ! 13: #include "Xmd.h" ! 14: #include "X.h" ! 15: #include "Xproto.h" ! 16: #include "fontstruct.h" ! 17: #include "font.h" ! 18: ! 19: #include "fc.h" /* used by converters only */ ! 20: char *program; ! 21: ! 22: int glyphPad = DEFAULTGLPAD; ! 23: int bitorder = DEFAULTBITORDER; ! 24: ! 25: main(argc, argv) ! 26: int argc; ! 27: char **argv; ! 28: { ! 29: int verbose = 0, ! 30: fontcnt = 0; ! 31: ! 32: program = *argv; ! 33: for (argc--, argv++; argc; argc--, argv++) { ! 34: if (argv[0][0] == '-') ! 35: switch(argv[0][1]) { ! 36: case 'v': verbose++; break; ! 37: case 'm': bitorder = MSBFirst; break; ! 38: case 'l': bitorder = LSBFirst; break; ! 39: default: usage(); break; ! 40: } ! 41: else { ! 42: showfont(argv[0], verbose); ! 43: fontcnt++; ! 44: } ! 45: } ! 46: if (!fontcnt) ! 47: usage(); ! 48: exit(0); ! 49: } ! 50: ! 51: usage() ! 52: { ! 53: fprintf(stderr, "Usage: %s [-v] fontfile ...\n", program); ! 54: exit(1); ! 55: } ! 56: ! 57: showfont(file, verbose) ! 58: char *file; ! 59: int verbose; ! 60: { ! 61: char *buf; ! 62: struct stat st; ! 63: TempFont tf; ! 64: FontInfoRec f; ! 65: int fd, i, strings; ! 66: ! 67: if (stat(file, &st) < 0) { ! 68: fprintf(stderr, "can't stat %s\n", file); ! 69: exit(1); ! 70: } ! 71: ! 72: fd = open(file, O_RDONLY); ! 73: if (fd < 0) { ! 74: fprintf(stderr, "can't open %s\n", file); ! 75: exit(1); ! 76: } ! 77: buf = malloc(st.st_size); ! 78: read(fd, buf, st.st_size); ! 79: close(fd); ! 80: ! 81: tf.pFI = (FontInfoPtr)buf; ! 82: tf.pCI = (CharInfoPtr)(buf + BYTESOFFONTINFO(tf.pFI)); ! 83: tf.pGlyphs = ((unsigned char *)tf.pCI) + BYTESOFCHARINFO(tf.pFI); ! 84: tf.pFP = (FontPropPtr)(tf.pGlyphs + BYTESOFGLYPHINFO(tf.pFI)); ! 85: strings = (int)tf.pFP + BYTESOFPROPINFO(tf.pFI); ! 86: ! 87: for (i=0; i<tf.pFI->nProps; i++) { ! 88: tf.pFP[i].name += strings; ! 89: if (tf.pFP[i].indirect) ! 90: tf.pFP[i].value += strings; ! 91: } ! 92: printf("\n\n------------- %s ---------------\n\n", file); ! 93: DumpFont(&tf, verbose); ! 94: free(buf); ! 95: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.