Module Name:    src
Committed By:   dholland
Date:           Sat Jun  8 23:37:37 UTC 2013

Modified Files:
        src/sbin/dump_lfs: lfs_inode.c

Log Message:
Add unsafe hacks to make this build going forward.

XXX: unsafe hacks are unsafe -- dump needs to be cleaned up to make
XXX: it more fs-independent.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sbin/dump_lfs/lfs_inode.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/dump_lfs/lfs_inode.c
diff -u src/sbin/dump_lfs/lfs_inode.c:1.16 src/sbin/dump_lfs/lfs_inode.c:1.17
--- src/sbin/dump_lfs/lfs_inode.c:1.16	Tue Jan 22 09:39:11 2013
+++ src/sbin/dump_lfs/lfs_inode.c	Sat Jun  8 23:37:37 2013
@@ -1,4 +1,4 @@
-/*      $NetBSD: lfs_inode.c,v 1.16 2013/01/22 09:39:11 dholland Exp $ */
+/*      $NetBSD: lfs_inode.c,v 1.17 2013/06/08 23:37:37 dholland Exp $ */
 
 /*-
  * Copyright (c) 1980, 1991, 1993, 1994
@@ -39,14 +39,13 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 19
 #if 0
 static char sccsid[] = "@(#)main.c      8.6 (Berkeley) 5/1/95";
 #else
-__RCSID("$NetBSD: lfs_inode.c,v 1.16 2013/01/22 09:39:11 dholland Exp $");
+__RCSID("$NetBSD: lfs_inode.c,v 1.17 2013/06/08 23:37:37 dholland Exp $");
 #endif
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #include <sys/stat.h>
-#include <ufs/ufs/dir.h>
 #include <ufs/ufs/dinode.h>
 #include <sys/mount.h>
 #include <ufs/lfs/lfs.h>
@@ -187,22 +186,22 @@ fs_mapinodes(ino_t maxino, u_int64_t *ta
 {
 	ino_t ino;
 
-	for (ino = UFS_ROOTINO; ino < maxino; ino++)
+	for (ino = ULFS_ROOTINO; ino < maxino; ino++)
 		mapfileino(ino, tapesz, anydirskipped);
 }
 
 /*
  * XXX KS - I know there's a better way to do this.
  */
-#define BASE_SINDIR (UFS_NDADDR)
-#define BASE_DINDIR (UFS_NDADDR+NINDIR(fs))
-#define BASE_TINDIR (UFS_NDADDR+NINDIR(fs)+NINDIR(fs)*NINDIR(fs))
+#define BASE_SINDIR (ULFS_NDADDR)
+#define BASE_DINDIR (ULFS_NDADDR+NINDIR(fs))
+#define BASE_TINDIR (ULFS_NDADDR+NINDIR(fs)+NINDIR(fs)*NINDIR(fs))
 
 #define D_UNITS (NINDIR(fs))
 #define T_UNITS (NINDIR(fs)*NINDIR(fs))
 
 static daddr_t
-lfs_bmap(struct lfs *fs, struct ufs1_dinode *idinode, daddr_t lbn)
+lfs_bmap(struct lfs *fs, struct ulfs1_dinode *idinode, daddr_t lbn)
 {
 	daddr_t residue, up;
 	int off=0;
@@ -221,7 +220,7 @@ lfs_bmap(struct lfs *fs, struct ufs1_din
 	 */
 	if(lbn < 0) {
 		lbn *= -1;
-		if (lbn == UFS_NDADDR) {
+		if (lbn == ULFS_NDADDR) {
 			/* printf("lbn %d: single indir base\n", -lbn); */
 			return idinode->di_ib[0]; /* single indirect */
 		} else if(lbn == BASE_DINDIR+1) {
@@ -236,7 +235,7 @@ lfs_bmap(struct lfs *fs, struct ufs1_din
 		 * Find the immediate parent. This is essentially finding the
 		 * residue of modulus, and then rounding accordingly.
 		 */
-		residue = (lbn-UFS_NDADDR) % NINDIR(fs);
+		residue = (lbn-ULFS_NDADDR) % NINDIR(fs);
 		if(residue == 1) {
 			/* Double indirect.  Parent is the triple. */
 			up = idinode->di_ib[2];
@@ -265,12 +264,12 @@ lfs_bmap(struct lfs *fs, struct ufs1_din
 		}
 	} else {
 		/* Direct block.  Its parent must be a single indirect. */
-		if (lbn < UFS_NDADDR)
+		if (lbn < ULFS_NDADDR)
 			return idinode->di_db[lbn];
 		else {
 			/* Parent is an indirect block. */
-			up = -(((lbn-UFS_NDADDR) / D_UNITS) * D_UNITS + UFS_NDADDR);
-			off = (lbn-UFS_NDADDR) % D_UNITS;
+			up = -(((lbn-ULFS_NDADDR) / D_UNITS) * D_UNITS + ULFS_NDADDR);
+			off = (lbn-ULFS_NDADDR) % D_UNITS;
 			/* printf("lbn %d: parent is %d/%d\n", lbn,up,off); */
 		}
 	}
@@ -290,10 +289,13 @@ lfs_ientry(ino_t ino)
 	daddr_t lbn;
 	daddr_t blkno;
 	union dinode *dp;
+	struct ulfs1_dinode *ldp;
     
 	lbn = ino/sblock->lfs_ifpb + sblock->lfs_cleansz + sblock->lfs_segtabsz;
 	dp = getino(sblock->lfs_ifile);
-	blkno = lfs_bmap(sblock, &dp->dp1 ,lbn);
+	/* XXX XXX this is horribly unsafe */
+	ldp = (struct ulfs1_dinode *)dp;
+	blkno = lfs_bmap(sblock, ldp ,lbn);
 	if (blkno != ifblkno)
 		bread(fsbtodb(sblock, blkno), (char *)ifileblock,
 		    sblock->lfs_bsize);
@@ -301,8 +303,8 @@ lfs_ientry(ino_t ino)
 }
 
 /* Search a block for a specific dinode. */
-static struct ufs1_dinode *
-lfs_ifind(struct lfs *fs, ino_t ino, struct ufs1_dinode *dip)
+static struct ulfs1_dinode *
+lfs_ifind(struct lfs *fs, ino_t ino, struct ulfs1_dinode *dip)
 {
 	int cnt;
 
@@ -317,14 +319,14 @@ getino(ino_t inum)
 {
 	static daddr_t inoblkno;
 	daddr_t blkno;
-	static struct ufs1_dinode inoblock[MAXBSIZE / sizeof (struct ufs1_dinode)];
-	static struct ufs1_dinode ifile_dinode; /* XXX fill this in */
-	static struct ufs1_dinode empty_dinode; /* Always stays zeroed */
-	struct ufs1_dinode *dp;
+	static struct ulfs1_dinode inoblock[MAXBSIZE / sizeof (struct ulfs1_dinode)];
+	static struct ulfs1_dinode ifile_dinode; /* XXX fill this in */
+	static struct ulfs1_dinode empty_dinode; /* Always stays zeroed */
+	struct ulfs1_dinode *dp;
 
 	if(inum == sblock->lfs_ifile) {
 		/* Load the ifile inode if not already */
-		if(ifile_dinode.di_u.inumber == 0) {
+		if(ifile_dinode.di_inumber == 0) {
 			blkno = sblock->lfs_idaddr;
 			bread(fsbtodb(sblock, blkno), (char *)inoblock, 
 				(int)sblock->lfs_bsize);
@@ -348,6 +350,7 @@ getino(ino_t inum)
 				ffs_dinode_swap(&inoblock[i], &inoblock[i]);
 #endif
 	}
+	/* XXX XXX: this cast is horribly unsafe */
 	return (union dinode *)lfs_ifind(sblock, inum, inoblock);
 }
 

Reply via email to