diff options
| author | Karel Zak <kzak@redhat.com> | 2020-09-30 11:49:05 +0200 |
|---|---|---|
| committer | Karel Zak <kzak@redhat.com> | 2020-09-30 11:49:05 +0200 |
| commit | 134b6296e390c7761730a36b9f3bfb08d289215e (patch) | |
| tree | e783721076ce5bae1e29b6fa6364418afbd68109 /disk-utils/fdisk-menu.c | |
| parent | ffac9652c737b97069732a6a2b1eae8d3db40d57 (diff) | |
| download | util-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.c | 20 |
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); |
