From: Karel Zak Date: Wed, 25 Sep 2013 15:11:08 +0000 (+0200) Subject: libfdisk: improve fdisk_save_user_geometry() X-Git-Tag: v2.24-rc1~62 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a4347d207290d70a8e110d5cce3fa757b3458c5a;p=thirdparty%2Futil-linux.git libfdisk: improve fdisk_save_user_geometry() The functions should not overwrite old setting if the new value (C/H/S) is zero. Signed-off-by: Karel Zak --- diff --git a/libfdisk/src/alignment.c b/libfdisk/src/alignment.c index 0f445acc3c..f661c5cce4 100644 --- a/libfdisk/src/alignment.c +++ b/libfdisk/src/alignment.c @@ -176,12 +176,17 @@ int fdisk_save_user_geometry(struct fdisk_context *cxt, if (!cxt) return -EINVAL; - cxt->user_geom.heads = heads > 256 ? 0 : heads; - cxt->user_geom.sectors = sectors >= 64 ? 0 : sectors; - cxt->user_geom.cylinders = cylinders; + if (heads) + cxt->user_geom.heads = heads > 256 ? 0 : heads; + if (sectors) + cxt->user_geom.sectors = sectors >= 64 ? 0 : sectors; + if (cylinders) + cxt->user_geom.cylinders = cylinders; DBG(GEOMETRY, dbgprint("user C/H/S: %u/%u/%u", - cylinders, heads, sectors)); + (unsigned) cxt->user_geom.cylinders, + (unsigned) cxt->user_geom.heads, + (unsigned) cxt->user_geom.sectors)); return 0; }