| 56 | } |
| 57 | |
| 58 | int recover_HFS(const disk_t *disk_car, const hfs_mdb_t *hfs_mdb,partition_t *partition,const int verbose, const int dump_ind, const int backup) |
| 59 | { |
| 60 | uint64_t part_size; |
| 61 | if(test_HFS(disk_car,hfs_mdb,partition,verbose,dump_ind)!=0) |
| 62 | return 1; |
| 63 | /* The extra 0x400 bytes are for the backup MDB */ |
| 64 | part_size=(uint64_t)be16(hfs_mdb->drNmAlBlks)*be32(hfs_mdb->drAlBlkSiz)+be16(hfs_mdb->drAlBlSt)*512+0x400; |
| 65 | partition->sborg_offset=0x400; |
| 66 | partition->sb_size=HFS_SUPERBLOCK_SIZE; |
| 67 | if(backup>0) |
| 68 | { |
| 69 | if(partition->part_offset+2*disk_car->sector_size<part_size) |
| 70 | return 1; |
| 71 | partition->sb_offset=part_size-0x400; |
| 72 | partition->part_offset=partition->part_offset+2*disk_car->sector_size-part_size; |
| 73 | } |
| 74 | partition->part_size=part_size; |
| 75 | set_HFS_info(partition,hfs_mdb); |
| 76 | partition->part_type_i386=P_HFS; |
| 77 | partition->part_type_mac=PMAC_HFS; |
| 78 | partition->part_type_gpt=GPT_ENT_TYPE_MAC_HFS; |
| 79 | if(verbose>0) |
| 80 | { |
| 81 | log_info("part_size %lu\n",(long unsigned)(partition->part_size/disk_car->sector_size)); |
| 82 | } |
| 83 | return 0; |
| 84 | } |
| 85 | |
| 86 | int test_HFS(const disk_t *disk_car, const hfs_mdb_t *hfs_mdb, const partition_t *partition, const int verbose, const int dump_ind) |
| 87 | { |
no test coverage detected