Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-5]: src/usr.sbin/dumplfs Pullup revision 1.16 (approved by thor...



details:   https://anonhg.NetBSD.org/src/rev/773eabcb64d1
branches:  netbsd-1-5
changeset: 489294:773eabcb64d1
user:      toshii <toshii%NetBSD.org@localhost>
date:      Mon Aug 28 05:52:34 2000 +0000

description:
Pullup revision 1.16 (approved by thorpej):
  Define  datobyte(fs, da)  macro, to ensure cast to off_t. Fixes PR#9890.

diffstat:

 usr.sbin/dumplfs/dumplfs.c |  38 ++++++++++++++++++++------------------
 1 files changed, 20 insertions(+), 18 deletions(-)

diffs (140 lines):

diff -r 0a263a9ccdc2 -r 773eabcb64d1 usr.sbin/dumplfs/dumplfs.c
--- a/usr.sbin/dumplfs/dumplfs.c        Mon Aug 28 05:39:43 2000 +0000
+++ b/usr.sbin/dumplfs/dumplfs.c        Mon Aug 28 05:52:34 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dumplfs.c,v 1.14 2000/06/14 01:55:37 perseant Exp $    */
+/*     $NetBSD: dumplfs.c,v 1.14.2.1 2000/08/28 05:52:34 toshii Exp $  */
 
 /*-
  * Copyright (c) 1991, 1993
@@ -45,7 +45,7 @@
 #if 0
 static char sccsid[] = "@(#)dumplfs.c  8.5 (Berkeley) 5/24/95";
 #else
-__RCSID("$NetBSD: dumplfs.c,v 1.14 2000/06/14 01:55:37 perseant Exp $");
+__RCSID("$NetBSD: dumplfs.c,v 1.14.2.1 2000/08/28 05:52:34 toshii Exp $");
 #endif
 #endif /* not lint */
 
@@ -89,7 +89,6 @@
 };
 SEGLIST        *seglist;
 
-int daddr_shift;
 char *special;
 
 /* Segment Usage formats */
@@ -115,6 +114,9 @@
                (void)printf("%d\tINUSE\t%d\t%8X    \n", \
                    i, ip->if_version, ip->if_daddr)
 
+#define datobyte(fs, da) /* disk address to bytes */   \
+       (((off_t)(da)) << ((fs)->lfs_bshift - (fs)->lfs_fsbtodb))
+
 int
 main(argc, argv)
        int argc;
@@ -161,25 +163,26 @@
        if (sbdaddr == 0x0) {
                /* Read the first superblock */
                get(fd, LFS_LABELPAD, &(lfs_sb1.lfs_dlfs), sizeof(struct dlfs));
-               daddr_shift = lfs_sb1.lfs_bshift - lfs_sb1.lfs_fsbtodb;
        
                /*
                * Read the second superblock and figure out which check point is
                * most up to date.
                */
                get(fd,
-               lfs_sb1.lfs_sboffs[1] << daddr_shift, &(lfs_sb2.lfs_dlfs), sizeof(struct dlfs));
+                   datobyte(&lfs_sb1, lfs_sb1.lfs_sboffs[1]),
+                   &(lfs_sb2.lfs_dlfs), sizeof(struct dlfs));
        
                lfs_master = &lfs_sb1;
                if (lfs_sb1.lfs_tstamp > lfs_sb2.lfs_tstamp) {
                        lfs_master = &lfs_sb2;
-                       sbdaddr = lfs_sb1.lfs_sboffs[1] << daddr_shift;
+                       sbdaddr =
+                           btodb(datobyte(&lfs_sb1, lfs_sb1.lfs_sboffs[1]));
                } else
                        sbdaddr = btodb(LFS_LABELPAD);
        } else {
                /* Read the first superblock */
-               get(fd, dbtob(sbdaddr), &(lfs_sb1.lfs_dlfs), sizeof(struct dlfs));
-               daddr_shift = lfs_sb1.lfs_bshift - lfs_sb1.lfs_fsbtodb;
+               get(fd, dbtob((off_t)sbdaddr), &(lfs_sb1.lfs_dlfs),
+                   sizeof(struct dlfs));
                lfs_master = &lfs_sb1;
        }
 
@@ -229,7 +232,7 @@
 
        if (!(dpage = malloc(psize)))
                err(1, "malloc");
-       get(fd, addr << daddr_shift, dpage, psize);
+       get(fd, datobyte(lfsp, addr), dpage, psize);
 
        for (dip = dpage + INOPB(lfsp) - 1; dip >= dpage; --dip)
                if (dip->di_inumber == LFS_IFILE_INUM)
@@ -251,7 +254,7 @@
                err(1, "malloc");
        for (inum = 0, addrp = dip->di_db, i = 0; i < block_limit;
            i++, addrp++) {
-               get(fd, *addrp << daddr_shift, ipage, psize);
+               get(fd, datobyte(lfsp, *addrp), ipage, psize);
                if (i < lfsp->lfs_cleansz) {
                        dump_cleaner_info(lfsp, ipage);
                        print_suheader;
@@ -278,12 +281,12 @@
        /* Dump out blocks off of single indirect block */
        if (!(indir = malloc(psize)))
                err(1, "malloc");
-       get(fd, dip->di_ib[0] << daddr_shift, indir, psize);
+       get(fd, datobyte(lfsp, dip->di_ib[0]), indir, psize);
        block_limit = MIN(i + lfsp->lfs_nindir, nblocks);
        for (addrp = indir; i < block_limit; i++, addrp++) {
                if (*addrp == LFS_UNUSED_DADDR)
                        break;
-               get(fd, *addrp << daddr_shift,ipage, psize);
+               get(fd, datobyte(lfsp, *addrp), ipage, psize);
                if (i < lfsp->lfs_cleansz) {
                        dump_cleaner_info(lfsp, ipage);
                        continue;
@@ -309,16 +312,16 @@
        /* Get the double indirect block */
        if (!(dindir = malloc(psize)))
                err(1, "malloc");
-       get(fd, dip->di_ib[1] << daddr_shift, dindir, psize);
+       get(fd, datobyte(lfsp, dip->di_ib[1]), dindir, psize);
        for (iaddrp = dindir, j = 0; j < lfsp->lfs_nindir; j++, iaddrp++) {
                if (*iaddrp == LFS_UNUSED_DADDR)
                        break;
-               get(fd, *iaddrp << daddr_shift, indir, psize);
+               get(fd, datobyte(lfsp, *iaddrp), indir, psize);
                block_limit = MIN(i + lfsp->lfs_nindir, nblocks);
                for (addrp = indir; i < block_limit; i++, addrp++) {
                        if (*addrp == LFS_UNUSED_DADDR)
                                break;
-                       get(fd, *addrp << daddr_shift, ipage, psize);
+                       get(fd, datobyte(lfsp, *addrp), ipage, psize);
                        if (i < lfsp->lfs_cleansz) {
                                dump_cleaner_info(lfsp, ipage);
                                continue;
@@ -460,8 +463,7 @@
        for (dp--, i = 0; i < sp->ss_ninos; dp--) {
                numbytes += lfsp->lfs_bsize;    /* add bytes for inode block */
                printf("\t0x%x {", *dp);
-               get(fd, *dp << (lfsp->lfs_bshift - lfsp->lfs_fsbtodb), inop, 
-                   (1 << lfsp->lfs_bshift));
+               get(fd, datobyte(lfsp, *dp), inop, (1 << lfsp->lfs_bshift));
                for (j = 0; i < sp->ss_ninos && j < INOPB(lfsp); j++, i++) {
                        if (j > 0) 
                                (void)printf(", ");
@@ -513,7 +515,7 @@
            /* addr >> (lfsp->lfs_segshift - daddr_shift), */
                datosn(lfsp, addr),
                addr);
-       sum_offset = (addr << (lfsp->lfs_bshift - lfsp->lfs_fsbtodb));
+       sum_offset = datobyte(lfsp, addr);
 
        sb = 0;
        did_one = 0;



Home | Main Index | Thread Index | Old Index