int add_data_to_map(struct dpme *data, long ix, partition_map_header *map) { partition_map *entry; //printf("add data %d to map\n", ix); entry = (partition_map *) malloc(sizeof(partition_map)); if (entry == NULL) { error(errno, "can't allocate memory for map entries"); return 0; } entry->next_on_disk = NULL; entry->prev_on_disk = NULL; entry->next_by_base = NULL; entry->prev_by_base = NULL; entry->disk_address = ix; entry->the_map = map; entry->data = data; entry->contains_driver = contains_driver(entry); entry->HFS_name = get_HFS_name(entry, &entry->HFS_kind); insert_in_disk_order(entry); insert_in_base_order(entry); map->blocks_in_map++; if (map->maximum_in_map < 0) { if (istrncmp(data->dpme_type, kMapType, DPISTRLEN) == 0) { map->maximum_in_map = data->dpme_pblocks; } } return 1; }
void do_update_dpme(partition_map *entry) { int slice = 0; if (!entry) return; dpme_init_flags(entry->data); entry->HFS_name = get_HFS_name(entry, &entry->HFS_kind); if (istrncmp(entry->data->dpme_type, kUnixType, DPISTRLEN) == 0) { printf("Available partition slices for %s:\n",entry->data->dpme_type); printf(" a root partition\n"); printf(" b swap partition\n"); printf(" c do not set any bzb bits\n"); printf(" g user partition\n"); printf("Other lettered values will create user partitions\n"); get_command("Select a slice for default bzb values: ",0,&slice); } bzb_init_slice((BZB *)entry->data->dpme_bzb,slice); entry->the_map->changed = 1; }