Module Name:    src
Committed By:   mlelstv
Date:           Sun Aug 28 10:20:25 UTC 2022

Modified Files:
        src/sbin/fsck_msdos: boot.c check.c

Log Message:
Fix writing of corrected fsinfo.
Continue when fsinfo has been rewritten.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sbin/fsck_msdos/boot.c
cvs rdiff -u -r1.19 -r1.20 src/sbin/fsck_msdos/check.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/fsck_msdos/boot.c
diff -u src/sbin/fsck_msdos/boot.c:1.25 src/sbin/fsck_msdos/boot.c:1.26
--- src/sbin/fsck_msdos/boot.c:1.25	Sun Apr 24 10:35:15 2022
+++ src/sbin/fsck_msdos/boot.c	Sun Aug 28 10:20:25 2022
@@ -27,7 +27,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: boot.c,v 1.25 2022/04/24 10:35:15 hannken Exp $");
+__RCSID("$NetBSD: boot.c,v 1.26 2022/08/28 10:20:25 mlelstv Exp $");
 #endif /* not lint */
 
 #include <stdlib.h>
@@ -147,7 +147,7 @@ readboot(int dosfs, struct bootblock *bo
 		    || fsinfo[0x3fd]
 		    || fsinfo[0x3fe] != 0x55
 		    || fsinfo[0x3ff] != 0xaa) {
-			pwarn("Invalid signature in fsinfo block");
+			pwarn("Invalid signature in fsinfo block\n");
 			if (ask(0, "fix")) {
 				memcpy(fsinfo, "RRaA", 4);
 				memcpy(fsinfo + 0x1e4, "rrAa", 4);
@@ -159,8 +159,8 @@ readboot(int dosfs, struct bootblock *bo
 				fsinfo[0x3ff] = 0xaa;
 				if (lseek(dosfs, boot->FSInfo * boot->BytesPerSec, SEEK_SET)
 				    != boot->FSInfo * boot->BytesPerSec
-				    || write(dosfs, fsinfo, sizeof fsinfo)
-				    != sizeof fsinfo) {
+				    || write(dosfs, fsinfo, 2 * secsize)
+				    != 2 * secsize) {
 					perr("Unable to write FSInfo");
 					free(fsinfo);
 					free(backup);

Index: src/sbin/fsck_msdos/check.c
diff -u src/sbin/fsck_msdos/check.c:1.19 src/sbin/fsck_msdos/check.c:1.20
--- src/sbin/fsck_msdos/check.c:1.19	Thu Jul 10 21:06:20 2014
+++ src/sbin/fsck_msdos/check.c	Sun Aug 28 10:20:25 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: check.c,v 1.19 2014/07/10 21:06:20 christos Exp $	*/
+/*	$NetBSD: check.c,v 1.20 2022/08/28 10:20:25 mlelstv Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997 Wolfgang Solfrank
@@ -28,7 +28,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: check.c,v 1.19 2014/07/10 21:06:20 christos Exp $");
+__RCSID("$NetBSD: check.c,v 1.20 2022/08/28 10:20:25 mlelstv Exp $");
 #endif /* not lint */
 
 #include <stdlib.h>
@@ -72,7 +72,8 @@ checkfilesys(const char *filename)
 		return FSCK_EXIT_CHECK_FAILED;
 	}
 
-	if (readboot(dosfs, &boot) != FSOK) {
+	mod = readboot(dosfs, &boot);
+	if (mod & FSFATAL) {
 		close(dosfs);
 		printf("\n");
 		return FSCK_EXIT_CHECK_FAILED;

Reply via email to