[git commit] fdisk: fix spurious warning about zero unused sectors

Denys Vlasenko vda.linux at googlemail.com
Sun Feb 1 13:36:06 UTC 2026


commit: https://git.busybox.net/busybox/commit/?id=3b19867d97cf4cac7d68e7edb7b18df12875c68b
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

while at it, deindent nested for()

function                                             old     new   delta
verify_sun                                           429     447     +18

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 util-linux/fdisk_sun.c | 64 +++++++++++++++++++++++++++-----------------------
 1 file changed, 34 insertions(+), 30 deletions(-)

diff --git a/util-linux/fdisk_sun.c b/util-linux/fdisk_sun.c
index d70bd111c..e9b9ffd11 100644
--- a/util-linux/fdisk_sun.c
+++ b/util-linux/fdisk_sun.c
@@ -414,40 +414,42 @@ verify_sun(void)
 {
 	start_and_len_t sl[8];
 	unsigned start, stop;
-	int i,j,k;
+	int i, j, k;
 
 	fetch_sun(sl, &start, &stop);
 	for (k = 0; k < 7; k++) {
 		for (i = 0; i < 8; i++) {
-			if (k && (sl[i].len % (g_heads * g_sectors))) {
+			if (k != 0
+			 && (sl[i].len % (g_heads * g_sectors)) != 0
+			) {
 				printf("Partition %u doesn't end on cylinder boundary\n", i+1);
 			}
-			if (sl[i].len) {
-				for (j = 0; j < i; j++)
-					if (sl[j].len) {
-						if (sl[j].start == sl[i].start + sl[i].len) {
-							sl[j].start = sl[i].start;
-							sl[j].len += sl[i].len;
-							sl[i].len = 0;
-						} else if (sl[i].start == sl[j].start + sl[j].len) {
-							sl[j].len += sl[i].len;
-							sl[i].len = 0;
-						} else if (!k) {
-							if (sl[i].start < sl[j].start + sl[j].len
-							 && sl[j].start < sl[i].start + sl[i].len
-							) {
-								unsigned starto, endo;
-								starto = sl[i].start;
-								if (sl[j].start > starto)
-									starto = sl[j].start;
-								endo = sl[i].start + sl[i].len;
-								if (sl[j].start + sl[j].len < endo)
-									endo = sl[j].start + sl[j].len;
-								printf("Partition %u overlaps with others in "
-									"sectors %u-%u\n", i+1, starto, endo);
-							}
-						}
-					}
+			if (sl[i].len == 0)
+				continue;
+			for (j = 0; j < i; j++) {
+				if (sl[j].len == 0)
+					continue;
+				if (sl[j].start == sl[i].start + sl[i].len) {
+					sl[j].start = sl[i].start;
+					sl[j].len += sl[i].len;
+					sl[i].len = 0;
+				} else if (sl[i].start == sl[j].start + sl[j].len) {
+					sl[j].len += sl[i].len;
+					sl[i].len = 0;
+				} else if (k == 0
+				 && sl[i].start < sl[j].start + sl[j].len
+				 && sl[j].start < sl[i].start + sl[i].len
+				) {
+					unsigned starto, endo;
+					starto = sl[i].start;
+					if (sl[j].start > starto)
+						starto = sl[j].start;
+					endo = sl[i].start + sl[i].len;
+					if (sl[j].start + sl[j].len < endo)
+						endo = sl[j].start + sl[j].len;
+					printf("Partition %u overlaps with others in "
+						"sectors %u-%u\n", i+1, starto, endo);
+				}
 			}
 		}
 	}
@@ -457,13 +459,15 @@ verify_sun(void)
 		printf("No partitions defined\n");
 		return;
 	}
-	stop = g_cylinders * g_heads * g_sectors;
 	if (sl[0].start != 0)
 		printf("Unused gap - sectors %u-%u\n", 0, sl[0].start);
 	for (i = 0; i < 7 && sl[i+1].len != 0; i++) {
-		printf("Unused gap - sectors %u-%u\n", sl[i].start + sl[i].len, sl[i+1].start);
+		if (sl[i].start + sl[i].len < sl[i+1].start)
+			printf("Unused gap - sectors %u-%u\n",
+				sl[i].start + sl[i].len, sl[i+1].start);
 	}
 	start = sl[i].start + sl[i].len;
+	stop = g_cylinders * g_heads * g_sectors;
 	if (start < stop)
 		printf("Unused gap - sectors %u-%u\n", start, stop);
 }


More information about the busybox-cvs mailing list