timeval => timespec
[unix-history] / usr / src / sbin / fsck / pass4.c
index 93b83f5..41a6e40 100644 (file)
@@ -1,18 +1,20 @@
 /*
 /*
- * Copyright (c) 1980 Regents of the University of California.
- * All rights reserved.  The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * Copyright (c) 1980, 1986 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * %sccs.include.redist.c%
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)pass4.c    5.4 (Berkeley) %G%";
-#endif not lint
+static char sccsid[] = "@(#)pass4.c    5.12 (Berkeley) %G%";
+#endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 
 #include <sys/param.h>
 #include <sys/time.h>
-#include <sys/vnode.h>
-#include <ufs/inode.h>
-#include <ufs/fs.h>
+#include <ufs/ufs/dinode.h>
+#include <ufs/ffs/fs.h>
+#include <stdlib.h>
+#include <string.h>
 #include "fsck.h"
 
 int    pass4check();
 #include "fsck.h"
 
 int    pass4check();
@@ -21,6 +23,7 @@ pass4()
 {
        register ino_t inumber;
        register struct zlncnt *zlnp;
 {
        register ino_t inumber;
        register struct zlncnt *zlnp;
+       struct dinode *dp;
        struct inodesc idesc;
        int n;
 
        struct inodesc idesc;
        int n;
 
@@ -42,7 +45,7 @@ pass4()
                                                zlnp->zlncnt = zlnhead->zlncnt;
                                                zlnp = zlnhead;
                                                zlnhead = zlnhead->next;
                                                zlnp->zlncnt = zlnhead->zlncnt;
                                                zlnp = zlnhead;
                                                zlnhead = zlnhead->next;
-                                               free(zlnp);
+                                               free((char *)zlnp);
                                                clri(&idesc, "UNREF", 1);
                                                break;
                                        }
                                                clri(&idesc, "UNREF", 1);
                                                break;
                                        }
@@ -54,6 +57,12 @@ pass4()
                        break;
 
                case DCLEAR:
                        break;
 
                case DCLEAR:
+                       dp = ginode(inumber);
+                       if (dp->di_size == 0) {
+                               clri(&idesc, "ZERO LENGTH", 1);
+                               break;
+                       }
+                       /* fall through */
                case FCLEAR:
                        clri(&idesc, "BAD/DUP", 1);
                        break;
                case FCLEAR:
                        clri(&idesc, "BAD/DUP", 1);
                        break;
@@ -76,16 +85,16 @@ pass4check(idesc)
        daddr_t blkno = idesc->id_blkno;
 
        for (nfrags = idesc->id_numfrags; nfrags > 0; blkno++, nfrags--) {
        daddr_t blkno = idesc->id_blkno;
 
        for (nfrags = idesc->id_numfrags; nfrags > 0; blkno++, nfrags--) {
-               if (outrange(blkno, 1)) {
+               if (chkrange(blkno, 1)) {
                        res = SKIP;
                        res = SKIP;
-               } else if (getbmap(blkno)) {
+               } else if (testbmap(blkno)) {
                        for (dlp = duplist; dlp; dlp = dlp->next) {
                                if (dlp->dup != blkno)
                                        continue;
                                dlp->dup = duplist->dup;
                                dlp = duplist;
                                duplist = duplist->next;
                        for (dlp = duplist; dlp; dlp = dlp->next) {
                                if (dlp->dup != blkno)
                                        continue;
                                dlp->dup = duplist->dup;
                                dlp = duplist;
                                duplist = duplist->next;
-                               free(dlp);
+                               free((char *)dlp);
                                break;
                        }
                        if (dlp == 0) {
                                break;
                        }
                        if (dlp == 0) {