From 08474fde6669d89f5b77653ba9d378fc16e19903 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 8 Aug 2019 10:34:27 +0200 Subject: libfdisk: (script) support shortcuts in the type= field The unnamed-field format supports partition type shortcuts: ",1MiB,L' but for named-field format it requires full type: (mbr) "size=1MiB,type=83" (gpt) "size=1MiB,type=0FC63DAF-8483-4772-8E79-3D69D8477DE4" This patch implements type shortcuts also for named-field format: "size=1MiB,type=L" to make it more user-friendly and unified. Addresses: https://github.com/karelzak/util-linux/issues/837 Signed-off-by: Karel Zak --- disk-utils/sfdisk.8 | 3 ++- libfdisk/src/script.c | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8 index ff54760ca..c7630bb37 100644 --- a/disk-utils/sfdisk.8 +++ b/disk-utils/sfdisk.8 @@ -462,7 +462,8 @@ GPT partition UUID. GPT partition name. .TP .BI type= code -A hexadecimal number (without 0x) for an MBR partition, or a GUID for a GPT partition. +A hexadecimal number (without 0x) for an MBR partition, a GUID for a GPT partition, +or a shortcut as for unnamed-fields format. For backward compatibility the \fBId=\fR field has the same meaning. .RE .RE diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c index 3db76c87b..a28983dba 100644 --- a/libfdisk/src/script.c +++ b/libfdisk/src/script.c @@ -61,6 +61,8 @@ struct fdisk_script { force_label : 1; /* label: specified */ }; +static struct fdisk_parttype *translate_type_shortcuts(struct fdisk_script *dp, char *str); + static void fdisk_script_free_header(struct fdisk_scriptheader *fi) { @@ -1054,8 +1056,11 @@ static int parse_line_nameval(struct fdisk_script *dp, char *s) rc = next_string(&p, &type); if (rc) break; - pa->type = fdisk_label_parse_parttype( - script_get_label(dp), type); + + pa->type = translate_type_shortcuts(dp, type); + if (!pa->type) + pa->type = fdisk_label_parse_parttype( + script_get_label(dp), type); free(type); if (!pa->type) { -- cgit v1.2.3-55-g7522