BSD 4 development
[unix-history] / usr / src / cmd / vpr / prt.c
CommitLineData
5240ec0d
BJ
1#include <stdio.h>
2#include <vfont.h>
3#include <sys/types.h>
4#include <sys/stat.h>
5
6char *chp;
7char *sbrk();
8
9main(argc,argv)
10char **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
40cvt(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
69pbits(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}