8 kreadbits(char *file, int n, long *chars, int size, uchar *bits, int **doneptr)
20 static int dig[256] = {
21 ['0'] 0, ['1'] 1, ['2'] 2, ['3'] 3, ['4'] 4, ['5'] 5, ['6'] 6, ['7'] 7,
22 ['8'] 8, ['9'] 9, ['a'] 10, ['b'] 11, ['c'] 12, ['d'] 13, ['e'] 14, ['f'] 15,
25 bf = Bopen(file, OREAD);
27 fprint(2, "%s: %s: %r\n", argv0, file);
28 exits("bitfile open error");
30 done = (int *)malloc(n*sizeof(done[0]));
32 fprint(2, "%s: malloc error (%d bytes)\n", argv0, n);
33 exits("malloc error");
36 memset(done, 0, n*sizeof(done[0]));
39 for(i = 0; i < n; i++){
48 Brdline(bf, '\n'); /* header line 1 */
49 Brdline(bf, '\n'); /* header line 2 */
50 while(p = (char *)Brdline(bf, '\n')){
51 c = strtol(p+17, (char **)0, 10);
52 if((c < kmin) || (c > kmax))
54 for(i = 0; i < n; i++)
60 for(i = 0; i < size; i++){ /* rows */
61 for(j = 0; j < byt; j++){
62 *b++ = (dig[*p]<<4) | dig[p[1]];
70 nbits = (uchar *)malloc(nch*byt*size);
72 fprint(2, "%s: malloc error (%d bytes)\n", argv0, nch*byt);
73 exits("malloc error");
76 for(i = 0; i < n; i++)
78 for(j = 0; j < size; j++)
79 memmove(nbits+c*byt+j*nch*byt, bits+i*byt+j*n*byt, byt);
82 bm = balloc((Rectangle){(Point){0, 0}, (Point){nch*size, size}}, 0);
84 fprint(2, "%s: balloc failure\n", argv0);
85 exits("balloc failure");
87 wrbitmap(bm, 0, size, nbits);
88 for(i = 0; i < n; i++)
90 /*fprint(2, "char 0x%x (%d) not found\n", chars[i], chars[i]);/**/