]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: cleanup label geometry API
authorKarel Zak <kzak@redhat.com>
Wed, 13 Aug 2014 22:09:48 +0000 (00:09 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 13 Aug 2014 22:09:48 +0000 (00:09 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
disk-utils/fdisk.c
libfdisk/src/context.c
libfdisk/src/fdiskP.h
libfdisk/src/label.c
libfdisk/src/libfdisk.h

index 9d6230f70ce21798e084c4464e53b16aad5b9404..4a9262905fa8ed4d2b734080fd7e2c8724675f23 100644 (file)
@@ -503,6 +503,7 @@ void change_partition_type(struct fdisk_context *cxt)
 void list_disk_geometry(struct fdisk_context *cxt)
 {
        char *id = NULL;
+       struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
        uint64_t bytes = cxt->total_sectors * cxt->sector_size;
        char *strsz = size_to_human_string(SIZE_SUFFIX_SPACE
                                           | SIZE_SUFFIX_3LETTER, bytes);
@@ -512,7 +513,7 @@ void list_disk_geometry(struct fdisk_context *cxt)
                        bytes, (uintmax_t) cxt->total_sectors);
        free(strsz);
 
-       if (fdisk_require_geometry(cxt) || fdisk_use_cylinders(cxt))
+       if (fdisk_label_require_geometry(lb) || fdisk_use_cylinders(cxt))
                fdisk_info(cxt, _("Geometry: %d heads, %llu sectors/track, %llu cylinders"),
                               cxt->geom.heads, cxt->geom.sectors, cxt->geom.cylinders);
 
index 03f358639e2027c42dc71b7bf3ec55159038ab1c..c6e99eef4c57c6a1b8d6e472b96e007527ceb5ec 100644 (file)
@@ -690,4 +690,22 @@ const char *fdisk_get_devname(struct fdisk_context *cxt)
 }
 
 
+int fdisk_missing_geometry(struct fdisk_context *cxt)
+{
+       int rc;
+
+       assert(cxt);
+
+       if (!cxt || !cxt->label)
+               return 0;
+
+       rc = (fdisk_label_require_geometry(cxt->label) &&
+                   (!cxt->geom.heads || !cxt->geom.sectors
+                                     || !cxt->geom.cylinders));
+
+       if (rc && !fdisk_is_listonly(cxt))
+               fdisk_warnx(cxt, _("Incomplete geometry setting."));
+
+       return rc;
+}
 
index 2d5705e27e113914d004640af2042ee7812bb135..8d70c4ce031e6e5d48412dbc18209c52a51a30e6 100644 (file)
@@ -380,6 +380,7 @@ struct fdisk_context {
 /* context.c */
 extern int __fdisk_switch_label(struct fdisk_context *cxt,
                                    struct fdisk_label *lb);
+extern int fdisk_missing_geometry(struct fdisk_context *cxt);
 
 /* alignment.c */
 sector_t fdisk_scround(struct fdisk_context *cxt, sector_t num);
index 36e4688d992d3d18e2d6aaf662d969c3420b2e0d..c69bc170a150d37c079ee32ebb65ed4fe9e13429 100644 (file)
@@ -53,6 +53,19 @@ const char *fdisk_label_get_name(struct fdisk_label *lb)
        return lb ? lb->name : NULL;
 }
 
+/**
+ * fdisk_label_require_geometry:
+ * @lb: label
+ *
+ * Returns: 1 if label requires CHS geometry
+ */
+int fdisk_label_require_geometry(struct fdisk_label *lb)
+{
+       assert(lb);
+
+       return lb->flags & FDISK_LABEL_FL_REQUIRE_GEOMETRY ? 1 : 0;
+}
+
 
 /**
  * fdisk_write_disklabel:
@@ -71,29 +84,6 @@ int fdisk_write_disklabel(struct fdisk_context *cxt)
        return cxt->label->op->write(cxt);
 }
 
-int fdisk_require_geometry(struct fdisk_context *cxt)
-{
-       assert(cxt);
-
-       return cxt->label
-              && cxt->label->flags & FDISK_LABEL_FL_REQUIRE_GEOMETRY ? 1 : 0;
-}
-
-int fdisk_missing_geometry(struct fdisk_context *cxt)
-{
-       int rc;
-
-       assert(cxt);
-
-       rc = (fdisk_require_geometry(cxt) &&
-                   (!cxt->geom.heads || !cxt->geom.sectors
-                                     || !cxt->geom.cylinders));
-
-       if (rc && !fdisk_is_listonly(cxt))
-               fdisk_warnx(cxt, _("Incomplete geometry setting."));
-
-       return rc;
-}
 
 /**
  * fdisk_get_fields:
index 8caf60ef7d62bc0c241de980150e254a7f7c7dc2..1db04b7796053cb15437ce794d3fe48017c732fb 100644 (file)
@@ -160,9 +160,7 @@ enum {
 };
 
 const char *fdisk_label_get_name(struct fdisk_label *lb);
-
-extern int fdisk_require_geometry(struct fdisk_context *cxt);
-extern int fdisk_missing_geometry(struct fdisk_context *cxt);
+int fdisk_label_require_geometry(struct fdisk_label *lb);
 
 
 extern int fdisk_write_disklabel(struct fdisk_context *cxt);