void show_disk(struct s_hardware *hardware, ZZJSON_CONFIG *conf, ZZJSON **it, int drive) { config=conf; item=it; int i = drive - 0x80; struct driveinfo *d = &hardware->disk_info[i]; char mbr_name[50]={0}; char disk_size[11]={0}; get_mbr_string(hardware->mbr_ids[i], &mbr_name,sizeof(mbr_name)); if ((int)d->edd_params.sectors > 0) sectors_to_size((int)d->edd_params.sectors, disk_size); char disk[5]={0}; char edd_version[5]={0}; snprintf(disk,sizeof(disk),"0x%X",d->disk); snprintf(edd_version,sizeof(edd_version),"%X",d->edd_version); zzjson_print(config, *item); zzjson_free(config, *item); CREATE_ARRAY add_as("disk->number",disk) add_ai("disk->cylinders",d->legacy_max_cylinder +1) add_ai("disk->heads",d->legacy_max_head +1) add_ai("disk->sectors_per_track",d->legacy_sectors_per_track) add_as("disk->edd_version",edd_version) add_as("disk->size",disk_size) add_ai("disk->bytes_per_sector",(int)d->edd_params.bytes_per_sector) add_ai("disk->sectors_per_track",(int)d->edd_params.sectors_per_track) add_as("disk->host_bus",remove_spaces((char *)d->edd_params.host_bus_type)) add_as("disk->interface_type",remove_spaces((char *)d->edd_params.interface_type)) add_as("disk->mbr_name",mbr_name) add_ai("disk->mbr_id",hardware->mbr_ids[i]) END_OF_ARRAY; if (parse_partition_table(d, &show_partition_information)) { if (errno_disk) { APPEND_ARRAY add_as("disk->error", "IO Error") END_OF_APPEND; } else { APPEND_ARRAY add_as("disk->error", "Unrecognized Partition Layout") END_OF_APPEND; } } }
void flush (ZZJSON_CONFIG *config, ZZJSON ** item) { zzjson_print(config, *item); zzjson_free(config, *item); *item=NULL; }