Module Name:    src
Committed By:   tsutsui
Date:           Sun May 19 15:52:34 UTC 2024

Modified Files:
        src/distrib/cdrom/macppc_installboot: cd9660.c installboot.c

Log Message:
Use native cd9660 blocksize to specify block numbers in cd9660.c.

This reduces diffs from src/usr.sbin/installboot/cd9660.c.
Also explicitly call cd9660_match() to get fstype->blocksize properly.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/distrib/cdrom/macppc_installboot/cd9660.c
cvs rdiff -u -r1.6 -r1.7 src/distrib/cdrom/macppc_installboot/installboot.c

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

Modified files:

Index: src/distrib/cdrom/macppc_installboot/cd9660.c
diff -u src/distrib/cdrom/macppc_installboot/cd9660.c:1.5 src/distrib/cdrom/macppc_installboot/cd9660.c:1.6
--- src/distrib/cdrom/macppc_installboot/cd9660.c:1.5	Sun May 19 15:51:30 2024
+++ src/distrib/cdrom/macppc_installboot/cd9660.c	Sun May 19 15:52:34 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd9660.c,v 1.5 2024/05/19 15:51:30 tsutsui Exp $	*/
+/*	$NetBSD: cd9660.c,v 1.6 2024/05/19 15:52:34 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 2005 Izumi Tsutsui.  All rights reserved.
@@ -30,7 +30,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(__lint)
-__RCSID("$NetBSD: cd9660.c,v 1.5 2024/05/19 15:51:30 tsutsui Exp $");
+__RCSID("$NetBSD: cd9660.c,v 1.6 2024/05/19 15:52:34 tsutsui Exp $");
 #endif	/* !__lint */
 
 #include <sys/param.h>
@@ -213,8 +213,6 @@ cd9660_findstage2(ib_params *params, uin
 			found = 1;
 			/* ISO filesystem always has contiguous file blocks */
 			blocks[0].block = (int64_t)isonum_733(idr->extent);
-			/* XXX bootxx assumes blocksize is 512 */
-			blocks[0].block *= blocksize / 512;
 			blocks[0].blocksize =
 			    roundup(isonum_733(idr->size), blocksize);
 			*maxblk = 1;

Index: src/distrib/cdrom/macppc_installboot/installboot.c
diff -u src/distrib/cdrom/macppc_installboot/installboot.c:1.6 src/distrib/cdrom/macppc_installboot/installboot.c:1.7
--- src/distrib/cdrom/macppc_installboot/installboot.c:1.6	Sun May 19 15:51:30 2024
+++ src/distrib/cdrom/macppc_installboot/installboot.c	Sun May 19 15:52:34 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: installboot.c,v 1.6 2024/05/19 15:51:30 tsutsui Exp $	*/
+/*	$NetBSD: installboot.c,v 1.7 2024/05/19 15:52:34 tsutsui Exp $	*/
 
 /*-
  * Copyright (c) 2005 Izumi Tsutsui.  All rights reserved.
@@ -47,6 +47,12 @@ static	void usage(void);
 
 static	ib_params	installboot_params;
 
+static	struct ib_fs cd9660_fstype = {
+	.name = "cd9660",
+	.match = cd9660_match,
+	.findstage2 = cd9660_findstage2
+};
+
 int
 main(int argc, char **argv)
 {
@@ -59,6 +65,7 @@ main(int argc, char **argv)
 	uint32_t nblk, maxblk, blk_i;
 	int rv;
 	ib_block *blocks;
+	uint64_t block;
 
 	setprogname(argv[0]);
 	params = &installboot_params;
@@ -70,11 +77,16 @@ main(int argc, char **argv)
 		usage();
 
 	params->filesystem = argv[1];
+	params->fstype = &cd9660_fstype;
 
 	if ((params->fsfd = open(params->filesystem, O_RDWR, 0600)) == -1)
 		err(1, "Opening file system `%s' read", params->filesystem);
 	if (fstat(params->fsfd, &params->fsstat) == -1)
 		err(1, "Examining file system `%s'", params->filesystem);
+	if (!params->fstype->match(params))
+		errx(1, "File system `%s' is not of type %s",
+		    params->filesystem, params->fstype->name);
+
 #ifdef DEBUG
 	printf("file system: %s, %ld bytes\n",
 	    params->filesystem, (long)params->fsstat.st_size);
@@ -167,14 +179,16 @@ main(int argc, char **argv)
 	}
 
 	nblk = maxblk;
-	if (!cd9660_findstage2(params, &nblk, blocks)) {
+	if (!params->fstype->findstage2(params, &nblk, blocks)) {
 		exit(1);
 	}
 
 	bbinfop->bbi_block_count = htobe32(nblk);
 	bbinfop->bbi_block_size = htobe32(blocks[0].blocksize);
 	for (blk_i = 0; blk_i < nblk; blk_i++) {
-		bbinfop->bbi_block_table[blk_i] = htobe32(blocks[blk_i].block);
+		/* XXX bootxx assumes blocksize is 512 */
+		block = blocks[blk_i].block * (params->fstype->blocksize / 512);
+		bbinfop->bbi_block_table[blk_i] = htobe32(block);
 		if (blocks[blk_i].blocksize < blocks[0].blocksize &&
 		    blk_i + 1 != nblk) {
 			warnx("Secondary bootstrap `%s' blocks do not have "

Reply via email to