make ANSI C compatible
[unix-history] / usr / src / sbin / fsck / inode.c
index a6c724f..e09195e 100644 (file)
@@ -1,6 +1,12 @@
+/*
+ * Copyright (c) 1980 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ */
+
 #ifndef lint
 #ifndef lint
-static char version[] = "@(#)inode.c   3.10 (Berkeley) %G%";
-#endif
+static char sccsid[] = "@(#)inode.c    5.5 (Berkeley) %G%";
+#endif not lint
 
 #include <pwd.h>
 #include <sys/param.h>
 
 #include <pwd.h>
 #include <sys/param.h>
@@ -62,7 +68,8 @@ iblock(idesc, ilevel, isize)
        register daddr_t *aplim;
        int i, n, (*func)(), nif, sizepb;
        BUFAREA ib;
        register daddr_t *aplim;
        int i, n, (*func)(), nif, sizepb;
        BUFAREA ib;
-       extern int pass1check();
+       char buf[BUFSIZ];
+       extern int dirscan(), pass1check();
 
        if (idesc->id_type == ADDR) {
                func = idesc->id_func;
 
        if (idesc->id_type == ADDR) {
                func = idesc->id_func;
@@ -73,8 +80,7 @@ iblock(idesc, ilevel, isize)
        if (outrange(idesc->id_blkno, idesc->id_numfrags)) /* protect thyself */
                return (SKIP);
        initbarea(&ib);
        if (outrange(idesc->id_blkno, idesc->id_numfrags)) /* protect thyself */
                return (SKIP);
        initbarea(&ib);
-       if (getblk(&ib, idesc->id_blkno, sblock.fs_bsize) == NULL)
-               return (SKIP);
+       getblk(&ib, idesc->id_blkno, sblock.fs_bsize);
        ilevel--;
        for (sizepb = sblock.fs_bsize, i = 0; i < ilevel; i++)
                sizepb *= NINDIR(&sblock);
        ilevel--;
        for (sizepb = sblock.fs_bsize, i = 0; i < ilevel; i++)
                sizepb *= NINDIR(&sblock);
@@ -86,7 +92,9 @@ iblock(idesc, ilevel, isize)
                for (ap = &ib.b_un.b_indir[nif]; ap < aplim; ap++) {
                        if (*ap == 0)
                                continue;
                for (ap = &ib.b_un.b_indir[nif]; ap < aplim; ap++) {
                        if (*ap == 0)
                                continue;
-                       if (dofix(idesc, "PARTIALLY TRUNCATED INODE")) {
+                       (void)sprintf(buf, "PARTIALLY TRUNCATED INODE I=%d",
+                               idesc->id_number);
+                       if (dofix(idesc, buf)) {
                                *ap = 0;
                                dirty(&ib);
                        }
                                *ap = 0;
                                dirty(&ib);
                        }
@@ -147,15 +155,12 @@ ginode(inumber)
        daddr_t iblk;
        static ino_t startinum = 0;     /* blk num of first in raw area */
 
        daddr_t iblk;
        static ino_t startinum = 0;     /* blk num of first in raw area */
 
-
        if (inumber < ROOTINO || inumber > imax)
                errexit("bad inode number %d to ginode\n", inumber);
        if (startinum == 0 ||
            inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
                iblk = itod(&sblock, inumber);
        if (inumber < ROOTINO || inumber > imax)
                errexit("bad inode number %d to ginode\n", inumber);
        if (startinum == 0 ||
            inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
                iblk = itod(&sblock, inumber);
-               if (getblk(&inoblk, iblk, sblock.fs_bsize) == NULL) {
-                       return (NULL);
-               }
+               getblk(&inoblk, iblk, sblock.fs_bsize);
                startinum = (inumber / INOPB(&sblock)) * INOPB(&sblock);
        }
        return (&inoblk.b_un.b_dinode[inumber % INOPB(&sblock)]);
                startinum = (inumber / INOPB(&sblock)) * INOPB(&sblock);
        }
        return (&inoblk.b_un.b_dinode[inumber % INOPB(&sblock)]);
@@ -192,7 +197,7 @@ findname(idesc)
        if (dirp->d_ino != idesc->id_parent)
                return (KEEPON);
        bcopy(dirp->d_name, idesc->id_name, dirp->d_namlen + 1);
        if (dirp->d_ino != idesc->id_parent)
                return (KEEPON);
        bcopy(dirp->d_name, idesc->id_name, dirp->d_namlen + 1);
-       return (STOP);
+       return (STOP|FOUND);
 }
 
 findino(idesc)
 }
 
 findino(idesc)
@@ -205,7 +210,7 @@ findino(idesc)
        if (strcmp(dirp->d_name, idesc->id_name) == 0 &&
            dirp->d_ino >= ROOTINO && dirp->d_ino <= imax) {
                idesc->id_parent = dirp->d_ino;
        if (strcmp(dirp->d_name, idesc->id_name) == 0 &&
            dirp->d_ino >= ROOTINO && dirp->d_ino <= imax) {
                idesc->id_parent = dirp->d_ino;
-               return (STOP);
+               return (STOP|FOUND);
        }
        return (KEEPON);
 }
        }
        return (KEEPON);
 }