libclammspack/mspack/debug.c
a7ac0e8d
 /* random debugging routines for cut'n'paste when developing */
 
 static char *binary(unsigned int val, unsigned int bits) {
   static char data[33] = "";
   char *ptr = &data[bits];
   if (bits > 32) return "bits>32";
   *ptr-- = '\0'; 
   while (bits--) { *ptr-- = (val & 1) ? '1' : '0'; val >>= 1; }
   return &data[0];
 }
 
 static void cabinfo(struct mscabd_cabinet_p *cab) {
   struct mscabd_folder_data *dat;
   struct mscabd_folder_p *fol;
   struct mscabd_file *fi;
 
   printf("cab@%p\n", cab);
   if (!cab) return;
   printf("- next=%p\n", cab->base.next);
   printf("- filename=\"%s\"\n", cab->base.filename);
   printf("- base_offset=%ld\n", cab->base.base_offset);
   printf("- length=%ld\n", cab->base.length);
   printf("- prevcab=%p\n", cab->base.prevcab);
   printf("- nextcab=%p\n", cab->base.nextcab);
   printf("- prevname=\"%s\"\n", cab->base.nextname);
   printf("- previnfo=\"%s\"\n", cab->base.nextinfo);
   printf("- nextname=\"%s\"\n", cab->base.nextname);
   printf("- nextinfo=\"%s\"\n", cab->base.nextinfo);
   printf("- flags=0x%x\n", cab->base.flags);
   printf("- folders:\n");
   for (fol = cab->folders; fol; fol = fol->next) {
     printf("  folder@%p\n", fol);
     printf("  - comp_type=0x%x\n", fol->comp_type);
     printf("  - merge_prev=%p\n", fol->merge_prev);
     printf("  - merge_next=%p\n", fol->merge_next);
     for (dat = &fol->data; dat; dat=dat->next) {
       printf("  - datasplit@%p = CAB(%p) OFFSET(%ld) BLOCKS(%d)\n",
              dat, dat->cab, dat->offset, dat->num_blocks);
     }
   }
   printf("- files:\n");
   for (fi = cab->base.files; fi; fi = fi->next) {
     printf("  @%p \"%s\" %d FOL(%p) OFFSET(%u)\n",
            fi, fi->filename, fi->length,
            ((struct mscabd_file_p *) fi)->folder,
            ((struct mscabd_file_p *) fi)->offset);
   }
 }