1 #ifndef lint 2 static char sccsid[] = "@(#)rotprt.c 4.2 (Berkeley) 07/16/83"; 3 #endif 4 5 /* 6 * Print a rotated font. 7 */ 8 9 #include <stdio.h> 10 #include <vfont.h> 11 #include <sys/types.h> 12 #include <sys/stat.h> 13 14 char *chp; 15 char *sbrk(); 16 17 main(argc,argv) 18 char **argv; 19 { 20 struct header h; 21 struct dispatch d[256]; 22 struct stat stb; 23 off_t tell(); 24 int i,size; 25 26 argc--, argv++; 27 if (argc > 0) { 28 close(0); 29 if (open(argv[0], 0) < 0) 30 perror(argv[0]), exit(1); 31 } 32 if (read(0, &h, sizeof(h)) != sizeof(h)) 33 fprintf(stderr, "header read error\n"), exit(1); 34 if (h.magic != 0436) 35 fprintf(stderr, "bad magic number\n"), exit(1); 36 if (read(0, d, sizeof(d)) != sizeof(d)) 37 fprintf(stderr, "dispatch read error\n"), exit(1); 38 fstat(0, &stb); 39 size = stb.st_size - tell(0); 40 fprintf(stderr, "%d bytes of characters\n", size); 41 chp = sbrk(size); 42 read(0, chp, size); 43 /* write(1, &h, sizeof (h)); */ 44 for (i = 0; i < 256; i++) 45 rprt(i, &d[i], chp+d[i].addr); 46 } 47 48 rprt(i, dp, cp) 49 int i; 50 struct dispatch *dp; 51 char *cp; 52 { 53 int bpl, j; 54 55 if (dp->nbytes == 0) 56 return; 57 if (i >= 0200) 58 printf("M-"), i -= 0200; 59 if (i < 040) 60 printf("^%c", i|'@'); 61 else if (i == 0177) 62 printf("^?"); 63 else 64 printf("%c", i); 65 printf("%d bytes, l %d r %d u %d d %d:\n", 66 dp->nbytes, dp->left, dp->right, dp->up, dp->down); 67 bpl = (dp->up+dp->down+7)/8; 68 for (i = 0; i < dp->right+dp->left; i++) { 69 for (j = 0; j < bpl; j++) 70 pbits(cp[j]); 71 cp += bpl; 72 printf("\n"); 73 } 74 printf("========\n"); 75 } 76 77 pbits(i) 78 register int i; 79 { 80 register int j; 81 82 for (j = 8; j > 0; j--) { 83 printf((i & 0x80) ? " *" : " "); 84 i <<= 1; 85 } 86 } 87