fdisk_is_details
fdisk_is_labeltype
fdisk_is_listonly
+fdisk_is_ptcollision
fdisk_is_readonly
fdisk_is_regfile
fdisk_new_context
return cxt->collision;
}
+/**
+ * fdisk_is_ptcollision:
+ * @cxt: fdisk context
+ *
+ * The collision detected by library is another partition table. Note that libfdisk
+ * does not support all partitions tables, so fdisk_has_label() may return false and
+ * fdisk_is_ptcollision() may return true.
+ *
+ * Returns: 0 or 1
+ */
+int fdisk_is_ptcollision(struct fdisk_context *cxt)
+{
+ return cxt->pt_collision;
+}
+
/**
* fdisk_get_npartitions:
* @cxt: context
display_in_cyl_units : 1, /* for obscure labels */
display_details : 1, /* expert display mode */
protect_bootbits : 1, /* don't zeroize first sector */
+ pt_collision : 1, /* another PT detected by libblkid */
listonly : 1; /* list partition, nothing else */
char *collision; /* name of already existing FS/PT */
int fdisk_enable_wipe(struct fdisk_context *cxt, int enable);
int fdisk_has_wipe(struct fdisk_context *cxt);
const char *fdisk_get_collision(struct fdisk_context *cxt);
+int fdisk_is_ptcollision(struct fdisk_context *cxt);
int fdisk_set_unit(struct fdisk_context *cxt, const char *str);
const char *fdisk_get_unit(struct fdisk_context *cxt, int n);
FDISK_2.30 {
fdisk_script_has_force_label;
fdisk_is_regfile;
+ fdisk_is_ptcollision;
} FDISK_2.29;
if (rc)
return rc;
+ cxt->pt_collision = 0;
+ free(cxt->collision);
+ cxt->collision = NULL;
+
blkid_probe_enable_superblocks(pr, 1);
blkid_probe_set_superblocks_flags(pr, BLKID_SUBLKS_TYPE);
blkid_probe_enable_partitions(pr, 1);
if (rc == 0) {
const char *name = NULL;
- if (blkid_probe_lookup_value(pr, "TYPE", &name, 0) == 0 ||
- blkid_probe_lookup_value(pr, "PTTYPE", &name, 0) == 0) {
+ if (blkid_probe_lookup_value(pr, "TYPE", &name, 0) == 0)
+ cxt->collision = strdup(name);
+ else if (blkid_probe_lookup_value(pr, "PTTYPE", &name, 0) == 0) {
cxt->collision = strdup(name);
- if (!cxt->collision)
- rc = -ENOMEM;
+ cxt->pt_collision = 1;
}
+
+ if (name && !cxt->collision)
+ rc = -ENOMEM;
}
blkid_free_probe(pr);