From de8e916714a79b4f003a51bd316b679293cc2613 Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Fri, 26 Aug 1994 18:03:07 +0000 Subject: entered into RCS --- bsdfsck/pass5.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'bsdfsck') diff --git a/bsdfsck/pass5.c b/bsdfsck/pass5.c index a802e35a..11877f9d 100644 --- a/bsdfsck/pass5.c +++ b/bsdfsck/pass5.c @@ -33,7 +33,7 @@ #ifndef lint /*static char sccsid[] = "from: @(#)pass5.c 8.2 (Berkeley) 2/2/94";*/ -static char *rcsid = "$Id: pass5.c,v 1.2 1994/08/23 20:02:44 mib Exp $"; +static char *rcsid = "$Id: pass5.c,v 1.3 1994/08/26 18:03:07 mib Exp $"; #endif /* not lint */ #include @@ -43,6 +43,44 @@ static char *rcsid = "$Id: pass5.c,v 1.2 1994/08/23 20:02:44 mib Exp $"; #include #include "fsck.h" +/* From ../ufs/subr.c: */ + +/* + * Update the frsum fields to reflect addition or deletion + * of some frags. + */ +void +ffs_fragacct(fs, fragmap, fraglist, cnt) + struct fs *fs; + int fragmap; + long fraglist[]; + int cnt; +{ + int inblk; + register int field, subfield; + register int siz, pos; + + inblk = (int)(fragtbl[fs->fs_frag][fragmap]) << 1; + fragmap <<= 1; + for (siz = 1; siz < fs->fs_frag; siz++) { + if ((inblk & (1 << (siz + (fs->fs_frag % NBBY)))) == 0) + continue; + field = around[siz]; + subfield = inside[siz]; + for (pos = siz; pos <= fs->fs_frag; pos++) { + if ((fragmap & field) == subfield) { + fraglist[siz] += cnt; + pos += siz; + field <<= siz; + subfield <<= siz; + } + field <<= 1; + subfield <<= 1; + } + } +} + + pass5() { int c, blk, frags, basesize, sumsize, mapsize, savednrpos; -- cgit v1.2.3