int command_line_get_part_flag (const char* prompt, const PedPartition* part, PedPartitionFlag* flag) { StrList* opts = NULL; PedPartitionFlag walk = 0; char* flag_name; while ( (walk = ped_partition_flag_next (walk)) ) { if (ped_partition_is_flag_available (part, walk)) { const char* walk_name; walk_name = ped_partition_flag_get_name (walk); opts = str_list_append (opts, walk_name); opts = str_list_append_unique (opts, _(walk_name)); } } if (opts == NULL) { ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_OK, _("No flags supported")); return 0; } flag_name = command_line_get_word (prompt, NULL, opts, 1); str_list_destroy (opts); if (flag_name) { *flag = ped_partition_flag_get_by_name (flag_name); free (flag_name); return 1; } else return 0; }
static void get_partition_info(struct partition *p, PedPartition *part, PedDevice *dev, bool ignore_fs_type) { if (PART_SIZE_BYTES(dev, part) > 0) p->size = PART_SIZE_BYTES(dev, part); if (!ignore_fs_type && part->fs_type != NULL) { if (strcmp(part->fs_type->name, "linux-swap") == 0) p->fstype = strdup("swap"); else p->fstype = strdup(part->fs_type->name); } else { if (ped_partition_is_flag_available(part, PED_PARTITION_LVM) && ped_partition_get_flag(part, PED_PARTITION_LVM)) { p->fstype = strdup("LVM"); } if (ped_partition_is_flag_available(part, PED_PARTITION_RAID) && ped_partition_get_flag(part, PED_PARTITION_RAID)) { p->fstype = strdup("RAID"); } } }