[parted-devel] [PATCH] mkpart: Allow negative start value when FS-TYPE is not given

Niklas Hambüchen mail at nh2.me
Thu May 10 17:23:42 BST 2018


The manual had long documented that negative values are
allowed for both start and end values, but until now negative
start values were rejected if FS-TYPE was not given.

Example:

  # parted --script -a optimal /dev/loop0 -- mklabel gpt mkpart primary ext4 -5MiB 100%
  (succeeds)

  # parted --script -a optimal /dev/loop0 -- mklabel gpt mkpart primary -5MiB 100%
  parted: invalid token: -5MiB
  Error: Expecting a file system type.

This commit fixes the latter error.
The issue was an insufficient lookahead in command line parsing,
looking only for digits when skipping over FS-TYPE.
The fix is including the minus '-' in the lookahead.

Originally reported as Debian bug #880035:

  "parted: fails to use negative start value for 'mkpart' command without specyfying FS-TYPE"
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=880035

Signed-off-by: Niklas Hambüchen <mail at nh2.me>
---
 parted/parted.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/parted/parted.c b/parted/parted.c
index b5e3b97..88f32b9 100644
--- a/parted/parted.c
+++ b/parted/parted.c
@@ -682,7 +682,7 @@ do_mkpart (PedDevice** dev, PedDisk** diskp)
 
         peek_word = command_line_peek_word ();
         if (part_type == PED_PARTITION_EXTENDED
-            || (peek_word && isdigit (peek_word[0]))) {
+            || (peek_word && (isdigit (peek_word[0]) || peek_word[0] == '-'))) {
                 fs_type = NULL;
         } else {
                 if (!command_line_get_fs_type (_("File system type?"),
-- 
2.7.4



More information about the parted-devel mailing list