summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fdisks/fdisk.c3
-rw-r--r--fdisks/fdiskbsdlabel.c31
2 files changed, 3 insertions, 31 deletions
diff --git a/fdisks/fdisk.c b/fdisks/fdisk.c
index f95266bd1..4bae23755 100644
--- a/fdisks/fdisk.c
+++ b/fdisks/fdisk.c
@@ -287,6 +287,9 @@ static void write_table(struct fdisk_context *cxt)
rc = fdisk_write_disklabel(cxt);
if (rc)
err(EXIT_FAILURE, _("cannot write disk label"));
+ if (cxt->parent)
+ /* nested PT, don't leave */
+ return;
printf(_("The partition table has been altered!\n\n"));
reread_partition_table(cxt, 1);
diff --git a/fdisks/fdiskbsdlabel.c b/fdisks/fdiskbsdlabel.c
index 3919e5d7d..2bac1b0a7 100644
--- a/fdisks/fdiskbsdlabel.c
+++ b/fdisks/fdiskbsdlabel.c
@@ -374,51 +374,20 @@ bsd_command_prompt (struct fdisk_context *cxt)
return;
switch (tolower(buf[0])) {
- case 'd':
- if (fdisk_ask_partnum(cxt, &n, FALSE) == 0)
- xbsd_delete_part(cxt, n);
- break;
case 'e':
xbsd_edit_disklabel (cxt);
break;
case 'i':
xbsd_write_bootstrap (cxt);
break;
- case 'l':
- list_partition_types (cxt);
- break;
- case 'n':
- if (fdisk_ask_partnum(cxt, &n, TRUE) == 0)
- xbsd_add_part(cxt, n, 0);
- break;
- case 'p':
- xbsd_print_disklabel (cxt, 0);
- break;
- case 'q':
- close (cxt->dev_fd);
- exit ( EXIT_SUCCESS );
- case 'r':
- return;
case 's':
xbsd_print_disklabel (cxt, 1);
break;
- case 't':
- xbsd_change_fstype (cxt);
- break;
- case 'u':
- toggle_units(cxt);
- break;
- case 'w':
- xbsd_write_disklabel (cxt);
- break;
#if !defined (__alpha__)
case 'x':
xbsd_link_part (cxt);
break;
#endif
- default:
- print_fdisk_menu(cxt);
- break;
}
}
}