aboutsummaryrefslogtreecommitdiffstats
path: root/disk-utils/fdisk-menu.c
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2020-09-30 11:49:05 +0200
committerKarel Zak <kzak@redhat.com>2020-09-30 11:49:05 +0200
commit134b6296e390c7761730a36b9f3bfb08d289215e (patch)
treee783721076ce5bae1e29b6fa6364418afbd68109 /disk-utils/fdisk-menu.c
parentffac9652c737b97069732a6a2b1eae8d3db40d57 (diff)
downloadutil-linux-134b6296e390c7761730a36b9f3bfb08d289215e.tar.gz
fdisk: always report fdisk_create_disklabel() errors
This is fdisk, cfdisk and sfdisk change to inform user about fdisk_create_disklabel() issues. Addresses: https://github.com/karelzak/util-linux/issues/1147 Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'disk-utils/fdisk-menu.c')
-rw-r--r--disk-utils/fdisk-menu.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/disk-utils/fdisk-menu.c b/disk-utils/fdisk-menu.c
index 51ae7b5e6e..9f09eea83e 100644
--- a/disk-utils/fdisk-menu.c
+++ b/disk-utils/fdisk-menu.c
@@ -487,7 +487,7 @@ static int script_read(struct fdisk_context *cxt)
rc = fdisk_reassign_device(cxt);
if (rc == 0 && !fdisk_has_label(cxt)) {
fdisk_info(cxt, _("Device does not contain a recognized partition table."));
- fdisk_create_disklabel(cxt, NULL);
+ rc = fdisk_create_disklabel(cxt, NULL);
}
} else
fdisk_info(cxt, _("Script successfully applied."));
@@ -1065,6 +1065,7 @@ static int createlabel_menu_cb(struct fdisk_context **cxt0,
const struct menu_entry *ent)
{
struct fdisk_context *cxt = *cxt0;
+ const char *wanted = NULL;
int rc = -EINVAL;
DBG(MENU, ul_debug("enter Create label menu"));
@@ -1077,26 +1078,33 @@ static int createlabel_menu_cb(struct fdisk_context **cxt0,
case 'g':
/* Deprecated, use 'G' in main menu, just for backward
* compatibility only. */
- rc = fdisk_create_disklabel(cxt, "sgi");
+ wanted = "sgi";
break;
}
} else {
switch (ent->key) {
case 'g':
- rc = fdisk_create_disklabel(cxt, "gpt");
+ wanted = "gpt";
break;
case 'G':
- rc = fdisk_create_disklabel(cxt, "sgi");
+ wanted = "sgi";
break;
case 'o':
- rc = fdisk_create_disklabel(cxt, "dos");
+ wanted = "dos";
break;
case 's':
- rc = fdisk_create_disklabel(cxt, "sun");
+ wanted = "sun";
break;
}
}
+ if (wanted) {
+ rc = fdisk_create_disklabel(cxt, wanted);
+ if (rc) {
+ errno = -rc;
+ fdisk_warn(cxt, _("Failed to create '%s' disk label"), wanted);
+ }
+ }
if (rc == 0 && fdisk_get_collision(cxt))
follow_wipe_mode(cxt);