}
int
-get_partition_dflt(struct fdisk_context *cxt, int warn, int max, int dflt) {
- struct pte *pe;
+get_partition_dflt(struct fdisk_context *cxt, int warn, int max, int dflt)
+{
int i;
i = read_int(cxt, 1, dflt, max, 0, _("Partition number")) - 1;
- pe = &ptes[i];
-
- if (warn && !fdisk_is_disklabel(cxt, GPT)) {
- if ((!fdisk_is_disklabel(cxt, SUN) &&
- !fdisk_is_disklabel(cxt, SGI) && !pe->part_table->sys_ind)
- || (fdisk_is_disklabel(cxt, SUN) &&
- sun_is_empty_type(cxt, i))
- || (fdisk_is_disklabel(cxt, SGI) &&
- (!sgi_get_num_sectors(cxt, i))))
- fprintf(stderr,
- _("Warning: partition %d has empty type\n"),
- i+1);
- }
+
+ if (warn && !fdisk_partition_is_used(cxt, i))
+ fdisk_warnx(cxt, _("Warning: partition %d is unused"), i + 1);
+
return i;
}
return rc;
}
+/**
+ * @cxt: fdisk context
+ * @partnum: partition number
+ *
+ * Returns: 1 on success if partition used otherwise 0.
+ */
+int fdisk_partition_is_used(struct fdisk_context *cxt, size_t partnum)
+{
+ int status, rc;
+
+ rc = fdisk_partition_get_status(cxt, partnum, &status);
+ if (rc)
+ return 0;
+
+ return status & FDISK_PARTSTAT_USED;
+}
+
/**
* fdisk_partition_taggle_flag:
* @cxt: fdisk context
extern int fdisk_label_is_changed(struct fdisk_label *lb);
extern int fdisk_partition_get_status(struct fdisk_context *cxt, size_t partnum, int *status);
+extern int fdisk_partition_is_used(struct fdisk_context *cxt, size_t partnum);
extern int fdisk_partition_toggle_flag(struct fdisk_context *cxt, size_t partnum, unsigned long flag);
/* alignment.c */