]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: add disk_partition_is_used()
authorKarel Zak <kzak@redhat.com>
Tue, 5 Mar 2013 10:15:54 +0000 (11:15 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 11 Mar 2013 12:00:57 +0000 (13:00 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
fdisks/fdisk.c
libfdisk/src/label.c
libfdisk/src/libfdisk.h

index 179b905b27f346d95b4818cd79c0ee27ee80f6ca..31a7e50ba669000f0c0ad585d4e631a7df527a86 100644 (file)
@@ -543,24 +543,15 @@ read_int(struct fdisk_context *cxt,
 }
 
 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;
 }
 
index d8ce279db3d4cd28b35eead9044c01743f2b0556..cc21f759ecaf3ec9766f3df346daf320a6ca2357 100644 (file)
@@ -267,6 +267,23 @@ int fdisk_partition_get_status(struct fdisk_context *cxt,
        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
index 87dad95ac25373a9d15846fe15dbaa27622745c4..92c03b69325a89bcb31bc45ba57d67c83f30e7d3 100644 (file)
@@ -121,6 +121,7 @@ extern void fdisk_label_set_changed(struct fdisk_label *lb, int changed);
 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 */