From: Karel Zak Date: Thu, 2 Oct 2014 12:44:49 +0000 (+0200) Subject: libfdisk: (dos) use script label-id X-Git-Tag: v2.26-rc1~354 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95085ec5d6c3f68641892279c2e10d24eb713ebd;p=thirdparty%2Futil-linux.git libfdisk: (dos) use script label-id Signed-off-by: Karel Zak --- 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);