void flipPartitionMultiple()

in dmg/partition.c [387:432]


void flipPartitionMultiple(Partition* partition, char multiple, char out, unsigned int BlockSize) {
	int i;
	int numPartitions;
	
	if(out) {
		numPartitions = partition->pmMapBlkCnt;
	} else {
		numPartitions = partition->pmMapBlkCnt;
		FLIPENDIAN(numPartitions);
	}
	
	for(i = 0; i < numPartitions; i++) {
		if(out) {
			if(partition->pmSig != APPLE_PARTITION_MAP_SIGNATURE) {
				break;
			}
			FLIPENDIAN(partition->pmSig);
		} else {
			FLIPENDIAN(partition->pmSig);
			if(partition->pmSig != APPLE_PARTITION_MAP_SIGNATURE) {
				break;
			}
		}
		
		FLIPENDIAN(partition->pmMapBlkCnt);
		FLIPENDIAN(partition->pmPyPartStart);
		FLIPENDIAN(partition->pmPartBlkCnt);
		FLIPENDIAN(partition->pmLgDataStart);
		FLIPENDIAN(partition->pmDataCnt);
		FLIPENDIAN(partition->pmPartStatus);
		FLIPENDIAN(partition->pmLgBootStart);
		FLIPENDIAN(partition->pmBootSize);
		FLIPENDIAN(partition->pmBootAddr);
		FLIPENDIAN(partition->pmBootAddr2);
		FLIPENDIAN(partition->pmBootEntry);
		FLIPENDIAN(partition->pmBootEntry2);
		FLIPENDIAN(partition->pmBootCksum);
		FLIPENDIANLE(partition->bootCode);
		
		if(!multiple) {
			break;
		}

		partition = (Partition*)((uint8_t*)partition + BlockSize);
	}
}