1 /* random debugging routines for cut'n'paste when developing */
2
binary(unsigned int val,unsigned int bits)3 static char *binary(unsigned int val, unsigned int bits) {
4 static char data[33] = "";
5 char *ptr = &data[bits];
6 if (bits > 32) return "bits>32";
7 *ptr-- = '\0';
8 while (bits--) { *ptr-- = (val & 1) ? '1' : '0'; val >>= 1; }
9 return &data[0];
10 }
11
cabinfo(struct mscabd_cabinet_p * cab)12 static void cabinfo(struct mscabd_cabinet_p *cab) {
13 struct mscabd_folder_data *dat;
14 struct mscabd_folder_p *fol;
15 struct mscabd_file *fi;
16
17 printf("cab@%p\n", cab);
18 if (!cab) return;
19 printf("- next=%p\n", cab->base.next);
20 printf("- filename=\"%s\"\n", cab->base.filename);
21 printf("- base_offset=%ld\n", cab->base.base_offset);
22 printf("- length=%ld\n", cab->base.length);
23 printf("- prevcab=%p\n", cab->base.prevcab);
24 printf("- nextcab=%p\n", cab->base.nextcab);
25 printf("- prevname=\"%s\"\n", cab->base.nextname);
26 printf("- previnfo=\"%s\"\n", cab->base.nextinfo);
27 printf("- nextname=\"%s\"\n", cab->base.nextname);
28 printf("- nextinfo=\"%s\"\n", cab->base.nextinfo);
29 printf("- flags=0x%x\n", cab->base.flags);
30 printf("- folders:\n");
31 for (fol = cab->folders; fol; fol = fol->next) {
32 printf(" folder@%p\n", fol);
33 printf(" - comp_type=0x%x\n", fol->comp_type);
34 printf(" - merge_prev=%p\n", fol->merge_prev);
35 printf(" - merge_next=%p\n", fol->merge_next);
36 for (dat = &fol->data; dat; dat=dat->next) {
37 printf(" - datasplit@%p = CAB(%p) OFFSET(%ld) BLOCKS(%d)\n",
38 dat, dat->cab, dat->offset, dat->num_blocks);
39 }
40 }
41 printf("- files:\n");
42 for (fi = cab->base.files; fi; fi = fi->next) {
43 printf(" @%p \"%s\" %d FOL(%p) OFFSET(%u)\n",
44 fi, fi->filename, fi->length,
45 ((struct mscabd_file_p *) fi)->folder,
46 ((struct mscabd_file_p *) fi)->offset);
47 }
48 }
49
50
51