4.3BSD beta release manual page
[unix-history] / usr / src / sbin / fsck / inode.c
index 74a8bec..a6c724f 100644 (file)
@@ -1,7 +1,8 @@
 #ifndef lint
 #ifndef lint
-static char version[] = "@(#)inode.c   3.6 (Berkeley) %G%";
+static char version[] = "@(#)inode.c   3.10 (Berkeley) %G%";
 #endif
 
 #endif
 
+#include <pwd.h>
 #include <sys/param.h>
 #include <sys/inode.h>
 #include <sys/fs.h>
 #include <sys/param.h>
 #include <sys/inode.h>
 #include <sys/fs.h>
@@ -16,11 +17,12 @@ ckinode(dp, idesc)
        int ret, n, ndb, offset;
        DINODE dino;
 
        int ret, n, ndb, offset;
        DINODE dino;
 
+       idesc->id_fix = DONTKNOW;
+       idesc->id_entryno = 0;
+       idesc->id_filesize = dp->di_size;
        if (SPECIAL(dp))
                return (KEEPON);
        dino = *dp;
        if (SPECIAL(dp))
                return (KEEPON);
        dino = *dp;
-       idesc->id_fix = DONTKNOW;
-       idesc->id_entryno = 0;
        ndb = howmany(dino.di_size, sblock.fs_bsize);
        for (ap = &dino.di_db[0]; ap < &dino.di_db[NDADDR]; ap++) {
                if (--ndb == 0 && (offset = blkoff(&sblock, dino.di_size)) != 0)
        ndb = howmany(dino.di_size, sblock.fs_bsize);
        for (ap = &dino.di_db[0]; ap < &dino.di_db[NDADDR]; ap++) {
                if (--ndb == 0 && (offset = blkoff(&sblock, dino.di_size)) != 0)
@@ -182,6 +184,17 @@ clri(idesc, s, flg)
        }
 }
 
        }
 }
 
+findname(idesc)
+       struct inodesc *idesc;
+{
+       register DIRECT *dirp = idesc->id_dirp;
+
+       if (dirp->d_ino != idesc->id_parent)
+               return (KEEPON);
+       bcopy(dirp->d_name, idesc->id_name, dirp->d_namlen + 1);
+       return (STOP);
+}
+
 findino(idesc)
        struct inodesc *idesc;
 {
 findino(idesc)
        struct inodesc *idesc;
 {
@@ -189,9 +202,9 @@ findino(idesc)
 
        if (dirp->d_ino == 0)
                return (KEEPON);
 
        if (dirp->d_ino == 0)
                return (KEEPON);
-       if (!strcmp(dirp->d_name, idesc->id_name)) {
-               if (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 (KEEPON);
                return (STOP);
        }
        return (KEEPON);
@@ -202,7 +215,7 @@ pinode(ino)
 {
        register DINODE *dp;
        register char *p;
 {
        register DINODE *dp;
        register char *p;
-       char uidbuf[BUFSIZ];
+       struct passwd *pw;
        char *ctime();
 
        printf(" I=%u ", ino);
        char *ctime();
 
        printf(" I=%u ", ino);
@@ -210,14 +223,10 @@ pinode(ino)
                return;
        dp = ginode(ino);
        printf(" OWNER=");
                return;
        dp = ginode(ino);
        printf(" OWNER=");
-       if (getpw((int)dp->di_uid, uidbuf) == 0) {
-               for (p = uidbuf; *p != ':'; p++);
-               *p = 0;
-               printf("%s ", uidbuf);
-       }
-       else {
+       if ((pw = getpwuid((int)dp->di_uid)) != 0)
+               printf("%s ", pw->pw_name);
+       else
                printf("%d ", dp->di_uid);
                printf("%d ", dp->di_uid);
-       }
        printf("MODE=%o\n", dp->di_mode);
        if (preen)
                printf("%s: ", devname);
        printf("MODE=%o\n", dp->di_mode);
        if (preen)
                printf("%s: ", devname);