summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian C. Lane <bcl@redhat.com>2020-08-31 16:40:07 -0700
committerBrian C. Lane <bcl@redhat.com>2020-08-31 16:40:07 -0700
commit691dabc930a6d544dfd8da787cddd159bab34b1e (patch)
tree4b938711014783d46fd91c10e38681a90c4e9a0b
parenteaada0bc9e1cc8adb3a0260707d9474a3e01b835 (diff)
downloadparted-691dabc930a6d544dfd8da787cddd159bab34b1e.tar.gz
parted: Preserve resizepart End when prompted for busy partition
Resizing busy partitions is allowed, but the user is prompted, which erases the cmdline. It is annoying to have to re-end the ending location after answering Yes. This saves the word and pushes it back onto the cmdline after the user agrees to resize the busy partition.
-rw-r--r--parted/parted.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/parted/parted.c b/parted/parted.c
index df0c7ed..dbd38d0 100644
--- a/parted/parted.c
+++ b/parted/parted.c
@@ -1546,6 +1546,7 @@ do_resizepart (PedDevice** dev, PedDisk** diskp)
PedConstraint* constraint;
int rc = 0;
char* end_input = NULL;
+ char* end_size = NULL;
if (!disk) {
disk = ped_disk_new (*dev);
@@ -1561,9 +1562,23 @@ do_resizepart (PedDevice** dev, PedDisk** diskp)
if (!command_line_get_partition (_("Partition number?"), disk, &part))
goto error;
+
+ /* Save the optional End value if the partition is busy. */
+ if (ped_partition_is_busy(part)) {
+ if (command_line_get_word_count())
+ end_size = command_line_pop_word();
+ }
+
+ /* If the partition is busy this may clear the command_line and prompt the user */
if (!_partition_warn_busy (part))
goto error;
+ /* Push the End value back onto the command_line, if it exists */
+ if (end_size) {
+ command_line_push_word(end_size);
+ free(end_size);
+ }
+
start = part->geom.start;
end = oldend = part->geom.end;
if (!command_line_get_sector (_("End?"), *dev, &end, &range_end, &end_input))