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, ¶ms->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 "