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