From 95085ec5d6c3f68641892279c2e10d24eb713ebd Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 2 Oct 2014 14:44:49 +0200 Subject: [PATCH] libfdisk: (dos) use script label-id Signed-off-by: Karel Zak --- libfdisk/src/dos.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/libfdisk/src/dos.c b/libfdisk/src/dos.c index 0448cc9404..3e940c693c 100644 --- a/libfdisk/src/dos.c +++ b/libfdisk/src/dos.c @@ -614,8 +614,8 @@ static int dos_get_disklabel_id(struct fdisk_context *cxt, char **id) static int dos_create_disklabel(struct fdisk_context *cxt) { - unsigned int id; - int rc; + unsigned int id = 0; + int rc, has_id = 0; assert(cxt); assert(cxt->label); @@ -623,8 +623,21 @@ static int dos_create_disklabel(struct fdisk_context *cxt) DBG(LABEL, ul_debug("DOS: creating new disklabel")); + if (cxt->script) { + char *end = NULL; + const char *s = fdisk_script_get_header(cxt->script, "label-id"); + + if (s) { + errno = 0; + id = strtol(s, &end, 16); + if (!errno && end && s < end) + has_id = 1; + } + } + /* random disk signature */ - random_get_bytes(&id, sizeof(id)); + if (!has_id) + random_get_bytes(&id, sizeof(id)); dos_init(cxt); rc = fdisk_init_firstsector_buffer(cxt); -- 2.47.2