add function prototypes
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 28 Apr 1995 02:33:09 +0000 (18:33 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 28 Apr 1995 02:33:09 +0000 (18:33 -0800)
SCCS-vsn: sbin/fsck/preen.c 8.4
SCCS-vsn: sbin/fsck/inode.c 8.7
SCCS-vsn: sbin/fsck/pass1.c 8.4
SCCS-vsn: sbin/fsck/pass3.c 8.2
SCCS-vsn: sbin/fsck/Makefile 8.2
SCCS-vsn: sbin/fsck/pass1b.c 8.3
SCCS-vsn: sbin/fsck/utilities.c 8.3
SCCS-vsn: sbin/fsck/pass5.c 8.8
SCCS-vsn: sbin/fsck/main.c 8.4
SCCS-vsn: sbin/fsck/pass2.c 8.8
SCCS-vsn: sbin/fsck/dir.c 8.7
SCCS-vsn: sbin/fsck/fsck.h 8.3
SCCS-vsn: sbin/fsck/pass4.c 8.3
SCCS-vsn: sbin/fsck/setup.c 8.8

14 files changed:
usr/src/sbin/fsck/Makefile
usr/src/sbin/fsck/dir.c
usr/src/sbin/fsck/fsck.h
usr/src/sbin/fsck/inode.c
usr/src/sbin/fsck/main.c
usr/src/sbin/fsck/pass1.c
usr/src/sbin/fsck/pass1b.c
usr/src/sbin/fsck/pass2.c
usr/src/sbin/fsck/pass3.c
usr/src/sbin/fsck/pass4.c
usr/src/sbin/fsck/pass5.c
usr/src/sbin/fsck/preen.c
usr/src/sbin/fsck/setup.c
usr/src/sbin/fsck/utilities.c

index d1844f4..efbb0cc 100644 (file)
@@ -1,4 +1,4 @@
-#      @(#)Makefile    8.1 (Berkeley) %G%
+#      @(#)Makefile    8.2 (Berkeley) %G%
 
 PROG=  fsck
 MAN8=  fsck.0
 
 PROG=  fsck
 MAN8=  fsck.0
index 47a2d82..330ecb4 100644 (file)
@@ -6,16 +6,19 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)dir.c      8.6 (Berkeley) %G%";
+static char sccsid[] = "@(#)dir.c      8.7 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
-#include <stdlib.h>
+
+#include <err.h>
 #include <string.h>
 #include <string.h>
+
 #include "fsck.h"
 
 char   *lfname = "lost+found";
 #include "fsck.h"
 
 char   *lfname = "lost+found";
@@ -30,12 +33,19 @@ struct      odirtemplate odirhead = {
        0, DIRBLKSIZ - 12, 2, ".."
 };
 
        0, DIRBLKSIZ - 12, 2, ".."
 };
 
-struct direct  *fsck_readdir();
-struct bufarea *getdirblk();
+static int chgino __P((struct inodesc *));
+static int dircheck __P((struct inodesc *, struct direct *));
+static int expanddir __P((struct dinode *dp, char *name));
+static void freedir __P((ino_t ino, ino_t parent));
+static struct direct *fsck_readdir __P((struct inodesc *));
+static struct bufarea *getdirblk __P((ufs_daddr_t blkno, long size));
+static int lftempname __P((char *bufp, ino_t ino));
+static int mkentry __P((struct inodesc *));
 
 /*
  * Propagate connected state through the tree.
  */
 
 /*
  * Propagate connected state through the tree.
  */
+void
 propagate()
 {
        register struct inoinfo **inpp, *inp;
 propagate()
 {
        register struct inoinfo **inpp, *inp;
@@ -61,6 +71,7 @@ propagate()
 /*
  * Scan each entry in a directory block.
  */
 /*
  * Scan each entry in a directory block.
  */
+int
 dirscan(idesc)
        register struct inodesc *idesc;
 {
 dirscan(idesc)
        register struct inodesc *idesc;
 {
@@ -71,7 +82,7 @@ dirscan(idesc)
        char dbuf[DIRBLKSIZ];
 
        if (idesc->id_type != DATA)
        char dbuf[DIRBLKSIZ];
 
        if (idesc->id_type != DATA)
-               errexit("wrong type to dirscan %d\n", idesc->id_type);
+               errx(EEXIT, "wrong type to dirscan %d", idesc->id_type);
        if (idesc->id_entryno == 0 &&
            (idesc->id_filesize & (DIRBLKSIZ - 1)) != 0)
                idesc->id_filesize = roundup(idesc->id_filesize, DIRBLKSIZ);
        if (idesc->id_entryno == 0 &&
            (idesc->id_filesize & (DIRBLKSIZ - 1)) != 0)
                idesc->id_filesize = roundup(idesc->id_filesize, DIRBLKSIZ);
@@ -122,7 +133,7 @@ dirscan(idesc)
 /*
  * get next entry in a directory.
  */
 /*
  * get next entry in a directory.
  */
-struct direct *
+static struct direct *
 fsck_readdir(idesc)
        register struct inodesc *idesc;
 {
 fsck_readdir(idesc)
        register struct inodesc *idesc;
 {
@@ -184,6 +195,7 @@ dpok:
  * Verify that a directory entry is valid.
  * This is a superset of the checks made in the kernel.
  */
  * Verify that a directory entry is valid.
  * This is a superset of the checks made in the kernel.
  */
+static int
 dircheck(idesc, dp)
        struct inodesc *idesc;
        register struct direct *dp;
 dircheck(idesc, dp)
        struct inodesc *idesc;
        register struct direct *dp;
@@ -227,6 +239,7 @@ dircheck(idesc, dp)
        return (1);
 }
 
        return (1);
 }
 
+void
 direrror(ino, errmesg)
        ino_t ino;
        char *errmesg;
 direrror(ino, errmesg)
        ino_t ino;
        char *errmesg;
@@ -235,6 +248,7 @@ direrror(ino, errmesg)
        fileerror(ino, ino, errmesg);
 }
 
        fileerror(ino, ino, errmesg);
 }
 
+void
 fileerror(cwd, ino, errmesg)
        ino_t cwd, ino;
        char *errmesg;
 fileerror(cwd, ino, errmesg)
        ino_t cwd, ino;
        char *errmesg;
@@ -258,9 +272,10 @@ fileerror(cwd, ino, errmesg)
                pfatal("NAME=%s\n", pathbuf);
 }
 
                pfatal("NAME=%s\n", pathbuf);
 }
 
+void
 adjust(idesc, lcnt)
        register struct inodesc *idesc;
 adjust(idesc, lcnt)
        register struct inodesc *idesc;
-       short lcnt;
+       int lcnt;
 {
        register struct dinode *dp;
 
 {
        register struct dinode *dp;
 
@@ -288,6 +303,7 @@ adjust(idesc, lcnt)
        }
 }
 
        }
 }
 
+static int
 mkentry(idesc)
        struct inodesc *idesc;
 {
 mkentry(idesc)
        struct inodesc *idesc;
 {
@@ -332,6 +348,7 @@ mkentry(idesc)
        return (ALTERED|STOP);
 }
 
        return (ALTERED|STOP);
 }
 
+static int
 chgino(idesc)
        struct inodesc *idesc;
 {
 chgino(idesc)
        struct inodesc *idesc;
 {
@@ -347,6 +364,7 @@ chgino(idesc)
        return (ALTERED|STOP);
 }
 
        return (ALTERED|STOP);
 }
 
+int
 linkup(orphan, parentdir)
        ino_t orphan;
        ino_t parentdir;
 linkup(orphan, parentdir)
        ino_t orphan;
        ino_t parentdir;
@@ -454,6 +472,7 @@ linkup(orphan, parentdir)
 /*
  * fix an entry in a directory.
  */
 /*
  * fix an entry in a directory.
  */
+int
 changeino(dir, name, newnum)
        ino_t dir;
        char *name;
 changeino(dir, name, newnum)
        ino_t dir;
        char *name;
@@ -474,6 +493,7 @@ changeino(dir, name, newnum)
 /*
  * make an entry in a directory
  */
 /*
  * make an entry in a directory
  */
+int
 makeentry(parent, ino, name)
        ino_t parent, ino;
        char *name;
 makeentry(parent, ino, name)
        ino_t parent, ino;
        char *name;
@@ -509,6 +529,7 @@ makeentry(parent, ino, name)
 /*
  * Attempt to expand the size of a directory
  */
 /*
  * Attempt to expand the size of a directory
  */
+static int
 expanddir(dp, name)
        register struct dinode *dp;
        char *name;
 expanddir(dp, name)
        register struct dinode *dp;
        char *name;
@@ -565,6 +586,7 @@ bad:
 /*
  * allocate a new directory
  */
 /*
  * allocate a new directory
  */
+ino_t
 allocdir(parent, request, mode)
        ino_t parent, request;
        int mode;
 allocdir(parent, request, mode)
        ino_t parent, request;
        int mode;
@@ -620,6 +642,7 @@ allocdir(parent, request, mode)
 /*
  * free a directory inode
  */
 /*
  * free a directory inode
  */
+static void
 freedir(ino, parent)
        ino_t ino, parent;
 {
 freedir(ino, parent)
        ino_t ino, parent;
 {
@@ -636,6 +659,7 @@ freedir(ino, parent)
 /*
  * generate a temporary name for the lost+found directory.
  */
 /*
  * generate a temporary name for the lost+found directory.
  */
+static int
 lftempname(bufp, ino)
        char *bufp;
        ino_t ino;
 lftempname(bufp, ino)
        char *bufp;
        ino_t ino;
@@ -662,7 +686,7 @@ lftempname(bufp, ino)
  * Get a directory block.
  * Insure that it is held until another is requested.
  */
  * Get a directory block.
  * Insure that it is held until another is requested.
  */
-struct bufarea *
+static struct bufarea *
 getdirblk(blkno, size)
        ufs_daddr_t blkno;
        long size;
 getdirblk(blkno, size)
        ufs_daddr_t blkno;
        long size;
index 93ee9ac..d1e3897 100644 (file)
@@ -4,9 +4,13 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)fsck.h      8.2 (Berkeley) %G%
+ *     @(#)fsck.h      8.3 (Berkeley) %G%
  */
 
  */
 
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+
 #define        MAXDUP          10      /* limit on dup blks (per inode) */
 #define        MAXBAD          10      /* limit on bad blks (per inode) */
 #define        MAXBUFSPACE     40*1024 /* maximum space to allocate to buffers */
 #define        MAXDUP          10      /* limit on dup blks (per inode) */
 #define        MAXBAD          10      /* limit on bad blks (per inode) */
 #define        MAXBUFSPACE     40*1024 /* maximum space to allocate to buffers */
@@ -158,7 +162,7 @@ char        *blockmap;              /* ptr to primary blk allocation map */
 ino_t  maxino;                 /* number of inodes in file system */
 ino_t  lastino;                /* last inode in use */
 char   *statemap;              /* ptr to inode state table */
 ino_t  maxino;                 /* number of inodes in file system */
 ino_t  lastino;                /* last inode in use */
 char   *statemap;              /* ptr to inode state table */
-char   *typemap;               /* ptr to inode type table */
+u_char *typemap;               /* ptr to inode type table */
 short  *lncntp;                /* ptr to link count table */
 
 ino_t  lfdir;                  /* lost & found directory inode number */
 short  *lncntp;                /* ptr to link count table */
 
 ino_t  lfdir;                  /* lost & found directory inode number */
@@ -181,9 +185,69 @@ struct     dinode zino;
 #define        ALTERED 0x08
 #define        FOUND   0x10
 
 #define        ALTERED 0x08
 #define        FOUND   0x10
 
-time_t time();
-struct dinode *ginode();
-struct inoinfo *getinoinfo();
-void getblk();
-ino_t allocino();
-int findino();
+#define        EEXIT   8               /* Standard error exit. */
+
+struct fstab;
+
+void           adjust __P((struct inodesc *, int lcnt));
+ufs_daddr_t    allocblk __P((long frags));
+ino_t          allocdir __P((ino_t parent, ino_t request, int mode));
+ino_t          allocino __P((ino_t request, int type));
+void           blkerror __P((ino_t ino, char *type, ufs_daddr_t blk));
+char          *blockcheck __P((char *name));
+int            bread __P((int fd, char *buf, ufs_daddr_t blk, long size));
+void           bufinit __P((void));
+void           bwrite __P((int fd, char *buf, ufs_daddr_t blk, long size));
+void           cacheino __P((struct dinode *dp, ino_t inumber));
+void           catch __P((int));
+void           catchquit __P((int));
+int            changeino __P((ino_t dir, char *name, ino_t newnum));
+int            checkfstab __P((int preen, int maxrun,
+                       int (*docheck)(struct fstab *),
+                       int (*chkit)(char *, char *, long, int)));
+int            chkrange __P((ufs_daddr_t blk, int cnt));
+void           ckfini __P((void));
+int            ckinode __P((struct dinode *dp, struct inodesc *));
+void           clri __P((struct inodesc *, char *type, int flag));
+void           direrror __P((ino_t ino, char *errmesg));
+int            dirscan __P((struct inodesc *));
+int            dofix __P((struct inodesc *, char *msg));
+void           ffs_clrblock __P((struct fs *, u_char *, ufs_daddr_t));
+void           ffs_fragacct __P((struct fs *, int, int32_t [], int));
+int            ffs_isblock __P((struct fs *, u_char *, ufs_daddr_t));
+void           ffs_setblock __P((struct fs *, u_char *, ufs_daddr_t));
+void           fileerror __P((ino_t cwd, ino_t ino, char *errmesg));
+int            findino __P((struct inodesc *));
+int            findname __P((struct inodesc *));
+void           flush __P((int fd, struct bufarea *bp));
+void           freeblk __P((ufs_daddr_t blkno, long frags));
+void           freeino __P((ino_t ino));
+void           freeinodebuf __P((void));
+int            ftypeok __P((struct dinode *dp));
+void           getblk __P((struct bufarea *bp, ufs_daddr_t blk, long size));
+struct bufarea *getdatablk __P((ufs_daddr_t blkno, long size));
+struct inoinfo *getinoinfo __P((ino_t inumber));
+struct dinode  *getnextinode __P((ino_t inumber));
+void           getpathname __P((char *namebuf, ino_t curdir, ino_t ino));
+struct dinode  *ginode __P((ino_t inumber));
+void           inocleanup __P((void));
+void           inodirty __P((void));
+int            linkup __P((ino_t orphan, ino_t parentdir));
+int            makeentry __P((ino_t parent, ino_t ino, char *name));
+void           panic __P((const char *fmt, ...));
+void           pass1 __P((void));
+void           pass1b __P((void));
+int            pass1check __P((struct inodesc *));
+void           pass2 __P((void));
+void           pass3 __P((void));
+void           pass4 __P((void));
+int            pass4check __P((struct inodesc *));
+void           pass5 __P((void));
+void           pfatal __P((const char *fmt, ...));
+void           pinode __P((ino_t ino));
+void           propagate __P((void));
+void           pwarn __P((const char *fmt, ...));
+int            reply __P((char *question));
+void           resetinodebuf __P((void));
+int            setup __P((char *dev));
+void           voidquit __P((int));
index 5509e6a..083fead 100644 (file)
@@ -6,21 +6,27 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)inode.c    8.6 (Berkeley) %G%";
+static char sccsid[] = "@(#)inode.c    8.7 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
+
+#include <err.h>
 #include <pwd.h>
 #include <pwd.h>
-#include <stdlib.h>
 #include <string.h>
 #include <string.h>
+
 #include "fsck.h"
 
 static ino_t startinum;
 
 #include "fsck.h"
 
 static ino_t startinum;
 
+static int iblock __P((struct inodesc *, long ilevel, quad_t isize));
+
+int
 ckinode(dp, idesc)
        struct dinode *dp;
        register struct inodesc *idesc;
 ckinode(dp, idesc)
        struct dinode *dp;
        register struct inodesc *idesc;
@@ -73,6 +79,7 @@ ckinode(dp, idesc)
        return (KEEPON);
 }
 
        return (KEEPON);
 }
 
+static int
 iblock(idesc, ilevel, isize)
        struct inodesc *idesc;
        long ilevel;
 iblock(idesc, ilevel, isize)
        struct inodesc *idesc;
        long ilevel;
@@ -84,7 +91,6 @@ iblock(idesc, ilevel, isize)
        int i, n, (*func)(), nif;
        quad_t sizepb;
        char buf[BUFSIZ];
        int i, n, (*func)(), nif;
        quad_t sizepb;
        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;
@@ -138,6 +144,7 @@ iblock(idesc, ilevel, isize)
  * Check that a block in a legal block number.
  * Return 0 if in range, 1 if out of range.
  */
  * Check that a block in a legal block number.
  * Return 0 if in range, 1 if out of range.
  */
+int
 chkrange(blk, cnt)
        ufs_daddr_t blk;
        int cnt;
 chkrange(blk, cnt)
        ufs_daddr_t blk;
        int cnt;
@@ -181,7 +188,7 @@ ginode(inumber)
        ufs_daddr_t iblk;
 
        if (inumber < ROOTINO || inumber > maxino)
        ufs_daddr_t iblk;
 
        if (inumber < ROOTINO || inumber > maxino)
-               errexit("bad inode number %d to ginode\n", inumber);
+               errx(EEXIT, "bad inode number %d to ginode", inumber);
        if (startinum == 0 ||
            inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
                iblk = ino_to_fsba(&sblock, inumber);
        if (startinum == 0 ||
            inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
                iblk = ino_to_fsba(&sblock, inumber);
@@ -210,7 +217,7 @@ getnextinode(inumber)
        static struct dinode *dp;
 
        if (inumber != nextino++ || inumber > maxino)
        static struct dinode *dp;
 
        if (inumber != nextino++ || inumber > maxino)
-               errexit("bad inode number %d to nextinode\n", inumber);
+               errx(EEXIT, "bad inode number %d to nextinode", inumber);
        if (inumber >= lastinum) {
                readcnt++;
                dblk = fsbtodb(&sblock, ino_to_fsba(&sblock, lastinum));
        if (inumber >= lastinum) {
                readcnt++;
                dblk = fsbtodb(&sblock, ino_to_fsba(&sblock, lastinum));
@@ -227,6 +234,7 @@ getnextinode(inumber)
        return (dp++);
 }
 
        return (dp++);
 }
 
+void
 resetinodebuf()
 {
 
 resetinodebuf()
 {
 
@@ -247,11 +255,12 @@ resetinodebuf()
        }
        if (inodebuf == NULL &&
            (inodebuf = (struct dinode *)malloc((unsigned)inobufsize)) == NULL)
        }
        if (inodebuf == NULL &&
            (inodebuf = (struct dinode *)malloc((unsigned)inobufsize)) == NULL)
-               errexit("Cannot allocate space for inode buffer\n");
+               errx(EEXIT, "Cannot allocate space for inode buffer");
        while (nextino < ROOTINO)
                (void)getnextinode(nextino);
 }
 
        while (nextino < ROOTINO)
                (void)getnextinode(nextino);
 }
 
+void
 freeinodebuf()
 {
 
 freeinodebuf()
 {
 
@@ -267,6 +276,7 @@ freeinodebuf()
  *
  * Enter inodes into the cache.
  */
  *
  * Enter inodes into the cache.
  */
+void
 cacheino(dp, inumber)
        register struct dinode *dp;
        ino_t inumber;
 cacheino(dp, inumber)
        register struct dinode *dp;
        ino_t inumber;
@@ -300,7 +310,7 @@ cacheino(dp, inumber)
                inpsort = (struct inoinfo **)realloc((char *)inpsort,
                    (unsigned)listmax * sizeof(struct inoinfo *));
                if (inpsort == NULL)
                inpsort = (struct inoinfo **)realloc((char *)inpsort,
                    (unsigned)listmax * sizeof(struct inoinfo *));
                if (inpsort == NULL)
-                       errexit("cannot increase directory list");
+                       errx(EEXIT, "cannot increase directory list");
        }
        inpsort[inplast++] = inp;
 }
        }
        inpsort[inplast++] = inp;
 }
@@ -319,13 +329,14 @@ getinoinfo(inumber)
                        continue;
                return (inp);
        }
                        continue;
                return (inp);
        }
-       errexit("cannot find inode %d\n", inumber);
+       errx(EEXIT, "cannot find inode %d", inumber);
        return ((struct inoinfo *)0);
 }
 
 /*
  * Clean up all the inode cache structure.
  */
        return ((struct inoinfo *)0);
 }
 
 /*
  * Clean up all the inode cache structure.
  */
+void
 inocleanup()
 {
        register struct inoinfo **inpp;
 inocleanup()
 {
        register struct inoinfo **inpp;
@@ -339,12 +350,14 @@ inocleanup()
        inphead = inpsort = NULL;
 }
        
        inphead = inpsort = NULL;
 }
        
+void
 inodirty()
 {
        
        dirty(pbp);
 }
 
 inodirty()
 {
        
        dirty(pbp);
 }
 
+void
 clri(idesc, type, flag)
        register struct inodesc *idesc;
        char *type;
 clri(idesc, type, flag)
        register struct inodesc *idesc;
        char *type;
@@ -369,6 +382,7 @@ clri(idesc, type, flag)
        }
 }
 
        }
 }
 
+int
 findname(idesc)
        struct inodesc *idesc;
 {
 findname(idesc)
        struct inodesc *idesc;
 {
@@ -380,6 +394,7 @@ findname(idesc)
        return (STOP|FOUND);
 }
 
        return (STOP|FOUND);
 }
 
+int
 findino(idesc)
        struct inodesc *idesc;
 {
 findino(idesc)
        struct inodesc *idesc;
 {
@@ -395,6 +410,7 @@ findino(idesc)
        return (KEEPON);
 }
 
        return (KEEPON);
 }
 
+void
 pinode(ino)
        ino_t ino;
 {
 pinode(ino)
        ino_t ino;
 {
@@ -420,6 +436,7 @@ pinode(ino)
        printf("MTIME=%12.12s %4.4s ", &p[4], &p[20]);
 }
 
        printf("MTIME=%12.12s %4.4s ", &p[4], &p[20]);
 }
 
+void
 blkerror(ino, type, blk)
        ino_t ino;
        char *type;
 blkerror(ino, type, blk)
        ino_t ino;
        char *type;
@@ -443,7 +460,7 @@ blkerror(ino, type, blk)
                return;
 
        default:
                return;
 
        default:
-               errexit("BAD STATE %d TO BLKERR", statemap[ino]);
+               errx(EEXIT, "BAD STATE %d TO BLKERR", statemap[ino]);
                /* NOTREACHED */
        }
 }
                /* NOTREACHED */
        }
 }
@@ -500,11 +517,11 @@ allocino(request, type)
 /*
  * deallocate an inode
  */
 /*
  * deallocate an inode
  */
+void
 freeino(ino)
        ino_t ino;
 {
        struct inodesc idesc;
 freeino(ino)
        ino_t ino;
 {
        struct inodesc idesc;
-       extern int pass4check();
        struct dinode *dp;
 
        bzero((char *)&idesc, sizeof(struct inodesc));
        struct dinode *dp;
 
        bzero((char *)&idesc, sizeof(struct inodesc));
index 710efd3..7ca90d2 100644 (file)
@@ -12,32 +12,40 @@ static char copyright[] =
 #endif /* not lint */
 
 #ifndef lint
 #endif /* not lint */
 
 #ifndef lint
-static char sccsid[] = "@(#)main.c     8.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)main.c     8.4 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #include <sys/mount.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #include <sys/mount.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dinode.h>
+#include <ufs/ufs/ufsmount.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ffs/fs.h>
+
+#include <ctype.h>
+#include <err.h>
 #include <fstab.h>
 #include <fstab.h>
-#include <stdlib.h>
 #include <string.h>
 #include <string.h>
-#include <ctype.h>
-#include <stdio.h>
+
 #include "fsck.h"
 
 #include "fsck.h"
 
-void   catch(), catchquit(), voidquit();
 int    returntosingle;
 
 int    returntosingle;
 
+static int argtoi __P((int flag, char *req, char *str, int base));
+static int docheck __P((struct fstab *fsp));
+static int checkfilesys __P((char *filesys, char *mntpt, long auxdata,
+               int child));
+void main __P((int argc, char *argv[]));
+
+void
 main(argc, argv)
        int     argc;
        char    *argv[];
 {
        int ch;
        int ret, maxrun = 0;
 main(argc, argv)
        int     argc;
        char    *argv[];
 {
        int ch;
        int ret, maxrun = 0;
-       extern int docheck(), checkfilesys();
-       extern char *optarg, *blockcheck();
+       extern char *optarg;
        extern int optind;
 
        sync();
        extern int optind;
 
        sync();
@@ -67,7 +75,7 @@ main(argc, argv)
                case 'm':
                        lfmode = argtoi('m', "mode", optarg, 8);
                        if (lfmode &~ 07777)
                case 'm':
                        lfmode = argtoi('m', "mode", optarg, 8);
                        if (lfmode &~ 07777)
-                               errexit("bad mode to -m: %o\n", lfmode);
+                               errx(EEXIT, "bad mode to -m: %o", lfmode);
                        printf("** lost+found creation mode %o\n", lfmode);
                        break;
 
                        printf("** lost+found creation mode %o\n", lfmode);
                        break;
 
@@ -84,7 +92,7 @@ main(argc, argv)
                        break;
 
                default:
                        break;
 
                default:
-                       errexit("%c option?\n", ch);
+                       errx(EEXIT, "%c option?", ch);
                }
        }
        argc -= optind;
                }
        }
        argc -= optind;
@@ -104,6 +112,7 @@ main(argc, argv)
        exit(ret);
 }
 
        exit(ret);
 }
 
+static int
 argtoi(flag, req, str, base)
        int flag;
        char *req, *str;
 argtoi(flag, req, str, base)
        int flag;
        char *req, *str;
@@ -114,13 +123,14 @@ argtoi(flag, req, str, base)
 
        ret = (int)strtol(str, &cp, base);
        if (cp == str || *cp)
 
        ret = (int)strtol(str, &cp, base);
        if (cp == str || *cp)
-               errexit("-%c flag requires a %s\n", flag, req);
+               errx(EEXIT, "-%c flag requires a %s", flag, req);
        return (ret);
 }
 
 /*
  * Determine whether a filesystem should be checked.
  */
        return (ret);
 }
 
 /*
  * Determine whether a filesystem should be checked.
  */
+static int
 docheck(fsp)
        register struct fstab *fsp;
 {
 docheck(fsp)
        register struct fstab *fsp;
 {
@@ -137,9 +147,11 @@ docheck(fsp)
  * Check the specified filesystem.
  */
 /* ARGSUSED */
  * Check the specified filesystem.
  */
 /* ARGSUSED */
+static int
 checkfilesys(filesys, mntpt, auxdata, child)
        char *filesys, *mntpt;
        long auxdata;
 checkfilesys(filesys, mntpt, auxdata, child)
        char *filesys, *mntpt;
        long auxdata;
+       int child;
 {
        ufs_daddr_t n_ffree, n_bfree;
        struct dups *dp;
 {
        ufs_daddr_t n_ffree, n_bfree;
        struct dups *dp;
@@ -278,7 +290,7 @@ checkfilesys(filesys, mntpt, auxdata, child)
                                args.export.ex_flags = 0;
                                args.export.ex_root = 0;
                                flags |= MNT_UPDATE | MNT_RELOAD;
                                args.export.ex_flags = 0;
                                args.export.ex_root = 0;
                                flags |= MNT_UPDATE | MNT_RELOAD;
-                               ret = mount(MOUNT_UFS, "/", flags, &args);
+                               ret = mount("ufs", "/", flags, &args);
                                if (ret == 0)
                                        return(0);
                        }
                                if (ret == 0)
                                        return(0);
                        }
index c3eb787..f190b61 100644 (file)
@@ -6,23 +6,26 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)pass1.c    8.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)pass1.c    8.4 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
-#include <stdlib.h>
+
+#include <err.h>
 #include <string.h>
 #include <string.h>
+
 #include "fsck.h"
 
 static ufs_daddr_t badblk;
 static ufs_daddr_t dupblk;
 #include "fsck.h"
 
 static ufs_daddr_t badblk;
 static ufs_daddr_t dupblk;
-int pass1check();
-struct dinode *getnextinode();
+static void checkinode __P((ino_t inumber, struct inodesc *));
 
 
+void
 pass1()
 {
        ino_t inumber;
 pass1()
 {
        ino_t inumber;
@@ -61,6 +64,7 @@ pass1()
        freeinodebuf();
 }
 
        freeinodebuf();
 }
 
+static void
 checkinode(inumber, idesc)
        ino_t inumber;
        register struct inodesc *idesc;
 checkinode(inumber, idesc)
        ino_t inumber;
        register struct inodesc *idesc;
@@ -119,7 +123,7 @@ checkinode(inumber, idesc)
                        if (bread(fsreadfd, symbuf,
                            fsbtodb(&sblock, dp->di_db[0]),
                            (long)secsize) != 0)
                        if (bread(fsreadfd, symbuf,
                            fsbtodb(&sblock, dp->di_db[0]),
                            (long)secsize) != 0)
-                               errexit("cannot read symlink");
+                               errx(EEXIT, "cannot read symlink");
                        if (debug) {
                                symbuf[dp->di_size] = 0;
                                printf("convert symlink %d(%s) of size %d\n",
                        if (debug) {
                                symbuf[dp->di_size] = 0;
                                printf("convert symlink %d(%s) of size %d\n",
@@ -181,7 +185,7 @@ checkinode(inumber, idesc)
                if (zlnp == NULL) {
                        pfatal("LINK COUNT TABLE OVERFLOW");
                        if (reply("CONTINUE") == 0)
                if (zlnp == NULL) {
                        pfatal("LINK COUNT TABLE OVERFLOW");
                        if (reply("CONTINUE") == 0)
-                               errexit("");
+                               exit(EEXIT);
                } else {
                        zlnp->zlncnt = inumber;
                        zlnp->next = zlnhead;
                } else {
                        zlnp->zlncnt = inumber;
                        zlnp->next = zlnhead;
@@ -233,6 +237,7 @@ unknown:
        }
 }
 
        }
 }
 
+int
 pass1check(idesc)
        register struct inodesc *idesc;
 {
 pass1check(idesc)
        register struct inodesc *idesc;
 {
@@ -250,7 +255,7 @@ pass1check(idesc)
                        if (preen)
                                printf(" (SKIPPING)\n");
                        else if (reply("CONTINUE") == 0)
                        if (preen)
                                printf(" (SKIPPING)\n");
                        else if (reply("CONTINUE") == 0)
-                               errexit("");
+                               exit(EEXIT);
                        return (STOP);
                }
        }
                        return (STOP);
                }
        }
@@ -268,14 +273,14 @@ pass1check(idesc)
                                if (preen)
                                        printf(" (SKIPPING)\n");
                                else if (reply("CONTINUE") == 0)
                                if (preen)
                                        printf(" (SKIPPING)\n");
                                else if (reply("CONTINUE") == 0)
-                                       errexit("");
+                                       exit(EEXIT);
                                return (STOP);
                        }
                        new = (struct dups *)malloc(sizeof(struct dups));
                        if (new == NULL) {
                                pfatal("DUP TABLE OVERFLOW.");
                                if (reply("CONTINUE") == 0)
                                return (STOP);
                        }
                        new = (struct dups *)malloc(sizeof(struct dups));
                        if (new == NULL) {
                                pfatal("DUP TABLE OVERFLOW.");
                                if (reply("CONTINUE") == 0)
-                                       errexit("");
+                                       exit(EEXIT);
                                return (STOP);
                        }
                        new->dup = blkno;
                                return (STOP);
                        }
                        new->dup = blkno;
index 81018b5..63b8843 100644 (file)
@@ -6,19 +6,23 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)pass1b.c   8.2 (Berkeley) %G%";
+static char sccsid[] = "@(#)pass1b.c   8.3 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
+
 #include <string.h>
 #include <string.h>
+
 #include "fsck.h"
 
 #include "fsck.h"
 
-int    pass1bcheck();
 static  struct dups *duphead;
 static  struct dups *duphead;
+static int pass1bcheck __P((struct inodesc *));
 
 
+void
 pass1b()
 {
        register int c, i;
 pass1b()
 {
        register int c, i;
@@ -46,6 +50,7 @@ pass1b()
        }
 }
 
        }
 }
 
+static int
 pass1bcheck(idesc)
        register struct inodesc *idesc;
 {
 pass1bcheck(idesc)
        register struct inodesc *idesc;
 {
index de6b279..5e7db90 100644 (file)
@@ -6,22 +6,27 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)pass2.c    8.7 (Berkeley) %G%";
+static char sccsid[] = "@(#)pass2.c    8.8 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
-#include <stdlib.h>
+
+#include <err.h>
 #include <string.h>
 #include <string.h>
+
 #include "fsck.h"
 
 #define MINDIRSIZE     (sizeof (struct dirtemplate))
 
 #include "fsck.h"
 
 #define MINDIRSIZE     (sizeof (struct dirtemplate))
 
-int    pass2check(), blksort();
+static int blksort __P((const void *, const void *));
+static int pass2check __P((struct inodesc *));
 
 
+void
 pass2()
 {
        register struct dinode *dp;
 pass2()
 {
        register struct dinode *dp;
@@ -36,9 +41,9 @@ pass2()
        case USTATE:
                pfatal("ROOT INODE UNALLOCATED");
                if (reply("ALLOCATE") == 0)
        case USTATE:
                pfatal("ROOT INODE UNALLOCATED");
                if (reply("ALLOCATE") == 0)
-                       errexit("");
+                       exit(EEXIT);
                if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
                if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
-                       errexit("CANNOT ALLOCATE ROOT INODE\n");
+                       errx(EEXIT, "CANNOT ALLOCATE ROOT INODE");
                break;
 
        case DCLEAR:
                break;
 
        case DCLEAR:
@@ -46,11 +51,11 @@ pass2()
                if (reply("REALLOCATE")) {
                        freeino(ROOTINO);
                        if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
                if (reply("REALLOCATE")) {
                        freeino(ROOTINO);
                        if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
-                               errexit("CANNOT ALLOCATE ROOT INODE\n");
+                               errx(EEXIT, "CANNOT ALLOCATE ROOT INODE");
                        break;
                }
                if (reply("CONTINUE") == 0)
                        break;
                }
                if (reply("CONTINUE") == 0)
-                       errexit("");
+                       exit(EEXIT);
                break;
 
        case FSTATE:
                break;
 
        case FSTATE:
@@ -59,11 +64,11 @@ pass2()
                if (reply("REALLOCATE")) {
                        freeino(ROOTINO);
                        if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
                if (reply("REALLOCATE")) {
                        freeino(ROOTINO);
                        if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
-                               errexit("CANNOT ALLOCATE ROOT INODE\n");
+                               errx(EEXIT, "CANNOT ALLOCATE ROOT INODE");
                        break;
                }
                if (reply("FIX") == 0)
                        break;
                }
                if (reply("FIX") == 0)
-                       errexit("");
+                       exit(EEXIT);
                dp = ginode(ROOTINO);
                dp->di_mode &= ~IFMT;
                dp->di_mode |= IFDIR;
                dp = ginode(ROOTINO);
                dp->di_mode &= ~IFMT;
                dp->di_mode |= IFDIR;
@@ -74,7 +79,7 @@ pass2()
                break;
 
        default:
                break;
 
        default:
-               errexit("BAD STATE %d FOR ROOT INODE", statemap[ROOTINO]);
+               errx(EEXIT, "BAD STATE %d FOR ROOT INODE", statemap[ROOTINO]);
        }
        statemap[ROOTINO] = DFOUND;
        if (newinofmt) {
        }
        statemap[ROOTINO] = DFOUND;
        if (newinofmt) {
@@ -167,6 +172,7 @@ pass2()
        propagate();
 }
 
        propagate();
 }
 
+static int
 pass2check(idesc)
        struct inodesc *idesc;
 {
 pass2check(idesc)
        struct inodesc *idesc;
 {
@@ -413,7 +419,7 @@ again:
                        break;
 
                default:
                        break;
 
                default:
-                       errexit("BAD STATE %d FOR INODE I=%d",
+                       errx(EEXIT, "BAD STATE %d FOR INODE I=%d",
                            statemap[dirp->d_ino], dirp->d_ino);
                }
        }
                            statemap[dirp->d_ino], dirp->d_ino);
                }
        }
@@ -426,9 +432,11 @@ again:
 /*
  * Routine to sort disk blocks.
  */
 /*
  * Routine to sort disk blocks.
  */
-blksort(inpp1, inpp2)
-       struct inoinfo **inpp1, **inpp2;
+static int
+blksort(arg1, arg2)
+       const void *arg1, *arg2;
 {
 
 {
 
-       return ((*inpp1)->i_blks[0] - (*inpp2)->i_blks[0]);
+       return ((*(struct inoinfo **)arg1)->i_blks[0] -
+               (*(struct inoinfo **)arg2)->i_blks[0]);
 }
 }
index 1216ebb..ab9edb5 100644 (file)
@@ -6,15 +6,18 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)pass3.c    8.1 (Berkeley) %G%";
+static char sccsid[] = "@(#)pass3.c    8.2 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
+
 #include "fsck.h"
 
 #include "fsck.h"
 
+void
 pass3()
 {
        register struct inoinfo **inpp, *inp;
 pass3()
 {
        register struct inoinfo **inpp, *inp;
index 97b1430..6fd310f 100644 (file)
@@ -6,19 +6,21 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)pass4.c    8.2 (Berkeley) %G%";
+static char sccsid[] = "@(#)pass4.c    8.3 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
-#include <stdlib.h>
+
+#include <err.h>
 #include <string.h>
 #include <string.h>
-#include "fsck.h"
 
 
-int    pass4check();
+#include "fsck.h"
 
 
+void
 pass4()
 {
        register ino_t inumber;
 pass4()
 {
        register ino_t inumber;
@@ -71,12 +73,13 @@ pass4()
                        break;
 
                default:
                        break;
 
                default:
-                       errexit("BAD STATE %d FOR INODE I=%d",
+                       errx(EEXIT, "BAD STATE %d FOR INODE I=%d",
                            statemap[inumber], inumber);
                }
        }
 }
 
                            statemap[inumber], inumber);
                }
        }
 }
 
+int
 pass4check(idesc)
        register struct inodesc *idesc;
 {
 pass4check(idesc)
        register struct inodesc *idesc;
 {
index 178382f..991578f 100644 (file)
@@ -6,16 +6,21 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)pass5.c    8.7 (Berkeley) %G%";
+static char sccsid[] = "@(#)pass5.c    8.8 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
+
+#include <err.h>
 #include <string.h>
 #include <string.h>
+
 #include "fsck.h"
 
 #include "fsck.h"
 
+void
 pass5()
 {
        int c, blk, frags, basesize, sumsize, mapsize, savednrpos;
 pass5()
 {
        int c, blk, frags, basesize, sumsize, mapsize, savednrpos;
@@ -117,7 +122,8 @@ pass5()
                break;
 
        default:
                break;
 
        default:
-               errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n",
+               sumsize = 0;    /* keep lint happy */
+               errx(EEXIT, "UNKNOWN ROTATIONAL TABLE FORMAT %d",
                        fs->fs_postblformat);
        }
        bzero((char *)&idesc[0], sizeof idesc);
                        fs->fs_postblformat);
        }
        bzero((char *)&idesc[0], sizeof idesc);
@@ -190,7 +196,7 @@ pass5()
                        default:
                                if (j < ROOTINO)
                                        break;
                        default:
                                if (j < ROOTINO)
                                        break;
-                               errexit("BAD STATE %d FOR INODE I=%d",
+                               errx(EEXIT, "BAD STATE %d FOR INODE I=%d",
                                    statemap[j], j);
                        }
                }
                                    statemap[j], j);
                        }
                }
index 62c6ef8..868b3e2 100644 (file)
@@ -6,19 +6,20 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)preen.c    8.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)preen.c    8.4 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
+
+#include <ufs/ufs/dinode.h>
+
+#include <ctype.h>
 #include <fstab.h>
 #include <string.h>
 #include <fstab.h>
 #include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
 
 
-char   *rawname(), *unrawname(), *blockcheck();
+#include "fsck.h"
 
 struct part {
        struct  part *next;             /* forward link of partitions on disk */
 
 struct part {
        struct  part *next;             /* forward link of partitions on disk */
@@ -37,9 +38,19 @@ struct disk {
 int    nrun, ndisks;
 char   hotroot;
 
 int    nrun, ndisks;
 char   hotroot;
 
+static void addpart __P((char *name, char *fsname, long auxdata));
+static struct disk *finddisk __P((char *name));
+static char *rawname __P((char *name));
+static int startdisk __P((struct disk *dk,
+               int (*checkit)(char *, char *, long, int)));
+static char *unrawname __P((char *name));
+
+int
 checkfstab(preen, maxrun, docheck, chkit)
 checkfstab(preen, maxrun, docheck, chkit)
-       int preen, maxrun;
-       int (*docheck)(), (*chkit)();
+       int preen;
+       int maxrun;
+       int (*docheck)(struct fstab *);
+       int (*chkit)(char *, char *, long, int);
 {
        register struct fstab *fsp;
        register struct disk *dk, *nextdisk;
 {
        register struct fstab *fsp;
        register struct disk *dk, *nextdisk;
@@ -58,10 +69,11 @@ checkfstab(preen, maxrun, docheck, chkit)
                while ((fsp = getfsent()) != 0) {
                        if ((auxdata = (*docheck)(fsp)) == 0)
                                continue;
                while ((fsp = getfsent()) != 0) {
                        if ((auxdata = (*docheck)(fsp)) == 0)
                                continue;
-                       if (preen == 0 || passno == 1 && fsp->fs_passno == 1) {
-                               if (name = blockcheck(fsp->fs_spec)) {
-                                       if (sumstatus = (*chkit)(name,
-                                           fsp->fs_file, auxdata, 0))
+                       if (preen == 0 ||
+                           (passno == 1 && fsp->fs_passno == 1)) {
+                               if ((name = blockcheck(fsp->fs_spec)) != 0) {
+                                       if ((sumstatus = (*chkit)(name,
+                                           fsp->fs_file, auxdata, 0)) != 0)
                                                return (sumstatus);
                                } else if (preen)
                                        return (8);
                                                return (sumstatus);
                                } else if (preen)
                                        return (8);
@@ -85,7 +97,7 @@ checkfstab(preen, maxrun, docheck, chkit)
                        maxrun = ndisks;
                nextdisk = disks;
                for (passno = 0; passno < maxrun; ++passno) {
                        maxrun = ndisks;
                nextdisk = disks;
                for (passno = 0; passno < maxrun; ++passno) {
-                       while (ret = startdisk(nextdisk, chkit) && nrun > 0)
+                       while ((ret = startdisk(nextdisk, chkit)) && nrun > 0)
                                sleep(10);
                        if (ret)
                                return (ret);
                                sleep(10);
                        if (ret)
                                return (ret);
@@ -124,7 +136,7 @@ checkfstab(preen, maxrun, docheck, chkit)
 
                        if (nextdisk == NULL) {
                                if (dk->part) {
 
                        if (nextdisk == NULL) {
                                if (dk->part) {
-                                       while (ret = startdisk(dk, chkit) &&
+                                       while ((ret = startdisk(dk, chkit)) &&
                                            nrun > 0)
                                                sleep(10);
                                        if (ret)
                                            nrun > 0)
                                                sleep(10);
                                        if (ret)
@@ -138,7 +150,7 @@ checkfstab(preen, maxrun, docheck, chkit)
                                            nextdisk->pid == 0)
                                                break;
                                }
                                            nextdisk->pid == 0)
                                                break;
                                }
-                               while (ret = startdisk(nextdisk, chkit) &&
+                               while ((ret = startdisk(nextdisk, chkit)) &&
                                    nrun > 0)
                                        sleep(10);
                                if (ret)
                                    nrun > 0)
                                        sleep(10);
                                if (ret)
@@ -160,7 +172,7 @@ checkfstab(preen, maxrun, docheck, chkit)
        return (0);
 }
 
        return (0);
 }
 
-struct disk *
+static struct disk *
 finddisk(name)
        char *name;
 {
 finddisk(name)
        char *name;
 {
@@ -168,13 +180,11 @@ finddisk(name)
        register char *p;
        size_t len;
 
        register char *p;
        size_t len;
 
-       for (p = name + strlen(name) - 1; p >= name; --p)
+       for (len = strlen(name), p = name + len - 1; p >= name; --p)
                if (isdigit(*p)) {
                        len = p - name + 1;
                        break;
                }
                if (isdigit(*p)) {
                        len = p - name + 1;
                        break;
                }
-       if (p < name)
-               len = strlen(name);
 
        for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
                if (strncmp(dk->name, name, len) == 0 &&
 
        for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
                if (strncmp(dk->name, name, len) == 0 &&
@@ -199,6 +209,7 @@ finddisk(name)
        return (dk);
 }
 
        return (dk);
 }
 
+static void
 addpart(name, fsname, auxdata)
        char *name, *fsname;
        long auxdata;
 addpart(name, fsname, auxdata)
        char *name, *fsname;
        long auxdata;
@@ -230,9 +241,10 @@ addpart(name, fsname, auxdata)
        pt->auxdata = auxdata;
 }
 
        pt->auxdata = auxdata;
 }
 
+static int
 startdisk(dk, checkit)
        register struct disk *dk;
 startdisk(dk, checkit)
        register struct disk *dk;
-       int (*checkit)();
+       int (*checkit)(char *, char *, long, int);
 {
        register struct part *pt = dk->part;
 
 {
        register struct part *pt = dk->part;
 
@@ -295,7 +307,7 @@ retry:
        return (origname);
 }
 
        return (origname);
 }
 
-char *
+static char *
 unrawname(name)
        char *name;
 {
 unrawname(name)
        char *name;
 {
@@ -314,7 +326,7 @@ unrawname(name)
        return (name);
 }
 
        return (name);
 }
 
-char *
+static char *
 rawname(name)
        char *name;
 {
 rawname(name)
        char *name;
 {
index 1e9a171..bbfeb0e 100644 (file)
@@ -6,30 +6,37 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)setup.c    8.7 (Berkeley) %G%";
+static char sccsid[] = "@(#)setup.c    8.8 (Berkeley) %G%";
 #endif /* not lint */
 
 #define DKTYPENAMES
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #define DKTYPENAMES
 #include <sys/param.h>
 #include <sys/time.h>
-#include <ufs/ufs/dinode.h>
-#include <ufs/ffs/fs.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
 #include <sys/disklabel.h>
 #include <sys/file.h>
 #include <sys/stat.h>
 #include <sys/ioctl.h>
 #include <sys/disklabel.h>
 #include <sys/file.h>
+
+#include <ufs/ufs/dinode.h>
+#include <ufs/ffs/fs.h>
+
+#include <ctype.h>
+#include <err.h>
 #include <errno.h>
 #include <errno.h>
-#include <stdlib.h>
 #include <string.h>
 #include <string.h>
-#include <ctype.h>
+
 #include "fsck.h"
 
 struct bufarea asblk;
 #define altsblock (*asblk.b_un.b_fs)
 #define POWEROF2(num)  (((num) & ((num) - 1)) == 0)
 
 #include "fsck.h"
 
 struct bufarea asblk;
 #define altsblock (*asblk.b_un.b_fs)
 #define POWEROF2(num)  (((num) & ((num) - 1)) == 0)
 
-struct disklabel *getdisklabel();
+static void badsb __P((int listerr, char *s));
+static int calcsb __P((char *dev, int devfd, struct fs *fs));
+static struct disklabel *getdisklabel __P((char *s, int fd));
+static int readsb __P((int listerr));
 
 
+int
 setup(dev)
        char *dev;
 {
 setup(dev)
        char *dev;
 {
@@ -72,8 +79,8 @@ setup(dev)
        sblk.b_un.b_buf = malloc(SBSIZE);
        asblk.b_un.b_buf = malloc(SBSIZE);
        if (sblk.b_un.b_buf == NULL || asblk.b_un.b_buf == NULL)
        sblk.b_un.b_buf = malloc(SBSIZE);
        asblk.b_un.b_buf = malloc(SBSIZE);
        if (sblk.b_un.b_buf == NULL || asblk.b_un.b_buf == NULL)
-               errexit("cannot allocate space for superblock\n");
-       if (lp = getdisklabel((char *)NULL, fsreadfd))
+               errx(EEXIT, "cannot allocate space for superblock");
+       if (lp = getdisklabel(NULL, fsreadfd))
                dev_bsize = secsize = lp->d_secsize;
        else
                dev_bsize = secsize = DEV_BSIZE;
                dev_bsize = secsize = lp->d_secsize;
        else
                dev_bsize = secsize = DEV_BSIZE;
@@ -206,7 +213,7 @@ setup(dev)
                    size) != 0 && !asked) {
                        pfatal("BAD SUMMARY INFORMATION");
                        if (reply("CONTINUE") == 0)
                    size) != 0 && !asked) {
                        pfatal("BAD SUMMARY INFORMATION");
                        if (reply("CONTINUE") == 0)
-                               errexit("");
+                               exit(EEXIT);
                        asked++;
                }
        }
                        asked++;
                }
        }
@@ -261,6 +268,7 @@ badsb:
 /*
  * Read in the super block and its summary info.
  */
 /*
  * Read in the super block and its summary info.
  */
+static int
 readsb(listerr)
        int listerr;
 {
 readsb(listerr)
        int listerr;
 {
@@ -360,6 +368,7 @@ readsb(listerr)
        return (1);
 }
 
        return (1);
 }
 
+static void
 badsb(listerr, s)
        int listerr;
        char *s;
 badsb(listerr, s)
        int listerr;
        char *s;
@@ -378,6 +387,7 @@ badsb(listerr, s)
  * can be used. Do NOT attempt to use other macros without verifying that
  * their needed information is available!
  */
  * can be used. Do NOT attempt to use other macros without verifying that
  * their needed information is available!
  */
+static int
 calcsb(dev, devfd, fs)
        char *dev;
        int devfd;
 calcsb(dev, devfd, fs)
        char *dev;
        int devfd;
@@ -389,7 +399,7 @@ calcsb(dev, devfd, fs)
        int i;
 
        cp = index(dev, '\0') - 1;
        int i;
 
        cp = index(dev, '\0') - 1;
-       if (cp == (char *)-1 || (*cp < 'a' || *cp > 'h') && !isdigit(*cp)) {
+       if (cp == (char *)-1 || ((*cp < 'a' || *cp > 'h') && !isdigit(*cp))) {
                pfatal("%s: CANNOT FIGURE OUT FILE SYSTEM PARTITION\n", dev);
                return (0);
        }
                pfatal("%s: CANNOT FIGURE OUT FILE SYSTEM PARTITION\n", dev);
                return (0);
        }
@@ -431,7 +441,7 @@ calcsb(dev, devfd, fs)
        return (1);
 }
 
        return (1);
 }
 
-struct disklabel *
+static struct disklabel *
 getdisklabel(s, fd)
        char *s;
        int     fd;
 getdisklabel(s, fd)
        char *s;
        int     fd;
@@ -442,7 +452,7 @@ getdisklabel(s, fd)
                if (s == NULL)
                        return ((struct disklabel *)NULL);
                pwarn("ioctl (GCINFO): %s\n", strerror(errno));
                if (s == NULL)
                        return ((struct disklabel *)NULL);
                pwarn("ioctl (GCINFO): %s\n", strerror(errno));
-               errexit("%s: can't read disk label\n", s);
+               errx(EEXIT, "%s: can't read disk label", s);
        }
        return (&lab);
 }
        }
        return (&lab);
 }
index 7c695a9..dbe3594 100644 (file)
@@ -6,22 +6,27 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)utilities.c        8.2 (Berkeley) %G%";
+static char sccsid[] = "@(#)utilities.c        8.3 (Berkeley) %G%";
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
 #endif /* not lint */
 
 #include <sys/param.h>
 #include <sys/time.h>
+
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+
 #include <ctype.h>
 #include <ctype.h>
+#include <err.h>
+#include <string.h>
+
 #include "fsck.h"
 
 long   diskreads, totalreads;  /* Disk cache statistics */
 
 #include "fsck.h"
 
 long   diskreads, totalreads;  /* Disk cache statistics */
 
+static void rwerror __P((char *mesg, ufs_daddr_t blk));
+
+int
 ftypeok(dp)
        struct dinode *dp;
 {
 ftypeok(dp)
        struct dinode *dp;
 {
@@ -43,6 +48,7 @@ ftypeok(dp)
        }
 }
 
        }
 }
 
+int
 reply(question)
        char *question;
 {
 reply(question)
        char *question;
 {
@@ -78,6 +84,7 @@ reply(question)
 /*
  * Malloc buffers and set up cache.
  */
 /*
  * Malloc buffers and set up cache.
  */
+void
 bufinit()
 {
        register struct bufarea *bp;
 bufinit()
 {
        register struct bufarea *bp;
@@ -87,7 +94,7 @@ bufinit()
        pbp = pdirbp = (struct bufarea *)0;
        bufp = malloc((unsigned int)sblock.fs_bsize);
        if (bufp == 0)
        pbp = pdirbp = (struct bufarea *)0;
        bufp = malloc((unsigned int)sblock.fs_bsize);
        if (bufp == 0)
-               errexit("cannot allocate buffer pool\n");
+               errx(EEXIT, "cannot allocate buffer pool");
        cgblk.b_un.b_buf = bufp;
        initbarea(&cgblk);
        bufhead.b_next = bufhead.b_prev = &bufhead;
        cgblk.b_un.b_buf = bufp;
        initbarea(&cgblk);
        bufhead.b_next = bufhead.b_prev = &bufhead;
@@ -100,7 +107,7 @@ bufinit()
                if (bp == NULL || bufp == NULL) {
                        if (i >= MINBUFS)
                                break;
                if (bp == NULL || bufp == NULL) {
                        if (i >= MINBUFS)
                                break;
-                       errexit("cannot allocate buffer pool\n");
+                       errx(EEXIT, "cannot allocate buffer pool");
                }
                bp->b_un.b_buf = bufp;
                bp->b_prev = &bufhead;
                }
                bp->b_un.b_buf = bufp;
                bp->b_prev = &bufhead;
@@ -129,7 +136,7 @@ getdatablk(blkno, size)
                if ((bp->b_flags & B_INUSE) == 0)
                        break;
        if (bp == &bufhead)
                if ((bp->b_flags & B_INUSE) == 0)
                        break;
        if (bp == &bufhead)
-               errexit("deadlocked buffer pool\n");
+               errx(EEXIT, "deadlocked buffer pool");
        getblk(bp, blkno, size);
        /* fall through */
 foundit:
        getblk(bp, blkno, size);
        /* fall through */
 foundit:
@@ -162,6 +169,7 @@ getblk(bp, blk, size)
        }
 }
 
        }
 }
 
+void
 flush(fd, bp)
        int fd;
        register struct bufarea *bp;
 flush(fd, bp)
        int fd;
        register struct bufarea *bp;
@@ -187,6 +195,7 @@ flush(fd, bp)
        }
 }
 
        }
 }
 
+static void
 rwerror(mesg, blk)
        char *mesg;
        ufs_daddr_t blk;
 rwerror(mesg, blk)
        char *mesg;
        ufs_daddr_t blk;
@@ -196,9 +205,10 @@ rwerror(mesg, blk)
                printf("\n");
        pfatal("CANNOT %s: BLK %ld", mesg, blk);
        if (reply("CONTINUE") == 0)
                printf("\n");
        pfatal("CANNOT %s: BLK %ld", mesg, blk);
        if (reply("CONTINUE") == 0)
-               errexit("Program terminated\n");
+               exit(EEXIT);
 }
 
 }
 
+void
 ckfini()
 {
        register struct bufarea *bp, *nbp;
 ckfini()
 {
        register struct bufarea *bp, *nbp;
@@ -225,7 +235,7 @@ ckfini()
                free((char *)bp);
        }
        if (bufhead.b_size != cnt)
                free((char *)bp);
        }
        if (bufhead.b_size != cnt)
-               errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
+               errx(EEXIT, "Panic: lost %d buffers", bufhead.b_size - cnt);
        pbp = pdirbp = (struct bufarea *)0;
        if (debug)
                printf("cache missed %ld of %ld (%d%%)\n", diskreads,
        pbp = pdirbp = (struct bufarea *)0;
        if (debug)
                printf("cache missed %ld of %ld (%d%%)\n", diskreads,
@@ -234,6 +244,7 @@ ckfini()
        (void)close(fswritefd);
 }
 
        (void)close(fswritefd);
 }
 
+int
 bread(fd, buf, blk, size)
        int fd;
        char *buf;
 bread(fd, buf, blk, size)
        int fd;
        char *buf;
@@ -272,6 +283,7 @@ bread(fd, buf, blk, size)
        return (errs);
 }
 
        return (errs);
 }
 
+void
 bwrite(fd, buf, blk, size)
        int fd;
        char *buf;
 bwrite(fd, buf, blk, size)
        int fd;
        char *buf;
@@ -308,6 +320,7 @@ bwrite(fd, buf, blk, size)
 /*
  * allocate a data block with the specified number of fragments
  */
 /*
  * allocate a data block with the specified number of fragments
  */
+ufs_daddr_t
 allocblk(frags)
        long frags;
 {
 allocblk(frags)
        long frags;
 {
@@ -338,6 +351,7 @@ allocblk(frags)
 /*
  * Free a previously allocated block
  */
 /*
  * Free a previously allocated block
  */
+void
 freeblk(blkno, frags)
        ufs_daddr_t blkno;
        long frags;
 freeblk(blkno, frags)
        ufs_daddr_t blkno;
        long frags;
@@ -352,6 +366,7 @@ freeblk(blkno, frags)
 /*
  * Find a pathname
  */
 /*
  * Find a pathname
  */
+void
 getpathname(namebuf, curdir, ino)
        char *namebuf;
        ino_t curdir, ino;
 getpathname(namebuf, curdir, ino)
        char *namebuf;
        ino_t curdir, ino;
@@ -409,7 +424,8 @@ getpathname(namebuf, curdir, ino)
 }
 
 void
 }
 
 void
-catch()
+catch(sig)
+       int sig;
 {
        if (!doinglevel2)
                ckfini();
 {
        if (!doinglevel2)
                ckfini();
@@ -422,7 +438,8 @@ catch()
  * so that reboot sequence may be interrupted.
  */
 void
  * so that reboot sequence may be interrupted.
  */
 void
-catchquit()
+catchquit(sig)
+       int sig;
 {
        extern returntosingle;
 
 {
        extern returntosingle;
 
@@ -436,7 +453,8 @@ catchquit()
  * Used by child processes in preen.
  */
 void
  * Used by child processes in preen.
  */
 void
-voidquit()
+voidquit(sig)
+       int sig;
 {
 
        sleep(1);
 {
 
        sleep(1);
@@ -447,6 +465,7 @@ voidquit()
 /*
  * determine whether an inode should be fixed.
  */
 /*
  * determine whether an inode should be fixed.
  */
+int
 dofix(idesc, msg)
        register struct inodesc *idesc;
        char *msg;
 dofix(idesc, msg)
        register struct inodesc *idesc;
        char *msg;
@@ -479,62 +498,95 @@ dofix(idesc, msg)
                return (0);
 
        default:
                return (0);
 
        default:
-               errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
+               errx(EEXIT, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
        }
        /* NOTREACHED */
        }
        /* NOTREACHED */
+       return (0);
 }
 
 }
 
-/* VARARGS1 */
-errexit(s1, s2, s3, s4)
-       char *s1;
-{
-       printf(s1, s2, s3, s4);
-       exit(8);
-}
+#if __STDC__
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
 
 /*
  * An unexpected inconsistency occured.
  * Die if preening, otherwise just print message and continue.
  */
 
 /*
  * An unexpected inconsistency occured.
  * Die if preening, otherwise just print message and continue.
  */
-/* VARARGS1 */
-pfatal(s, a1, a2, a3)
-       char *s;
+void
+#if __STDC__
+pfatal(const char *fmt, ...)
+#else
+pfatal(fmt, va_alist)
+       char *fmt;
+       va_dcl
+#endif
 {
 {
-
-       if (preen) {
-               printf("%s: ", cdevname);
-               printf(s, a1, a2, a3);
-               printf("\n");
-               printf("%s: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.\n",
-                       cdevname);
-               exit(8);
+       va_list ap;
+#if __STDC__
+       va_start(ap, fmt);
+#else
+       va_start(ap);
+#endif
+       if (!preen) {
+               (void)vfprintf(stderr, fmt, ap);
+               va_end(ap);
+               return;
        }
        }
-       printf(s, a1, a2, a3);
+       (void)fprintf(stderr, "%s: ", cdevname);
+       (void)vfprintf(stderr, fmt, ap);
+       (void)fprintf(stderr,
+           "\n%s: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.\n",
+           cdevname);
+       exit(EEXIT);
 }
 
 /*
  * Pwarn just prints a message when not preening,
  * or a warning (preceded by filename) when preening.
  */
 }
 
 /*
  * Pwarn just prints a message when not preening,
  * or a warning (preceded by filename) when preening.
  */
-/* VARARGS1 */
-pwarn(s, a1, a2, a3, a4, a5, a6)
-       char *s;
+void
+#if __STDC__
+pwarn(const char *fmt, ...)
+#else
+pwarn(fmt, va_alist)
+       char *fmt;
+       va_dcl
+#endif
 {
 {
-
+       va_list ap;
+#if __STDC__
+       va_start(ap, fmt);
+#else
+       va_start(ap);
+#endif
        if (preen)
        if (preen)
-               printf("%s: ", cdevname);
-       printf(s, a1, a2, a3, a4, a5, a6);
+               (void)fprintf(stderr, "%s: ", cdevname);
+       (void)vfprintf(stderr, fmt, ap);
+       va_end(ap);
 }
 
 }
 
-#ifndef lint
 /*
  * Stub for routines from kernel.
  */
 /*
  * Stub for routines from kernel.
  */
-panic(s)
-       char *s;
+void
+#if __STDC__
+panic(const char *fmt, ...)
+#else
+panic(fmt, va_alist)
+       char *fmt;
+       va_dcl
+#endif
 {
 {
-
+       va_list ap;
+#if __STDC__
+       va_start(ap, fmt);
+#else
+       va_start(ap);
+#endif
        pfatal("INTERNAL INCONSISTENCY:");
        pfatal("INTERNAL INCONSISTENCY:");
-       errexit(s);
+       (void)vfprintf(stderr, fmt, ap);
+       va_end(ap);
+       exit(EEXIT);
 }
 }
-#endif