Remove errx() clone from fsck_*

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Remove errx() clone from fsck_*

Michael McConville-2
The best I can tell, fsck's errexit() is just a clone of errx() (less
the "progname: " prefix and the appended newline).

If we delete it from fsck_ffs, fsck_ext2fs, and fsck_msdos, we can
remove its definition in fsck. This diff is just for fsck_ffs.
(fsck_msdos has only one use.)

Another trivial diff, but deleting stdlib clones like this prevents
people from getting distracted when they're trying to get stuff done.


Index: dir.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/dir.c,v
retrieving revision 1.32
diff -u -p -r1.32 dir.c
--- dir.c 20 Jan 2015 18:22:21 -0000 1.32
+++ dir.c 19 Sep 2015 19:09:19 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -103,7 +104,7 @@ dirscan(struct inodesc *idesc)
  char dbuf[DIRBLKSIZ];
 
  if (idesc->id_type != DATA)
- errexit("wrong type to dirscan %d\n", idesc->id_type);
+ errx(8, "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);
Index: inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/inode.c,v
retrieving revision 1.46
diff -u -p -r1.46 inode.c
--- inode.c 20 Jan 2015 18:22:21 -0000 1.46
+++ inode.c 19 Sep 2015 19:09:19 -0000
@@ -38,6 +38,7 @@
 #ifndef SMALL
 #include <pwd.h>
 #endif
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -285,7 +286,7 @@ ginode(ino_t inumber)
  daddr_t iblk;
 
  if (inumber < ROOTINO || inumber > maxino)
- errexit("bad inode number %llu to ginode\n",
+ errx(8, "bad inode number %llu to ginode",
     (unsigned long long)inumber);
  if (startinum == 0 ||
     inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
@@ -318,7 +319,7 @@ getnextinode(ino_t inumber)
  static caddr_t nextinop;
 
  if (inumber != nextino++ || inumber > maxino)
- errexit("bad inode number %llu to nextinode %llu\n",
+ errx(8, "bad inode number %llu to nextinode %llu",
     (unsigned long long)inumber,
     (unsigned long long)nextino);
  if (inumber >= lastinum) {
@@ -371,15 +372,13 @@ setinodebuf(ino_t inum)
  }
  if (inodebuf == NULL &&
     (inodebuf = malloc((unsigned)inobufsize)) == NULL)
- errexit("Cannot allocate space for inode buffer\n");
+ errx(8, "Cannot allocate space for inode buffer");
 }
 
 void
 freeinodebuf(void)
 {
-
- if (inodebuf != NULL)
- free(inodebuf);
+ free(inodebuf);
  inodebuf = NULL;
 }
 
@@ -404,7 +403,7 @@ cacheino(union dinode *dp, ino_t inumber
  blks = NDADDR + NIADDR;
  inp = malloc(sizeof(*inp) + (blks ? blks - 1 : 0) * sizeof(daddr_t));
  if (inp == NULL)
- errexit("cannot allocate memory for inode cache\n");
+ errx(8, "cannot allocate memory for inode cache");
  inpp = &inphead[inumber % numdirs];
  inp->i_nexthash = *inpp;
  *inpp = inp;
@@ -427,7 +426,7 @@ cacheino(union dinode *dp, ino_t inumber
  newinpsort = reallocarray(inpsort,
     (unsigned)newlistmax, sizeof(struct inoinfo *));
  if (newinpsort == NULL)
- errexit("cannot increase directory list");
+ errx(8, "cannot increase directory list");
  inpsort = newinpsort;
  listmax = newlistmax;
  }
@@ -447,7 +446,7 @@ getinoinfo(ino_t inumber)
  continue;
  return (inp);
  }
- errexit("cannot find inode %llu\n", (unsigned long long)inumber);
+ errx(8, "cannot find inode %llu", (unsigned long long)inumber);
  return (NULL);
 }
 
@@ -571,7 +570,7 @@ blkerror(ino_t ino, char *type, daddr_t
  return;
 
  default:
- errexit("BAD STATE %d TO BLKERR\n", GET_ISTATE(ino));
+ errx(8, "BAD STATE %d TO BLKERR", GET_ISTATE(ino));
  /* NOTREACHED */
  }
 }
Index: main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/main.c,v
retrieving revision 1.44
diff -u -p -r1.44 main.c
--- main.c 7 Feb 2015 02:09:13 -0000 1.44
+++ main.c 19 Sep 2015 19:09:19 -0000
@@ -38,6 +38,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <err.h>
 #include <stdio.h>
 #include <unistd.h>
 
@@ -77,8 +78,7 @@ main(int argc, char *argv[])
  skipclean = 0;
  cvtlevel = argtoi('c', "conversion level", optarg, 10);
  if (cvtlevel < 3)
- errexit("cannot do level %d conversion\n",
-    cvtlevel);
+ errx(8, "cannot do level %d conversion", cvtlevel);
  break;
 
  case 'd':
@@ -92,7 +92,7 @@ main(int argc, char *argv[])
  case 'm':
  lfmode = argtoi('m', "mode", optarg, 8);
  if (lfmode &~ 07777)
- errexit("bad mode to -m: %o\n", lfmode);
+ errx(8, "bad mode to -m: %o", lfmode);
  printf("** lost+found creation mode %o\n", lfmode);
  break;
 
@@ -109,8 +109,8 @@ main(int argc, char *argv[])
  break;
 
  default:
- errexit("usage: %s [-fnpy] [-b block#] [-c level] "
-    "[-m mode] filesystem ...\n", __progname);
+ errx(8, "usage: %s [-fnpy] [-b block#] [-c level] "
+    "[-m mode] filesystem ...", __progname);
  }
  }
  argc -= optind;
@@ -139,7 +139,7 @@ argtoi(int flag, char *req, char *str, i
 
  ret = (int)strtol(str, &cp, base);
  if (cp == str || *cp)
- errexit("-%c flag requires a %s\n", flag, req);
+ errx(8, "-%c flag requires a %s", flag, req);
  return (ret);
 }
 
Index: pass1.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass1.c,v
retrieving revision 1.43
diff -u -p -r1.43 pass1.c
--- pass1.c 22 Aug 2015 06:00:27 -0000 1.43
+++ pass1.c 19 Sep 2015 19:09:19 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -140,7 +141,7 @@ pass1(void)
  info = calloc((unsigned)inosused, sizeof(struct inostat));
  inospace = (unsigned)inosused * sizeof(struct inostat);
  if (info == NULL)
- errexit("cannot alloc %zu bytes for inoinfo", inospace);
+ errx(8, "cannot alloc %zu bytes for inoinfo", inospace);
  inostathead[c].il_stat = info;
  /*
  * Scan the allocated inodes.
@@ -302,7 +303,7 @@ checkinode(ino_t inumber, struct inodesc
  pfatal("LINK COUNT TABLE OVERFLOW");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  } else {
  zlnp->zlncnt = inumber;
@@ -365,7 +366,7 @@ pass1check(struct inodesc *idesc)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
@@ -385,7 +386,7 @@ pass1check(struct inodesc *idesc)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
@@ -394,7 +395,7 @@ pass1check(struct inodesc *idesc)
  pfatal("DUP TABLE OVERFLOW.");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
Index: pass2.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass2.c,v
retrieving revision 1.37
diff -u -p -r1.37 pass2.c
--- pass2.c 20 Jan 2015 18:22:21 -0000 1.37
+++ pass2.c 19 Sep 2015 19:09:19 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -86,10 +87,10 @@ pass2(void)
  pfatal("ROOT INODE UNALLOCATED");
  if (reply("ALLOCATE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
 
  case DCLEAR:
@@ -97,12 +98,12 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(ROOTINO);
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  break;
 
@@ -112,12 +113,12 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(ROOTINO);
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("FIX") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  dp = ginode(ROOTINO);
  DIP_SET(dp, di_mode, DIP(dp, di_mode) & ~IFMT);
@@ -129,7 +130,7 @@ pass2(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR ROOT INODE\n", GET_ISTATE(ROOTINO));
+ errx(8, "BAD STATE %d FOR ROOT INODE", GET_ISTATE(ROOTINO));
  }
  SET_ISTATE(ROOTINO, DFOUND);
  /*
@@ -453,7 +454,7 @@ again:
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(dirp->d_ino),
     (unsigned long long)dirp->d_ino);
  }
Index: pass4.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass4.c,v
retrieving revision 1.24
diff -u -p -r1.24 pass4.c
--- pass4.c 20 Jan 2015 18:22:21 -0000 1.24
+++ pass4.c 19 Sep 2015 19:09:19 -0000
@@ -34,6 +34,7 @@
 #include <sys/time.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -110,7 +111,7 @@ pass4(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(inumber),
     (unsigned long long)inumber);
  }
Index: pass5.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass5.c,v
retrieving revision 1.48
diff -u -p -r1.48 pass5.c
--- pass5.c 20 Jan 2015 18:22:21 -0000 1.48
+++ pass5.c 19 Sep 2015 19:09:19 -0000
@@ -38,6 +38,7 @@
 #include <ufs/ufs/quota.h>
 #include <ufs/ufs/inode.h>
 #include <ufs/ffs/ffs_extern.h>
+#include <err.h>
 #include <stdio.h>
 #include <string.h>
 #include <limits.h>
@@ -162,7 +163,7 @@ pass5(void)
 
  default:
  inomapsize = blkmapsize = sumsize = 0;
- errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n",
+ errx(8, "UNKNOWN ROTATIONAL TABLE FORMAT %d",
  fs->fs_postblformat);
  }
  memset(&idesc[0], 0, sizeof idesc);
@@ -250,7 +251,7 @@ pass5(void)
  default:
  if (j < ROOTINO)
  break;
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(j), (unsigned long long)j);
  }
  }
Index: setup.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/setup.c,v
retrieving revision 1.57
diff -u -p -r1.57 setup.c
--- setup.c 20 Jan 2015 18:22:21 -0000 1.57
+++ setup.c 19 Sep 2015 19:09:19 -0000
@@ -40,6 +40,7 @@
 #include <sys/dkio.h>
 #include <sys/disklabel.h>
 
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -133,7 +134,7 @@ setup(char *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)
- errexit("cannot allocate space for superblock\n");
+ errx(8, "cannot allocate space for superblock");
  if ((lp = getdisklabel(NULL, fsreadfd)) != NULL)
  secsize = lp->d_secsize;
  else
@@ -377,7 +378,7 @@ found:
  pfatal("BAD SUMMARY INFORMATION");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  asked++;
  }
@@ -652,7 +653,7 @@ getdisklabel(char *s, int fd)
  if (s == NULL)
  return (NULL);
  pwarn("ioctl (GCINFO): %s\n", strerror(errno));
- errexit("%s: can't read disk label\n", s);
+ errx(8, "%s: can't read disk label", s);
  }
  return (&lab);
 }
Index: utilities.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/utilities.c,v
retrieving revision 1.50
diff -u -p -r1.50 utilities.c
--- utilities.c 5 Sep 2015 20:07:11 -0000 1.50
+++ utilities.c 19 Sep 2015 19:09:19 -0000
@@ -43,6 +43,7 @@
 #include <ctype.h>
 #include <unistd.h>
 #include <limits.h>
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <paths.h>
@@ -126,7 +127,7 @@ inoinfo(ino_t inum)
  int iloff;
 
  if (inum > maxino)
- errexit("inoinfo: inumber %llu out of range",
+ errx(8, "inoinfo: inumber %llu out of range",
     (unsigned long long)inum);
  ilp = &inostathead[inum / sblock.fs_ipg];
  iloff = inum % sblock.fs_ipg;
@@ -148,7 +149,7 @@ bufinit(void)
  pbp = pdirbp = NULL;
  bufp = malloc((unsigned int)sblock.fs_bsize);
  if (bufp == 0)
- errexit("cannot allocate buffer pool\n");
+ errx(8, "cannot allocate buffer pool");
  cgblk.b_un.b_buf = bufp;
  initbarea(&cgblk);
  bufhead.b_next = bufhead.b_prev = &bufhead;
@@ -163,7 +164,7 @@ bufinit(void)
  free(bufp);
  if (i >= MINBUFS)
  break;
- errexit("cannot allocate buffer pool\n");
+ errx(8, "cannot allocate buffer pool");
  }
  bp->b_un.b_buf = bufp;
  bp->b_prev = &bufhead;
@@ -190,7 +191,7 @@ getdatablk(daddr_t blkno, long size)
  if ((bp->b_flags & B_INUSE) == 0)
  break;
  if (bp == &bufhead)
- errexit("deadlocked buffer pool\n");
+ errx(8, "deadlocked buffer pool");
  getblk(bp, blkno, size);
  /* FALLTHROUGH */
 foundit:
@@ -252,7 +253,7 @@ rwerror(char *mesg, daddr_t blk)
  printf("\n");
  pfatal("CANNOT %s: BLK %lld", mesg, (long long)blk);
  if (reply("CONTINUE") == 0)
- errexit("Program terminated\n");
+ errx(8, "Program terminated");
 }
 
 void
@@ -304,7 +305,7 @@ ckfini(int markclean)
  free(bp);
  }
  if (bufhead.b_size != cnt)
- errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
+ errx(8, "Panic: lost %d buffers", bufhead.b_size - cnt);
  pbp = pdirbp = NULL;
  if (markclean && (sblock.fs_clean & FS_ISCLEAN) == 0) {
  /*
@@ -581,7 +582,7 @@ dofix(struct inodesc *idesc, char *msg)
  return (0);
 
  default:
- errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
+ errx(8, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
  }
  /* NOTREACHED */
 }

Reply | Threaded
Open this post in threaded view
|

Re: Remove errx() clone from fsck_*

Michael McConville-2
Michael McConville wrote:
> The best I can tell, fsck's errexit() is just a clone of errx() (less
> the "progname: " prefix and the appended newline).
>
> If we delete it from fsck_ffs, fsck_ext2fs, and fsck_msdos, we can
> remove its definition in fsck. This diff is just for fsck_ffs.
> (fsck_msdos has only one use.)
>
> Another trivial diff, but deleting stdlib clones like this prevents
> people from getting distracted when they're trying to get stuff done.

Also drops a NULL check in the freeinodebuf() logic.

> Index: dir.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/dir.c,v
> retrieving revision 1.32
> diff -u -p -r1.32 dir.c
> --- dir.c 20 Jan 2015 18:22:21 -0000 1.32
> +++ dir.c 19 Sep 2015 19:09:19 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -103,7 +104,7 @@ dirscan(struct inodesc *idesc)
>   char dbuf[DIRBLKSIZ];
>  
>   if (idesc->id_type != DATA)
> - errexit("wrong type to dirscan %d\n", idesc->id_type);
> + errx(8, "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);
> Index: inode.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/inode.c,v
> retrieving revision 1.46
> diff -u -p -r1.46 inode.c
> --- inode.c 20 Jan 2015 18:22:21 -0000 1.46
> +++ inode.c 19 Sep 2015 19:09:19 -0000
> @@ -38,6 +38,7 @@
>  #ifndef SMALL
>  #include <pwd.h>
>  #endif
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -285,7 +286,7 @@ ginode(ino_t inumber)
>   daddr_t iblk;
>  
>   if (inumber < ROOTINO || inumber > maxino)
> - errexit("bad inode number %llu to ginode\n",
> + errx(8, "bad inode number %llu to ginode",
>      (unsigned long long)inumber);
>   if (startinum == 0 ||
>      inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
> @@ -318,7 +319,7 @@ getnextinode(ino_t inumber)
>   static caddr_t nextinop;
>  
>   if (inumber != nextino++ || inumber > maxino)
> - errexit("bad inode number %llu to nextinode %llu\n",
> + errx(8, "bad inode number %llu to nextinode %llu",
>      (unsigned long long)inumber,
>      (unsigned long long)nextino);
>   if (inumber >= lastinum) {
> @@ -371,15 +372,13 @@ setinodebuf(ino_t inum)
>   }
>   if (inodebuf == NULL &&
>      (inodebuf = malloc((unsigned)inobufsize)) == NULL)
> - errexit("Cannot allocate space for inode buffer\n");
> + errx(8, "Cannot allocate space for inode buffer");
>  }
>  
>  void
>  freeinodebuf(void)
>  {
> -
> - if (inodebuf != NULL)
> - free(inodebuf);
> + free(inodebuf);
>   inodebuf = NULL;
>  }
>  
> @@ -404,7 +403,7 @@ cacheino(union dinode *dp, ino_t inumber
>   blks = NDADDR + NIADDR;
>   inp = malloc(sizeof(*inp) + (blks ? blks - 1 : 0) * sizeof(daddr_t));
>   if (inp == NULL)
> - errexit("cannot allocate memory for inode cache\n");
> + errx(8, "cannot allocate memory for inode cache");
>   inpp = &inphead[inumber % numdirs];
>   inp->i_nexthash = *inpp;
>   *inpp = inp;
> @@ -427,7 +426,7 @@ cacheino(union dinode *dp, ino_t inumber
>   newinpsort = reallocarray(inpsort,
>      (unsigned)newlistmax, sizeof(struct inoinfo *));
>   if (newinpsort == NULL)
> - errexit("cannot increase directory list");
> + errx(8, "cannot increase directory list");
>   inpsort = newinpsort;
>   listmax = newlistmax;
>   }
> @@ -447,7 +446,7 @@ getinoinfo(ino_t inumber)
>   continue;
>   return (inp);
>   }
> - errexit("cannot find inode %llu\n", (unsigned long long)inumber);
> + errx(8, "cannot find inode %llu", (unsigned long long)inumber);
>   return (NULL);
>  }
>  
> @@ -571,7 +570,7 @@ blkerror(ino_t ino, char *type, daddr_t
>   return;
>  
>   default:
> - errexit("BAD STATE %d TO BLKERR\n", GET_ISTATE(ino));
> + errx(8, "BAD STATE %d TO BLKERR", GET_ISTATE(ino));
>   /* NOTREACHED */
>   }
>  }
> Index: main.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/main.c,v
> retrieving revision 1.44
> diff -u -p -r1.44 main.c
> --- main.c 7 Feb 2015 02:09:13 -0000 1.44
> +++ main.c 19 Sep 2015 19:09:19 -0000
> @@ -38,6 +38,7 @@
>  #include <stdlib.h>
>  #include <string.h>
>  #include <ctype.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <unistd.h>
>  
> @@ -77,8 +78,7 @@ main(int argc, char *argv[])
>   skipclean = 0;
>   cvtlevel = argtoi('c', "conversion level", optarg, 10);
>   if (cvtlevel < 3)
> - errexit("cannot do level %d conversion\n",
> -    cvtlevel);
> + errx(8, "cannot do level %d conversion", cvtlevel);
>   break;
>  
>   case 'd':
> @@ -92,7 +92,7 @@ main(int argc, char *argv[])
>   case 'm':
>   lfmode = argtoi('m', "mode", optarg, 8);
>   if (lfmode &~ 07777)
> - errexit("bad mode to -m: %o\n", lfmode);
> + errx(8, "bad mode to -m: %o", lfmode);
>   printf("** lost+found creation mode %o\n", lfmode);
>   break;
>  
> @@ -109,8 +109,8 @@ main(int argc, char *argv[])
>   break;
>  
>   default:
> - errexit("usage: %s [-fnpy] [-b block#] [-c level] "
> -    "[-m mode] filesystem ...\n", __progname);
> + errx(8, "usage: %s [-fnpy] [-b block#] [-c level] "
> +    "[-m mode] filesystem ...", __progname);
>   }
>   }
>   argc -= optind;
> @@ -139,7 +139,7 @@ argtoi(int flag, char *req, char *str, i
>  
>   ret = (int)strtol(str, &cp, base);
>   if (cp == str || *cp)
> - errexit("-%c flag requires a %s\n", flag, req);
> + errx(8, "-%c flag requires a %s", flag, req);
>   return (ret);
>  }
>  
> Index: pass1.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass1.c,v
> retrieving revision 1.43
> diff -u -p -r1.43 pass1.c
> --- pass1.c 22 Aug 2015 06:00:27 -0000 1.43
> +++ pass1.c 19 Sep 2015 19:09:19 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -140,7 +141,7 @@ pass1(void)
>   info = calloc((unsigned)inosused, sizeof(struct inostat));
>   inospace = (unsigned)inosused * sizeof(struct inostat);
>   if (info == NULL)
> - errexit("cannot alloc %zu bytes for inoinfo", inospace);
> + errx(8, "cannot alloc %zu bytes for inoinfo", inospace);
>   inostathead[c].il_stat = info;
>   /*
>   * Scan the allocated inodes.
> @@ -302,7 +303,7 @@ checkinode(ino_t inumber, struct inodesc
>   pfatal("LINK COUNT TABLE OVERFLOW");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   } else {
>   zlnp->zlncnt = inumber;
> @@ -365,7 +366,7 @@ pass1check(struct inodesc *idesc)
>   printf(" (SKIPPING)\n");
>   else if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> @@ -385,7 +386,7 @@ pass1check(struct inodesc *idesc)
>   printf(" (SKIPPING)\n");
>   else if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> @@ -394,7 +395,7 @@ pass1check(struct inodesc *idesc)
>   pfatal("DUP TABLE OVERFLOW.");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> Index: pass2.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass2.c,v
> retrieving revision 1.37
> diff -u -p -r1.37 pass2.c
> --- pass2.c 20 Jan 2015 18:22:21 -0000 1.37
> +++ pass2.c 19 Sep 2015 19:09:19 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -86,10 +87,10 @@ pass2(void)
>   pfatal("ROOT INODE UNALLOCATED");
>   if (reply("ALLOCATE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(8, "CANNOT ALLOCATE ROOT INODE");
>   break;
>  
>   case DCLEAR:
> @@ -97,12 +98,12 @@ pass2(void)
>   if (reply("REALLOCATE")) {
>   freeino(ROOTINO);
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(8, "CANNOT ALLOCATE ROOT INODE");
>   break;
>   }
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   break;
>  
> @@ -112,12 +113,12 @@ pass2(void)
>   if (reply("REALLOCATE")) {
>   freeino(ROOTINO);
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(8, "CANNOT ALLOCATE ROOT INODE");
>   break;
>   }
>   if (reply("FIX") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   dp = ginode(ROOTINO);
>   DIP_SET(dp, di_mode, DIP(dp, di_mode) & ~IFMT);
> @@ -129,7 +130,7 @@ pass2(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR ROOT INODE\n", GET_ISTATE(ROOTINO));
> + errx(8, "BAD STATE %d FOR ROOT INODE", GET_ISTATE(ROOTINO));
>   }
>   SET_ISTATE(ROOTINO, DFOUND);
>   /*
> @@ -453,7 +454,7 @@ again:
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(8, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(dirp->d_ino),
>      (unsigned long long)dirp->d_ino);
>   }
> Index: pass4.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass4.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 pass4.c
> --- pass4.c 20 Jan 2015 18:22:21 -0000 1.24
> +++ pass4.c 19 Sep 2015 19:09:19 -0000
> @@ -34,6 +34,7 @@
>  #include <sys/time.h>
>  #include <ufs/ufs/dinode.h>
>  #include <ufs/ffs/fs.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -110,7 +111,7 @@ pass4(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(8, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(inumber),
>      (unsigned long long)inumber);
>   }
> Index: pass5.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass5.c,v
> retrieving revision 1.48
> diff -u -p -r1.48 pass5.c
> --- pass5.c 20 Jan 2015 18:22:21 -0000 1.48
> +++ pass5.c 19 Sep 2015 19:09:19 -0000
> @@ -38,6 +38,7 @@
>  #include <ufs/ufs/quota.h>
>  #include <ufs/ufs/inode.h>
>  #include <ufs/ffs/ffs_extern.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <string.h>
>  #include <limits.h>
> @@ -162,7 +163,7 @@ pass5(void)
>  
>   default:
>   inomapsize = blkmapsize = sumsize = 0;
> - errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n",
> + errx(8, "UNKNOWN ROTATIONAL TABLE FORMAT %d",
>   fs->fs_postblformat);
>   }
>   memset(&idesc[0], 0, sizeof idesc);
> @@ -250,7 +251,7 @@ pass5(void)
>   default:
>   if (j < ROOTINO)
>   break;
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(8, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(j), (unsigned long long)j);
>   }
>   }
> Index: setup.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/setup.c,v
> retrieving revision 1.57
> diff -u -p -r1.57 setup.c
> --- setup.c 20 Jan 2015 18:22:21 -0000 1.57
> +++ setup.c 19 Sep 2015 19:09:19 -0000
> @@ -40,6 +40,7 @@
>  #include <sys/dkio.h>
>  #include <sys/disklabel.h>
>  
> +#include <err.h>
>  #include <errno.h>
>  #include <fcntl.h>
>  #include <stdio.h>
> @@ -133,7 +134,7 @@ setup(char *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)
> - errexit("cannot allocate space for superblock\n");
> + errx(8, "cannot allocate space for superblock");
>   if ((lp = getdisklabel(NULL, fsreadfd)) != NULL)
>   secsize = lp->d_secsize;
>   else
> @@ -377,7 +378,7 @@ found:
>   pfatal("BAD SUMMARY INFORMATION");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   asked++;
>   }
> @@ -652,7 +653,7 @@ getdisklabel(char *s, int fd)
>   if (s == NULL)
>   return (NULL);
>   pwarn("ioctl (GCINFO): %s\n", strerror(errno));
> - errexit("%s: can't read disk label\n", s);
> + errx(8, "%s: can't read disk label", s);
>   }
>   return (&lab);
>  }
> Index: utilities.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/utilities.c,v
> retrieving revision 1.50
> diff -u -p -r1.50 utilities.c
> --- utilities.c 5 Sep 2015 20:07:11 -0000 1.50
> +++ utilities.c 19 Sep 2015 19:09:19 -0000
> @@ -43,6 +43,7 @@
>  #include <ctype.h>
>  #include <unistd.h>
>  #include <limits.h>
> +#include <err.h>
>  #include <errno.h>
>  #include <fcntl.h>
>  #include <paths.h>
> @@ -126,7 +127,7 @@ inoinfo(ino_t inum)
>   int iloff;
>  
>   if (inum > maxino)
> - errexit("inoinfo: inumber %llu out of range",
> + errx(8, "inoinfo: inumber %llu out of range",
>      (unsigned long long)inum);
>   ilp = &inostathead[inum / sblock.fs_ipg];
>   iloff = inum % sblock.fs_ipg;
> @@ -148,7 +149,7 @@ bufinit(void)
>   pbp = pdirbp = NULL;
>   bufp = malloc((unsigned int)sblock.fs_bsize);
>   if (bufp == 0)
> - errexit("cannot allocate buffer pool\n");
> + errx(8, "cannot allocate buffer pool");
>   cgblk.b_un.b_buf = bufp;
>   initbarea(&cgblk);
>   bufhead.b_next = bufhead.b_prev = &bufhead;
> @@ -163,7 +164,7 @@ bufinit(void)
>   free(bufp);
>   if (i >= MINBUFS)
>   break;
> - errexit("cannot allocate buffer pool\n");
> + errx(8, "cannot allocate buffer pool");
>   }
>   bp->b_un.b_buf = bufp;
>   bp->b_prev = &bufhead;
> @@ -190,7 +191,7 @@ getdatablk(daddr_t blkno, long size)
>   if ((bp->b_flags & B_INUSE) == 0)
>   break;
>   if (bp == &bufhead)
> - errexit("deadlocked buffer pool\n");
> + errx(8, "deadlocked buffer pool");
>   getblk(bp, blkno, size);
>   /* FALLTHROUGH */
>  foundit:
> @@ -252,7 +253,7 @@ rwerror(char *mesg, daddr_t blk)
>   printf("\n");
>   pfatal("CANNOT %s: BLK %lld", mesg, (long long)blk);
>   if (reply("CONTINUE") == 0)
> - errexit("Program terminated\n");
> + errx(8, "Program terminated");
>  }
>  
>  void
> @@ -304,7 +305,7 @@ ckfini(int markclean)
>   free(bp);
>   }
>   if (bufhead.b_size != cnt)
> - errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
> + errx(8, "Panic: lost %d buffers", bufhead.b_size - cnt);
>   pbp = pdirbp = NULL;
>   if (markclean && (sblock.fs_clean & FS_ISCLEAN) == 0) {
>   /*
> @@ -581,7 +582,7 @@ dofix(struct inodesc *idesc, char *msg)
>   return (0);
>  
>   default:
> - errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
> + errx(8, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
>   }
>   /* NOTREACHED */
>  }

Reply | Threaded
Open this post in threaded view
|

Re: Remove errx() clone from fsck_*

Bob Beck-2
In reply to this post by Michael McConville-2

seeing "8" everywhere here makes me think I'm in OpenSSL code.

please make that some sort of sensible define.

And post this with the removal of the function, so do it
everywhere. I can't tell from the diff that it's sane.


On Sat, Sep 19, 2015 at 03:14:35PM -0400, Michael McConville wrote:

> The best I can tell, fsck's errexit() is just a clone of errx() (less
> the "progname: " prefix and the appended newline).
>
> If we delete it from fsck_ffs, fsck_ext2fs, and fsck_msdos, we can
> remove its definition in fsck. This diff is just for fsck_ffs.
> (fsck_msdos has only one use.)
>
> Another trivial diff, but deleting stdlib clones like this prevents
> people from getting distracted when they're trying to get stuff done.
>
>
> Index: dir.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/dir.c,v
> retrieving revision 1.32
> diff -u -p -r1.32 dir.c
> --- dir.c 20 Jan 2015 18:22:21 -0000 1.32
> +++ dir.c 19 Sep 2015 19:09:19 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -103,7 +104,7 @@ dirscan(struct inodesc *idesc)
>   char dbuf[DIRBLKSIZ];
>  
>   if (idesc->id_type != DATA)
> - errexit("wrong type to dirscan %d\n", idesc->id_type);
> + errx(8, "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);
> Index: inode.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/inode.c,v
> retrieving revision 1.46
> diff -u -p -r1.46 inode.c
> --- inode.c 20 Jan 2015 18:22:21 -0000 1.46
> +++ inode.c 19 Sep 2015 19:09:19 -0000
> @@ -38,6 +38,7 @@
>  #ifndef SMALL
>  #include <pwd.h>
>  #endif
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -285,7 +286,7 @@ ginode(ino_t inumber)
>   daddr_t iblk;
>  
>   if (inumber < ROOTINO || inumber > maxino)
> - errexit("bad inode number %llu to ginode\n",
> + errx(8, "bad inode number %llu to ginode",
>      (unsigned long long)inumber);
>   if (startinum == 0 ||
>      inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
> @@ -318,7 +319,7 @@ getnextinode(ino_t inumber)
>   static caddr_t nextinop;
>  
>   if (inumber != nextino++ || inumber > maxino)
> - errexit("bad inode number %llu to nextinode %llu\n",
> + errx(8, "bad inode number %llu to nextinode %llu",
>      (unsigned long long)inumber,
>      (unsigned long long)nextino);
>   if (inumber >= lastinum) {
> @@ -371,15 +372,13 @@ setinodebuf(ino_t inum)
>   }
>   if (inodebuf == NULL &&
>      (inodebuf = malloc((unsigned)inobufsize)) == NULL)
> - errexit("Cannot allocate space for inode buffer\n");
> + errx(8, "Cannot allocate space for inode buffer");
>  }
>  
>  void
>  freeinodebuf(void)
>  {
> -
> - if (inodebuf != NULL)
> - free(inodebuf);
> + free(inodebuf);
>   inodebuf = NULL;
>  }
>  
> @@ -404,7 +403,7 @@ cacheino(union dinode *dp, ino_t inumber
>   blks = NDADDR + NIADDR;
>   inp = malloc(sizeof(*inp) + (blks ? blks - 1 : 0) * sizeof(daddr_t));
>   if (inp == NULL)
> - errexit("cannot allocate memory for inode cache\n");
> + errx(8, "cannot allocate memory for inode cache");
>   inpp = &inphead[inumber % numdirs];
>   inp->i_nexthash = *inpp;
>   *inpp = inp;
> @@ -427,7 +426,7 @@ cacheino(union dinode *dp, ino_t inumber
>   newinpsort = reallocarray(inpsort,
>      (unsigned)newlistmax, sizeof(struct inoinfo *));
>   if (newinpsort == NULL)
> - errexit("cannot increase directory list");
> + errx(8, "cannot increase directory list");
>   inpsort = newinpsort;
>   listmax = newlistmax;
>   }
> @@ -447,7 +446,7 @@ getinoinfo(ino_t inumber)
>   continue;
>   return (inp);
>   }
> - errexit("cannot find inode %llu\n", (unsigned long long)inumber);
> + errx(8, "cannot find inode %llu", (unsigned long long)inumber);
>   return (NULL);
>  }
>  
> @@ -571,7 +570,7 @@ blkerror(ino_t ino, char *type, daddr_t
>   return;
>  
>   default:
> - errexit("BAD STATE %d TO BLKERR\n", GET_ISTATE(ino));
> + errx(8, "BAD STATE %d TO BLKERR", GET_ISTATE(ino));
>   /* NOTREACHED */
>   }
>  }
> Index: main.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/main.c,v
> retrieving revision 1.44
> diff -u -p -r1.44 main.c
> --- main.c 7 Feb 2015 02:09:13 -0000 1.44
> +++ main.c 19 Sep 2015 19:09:19 -0000
> @@ -38,6 +38,7 @@
>  #include <stdlib.h>
>  #include <string.h>
>  #include <ctype.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <unistd.h>
>  
> @@ -77,8 +78,7 @@ main(int argc, char *argv[])
>   skipclean = 0;
>   cvtlevel = argtoi('c', "conversion level", optarg, 10);
>   if (cvtlevel < 3)
> - errexit("cannot do level %d conversion\n",
> -    cvtlevel);
> + errx(8, "cannot do level %d conversion", cvtlevel);
>   break;
>  
>   case 'd':
> @@ -92,7 +92,7 @@ main(int argc, char *argv[])
>   case 'm':
>   lfmode = argtoi('m', "mode", optarg, 8);
>   if (lfmode &~ 07777)
> - errexit("bad mode to -m: %o\n", lfmode);
> + errx(8, "bad mode to -m: %o", lfmode);
>   printf("** lost+found creation mode %o\n", lfmode);
>   break;
>  
> @@ -109,8 +109,8 @@ main(int argc, char *argv[])
>   break;
>  
>   default:
> - errexit("usage: %s [-fnpy] [-b block#] [-c level] "
> -    "[-m mode] filesystem ...\n", __progname);
> + errx(8, "usage: %s [-fnpy] [-b block#] [-c level] "
> +    "[-m mode] filesystem ...", __progname);
>   }
>   }
>   argc -= optind;
> @@ -139,7 +139,7 @@ argtoi(int flag, char *req, char *str, i
>  
>   ret = (int)strtol(str, &cp, base);
>   if (cp == str || *cp)
> - errexit("-%c flag requires a %s\n", flag, req);
> + errx(8, "-%c flag requires a %s", flag, req);
>   return (ret);
>  }
>  
> Index: pass1.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass1.c,v
> retrieving revision 1.43
> diff -u -p -r1.43 pass1.c
> --- pass1.c 22 Aug 2015 06:00:27 -0000 1.43
> +++ pass1.c 19 Sep 2015 19:09:19 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -140,7 +141,7 @@ pass1(void)
>   info = calloc((unsigned)inosused, sizeof(struct inostat));
>   inospace = (unsigned)inosused * sizeof(struct inostat);
>   if (info == NULL)
> - errexit("cannot alloc %zu bytes for inoinfo", inospace);
> + errx(8, "cannot alloc %zu bytes for inoinfo", inospace);
>   inostathead[c].il_stat = info;
>   /*
>   * Scan the allocated inodes.
> @@ -302,7 +303,7 @@ checkinode(ino_t inumber, struct inodesc
>   pfatal("LINK COUNT TABLE OVERFLOW");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   } else {
>   zlnp->zlncnt = inumber;
> @@ -365,7 +366,7 @@ pass1check(struct inodesc *idesc)
>   printf(" (SKIPPING)\n");
>   else if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> @@ -385,7 +386,7 @@ pass1check(struct inodesc *idesc)
>   printf(" (SKIPPING)\n");
>   else if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> @@ -394,7 +395,7 @@ pass1check(struct inodesc *idesc)
>   pfatal("DUP TABLE OVERFLOW.");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> Index: pass2.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass2.c,v
> retrieving revision 1.37
> diff -u -p -r1.37 pass2.c
> --- pass2.c 20 Jan 2015 18:22:21 -0000 1.37
> +++ pass2.c 19 Sep 2015 19:09:19 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -86,10 +87,10 @@ pass2(void)
>   pfatal("ROOT INODE UNALLOCATED");
>   if (reply("ALLOCATE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(8, "CANNOT ALLOCATE ROOT INODE");
>   break;
>  
>   case DCLEAR:
> @@ -97,12 +98,12 @@ pass2(void)
>   if (reply("REALLOCATE")) {
>   freeino(ROOTINO);
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(8, "CANNOT ALLOCATE ROOT INODE");
>   break;
>   }
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   break;
>  
> @@ -112,12 +113,12 @@ pass2(void)
>   if (reply("REALLOCATE")) {
>   freeino(ROOTINO);
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(8, "CANNOT ALLOCATE ROOT INODE");
>   break;
>   }
>   if (reply("FIX") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   dp = ginode(ROOTINO);
>   DIP_SET(dp, di_mode, DIP(dp, di_mode) & ~IFMT);
> @@ -129,7 +130,7 @@ pass2(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR ROOT INODE\n", GET_ISTATE(ROOTINO));
> + errx(8, "BAD STATE %d FOR ROOT INODE", GET_ISTATE(ROOTINO));
>   }
>   SET_ISTATE(ROOTINO, DFOUND);
>   /*
> @@ -453,7 +454,7 @@ again:
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(8, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(dirp->d_ino),
>      (unsigned long long)dirp->d_ino);
>   }
> Index: pass4.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass4.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 pass4.c
> --- pass4.c 20 Jan 2015 18:22:21 -0000 1.24
> +++ pass4.c 19 Sep 2015 19:09:19 -0000
> @@ -34,6 +34,7 @@
>  #include <sys/time.h>
>  #include <ufs/ufs/dinode.h>
>  #include <ufs/ffs/fs.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -110,7 +111,7 @@ pass4(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(8, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(inumber),
>      (unsigned long long)inumber);
>   }
> Index: pass5.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass5.c,v
> retrieving revision 1.48
> diff -u -p -r1.48 pass5.c
> --- pass5.c 20 Jan 2015 18:22:21 -0000 1.48
> +++ pass5.c 19 Sep 2015 19:09:19 -0000
> @@ -38,6 +38,7 @@
>  #include <ufs/ufs/quota.h>
>  #include <ufs/ufs/inode.h>
>  #include <ufs/ffs/ffs_extern.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <string.h>
>  #include <limits.h>
> @@ -162,7 +163,7 @@ pass5(void)
>  
>   default:
>   inomapsize = blkmapsize = sumsize = 0;
> - errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n",
> + errx(8, "UNKNOWN ROTATIONAL TABLE FORMAT %d",
>   fs->fs_postblformat);
>   }
>   memset(&idesc[0], 0, sizeof idesc);
> @@ -250,7 +251,7 @@ pass5(void)
>   default:
>   if (j < ROOTINO)
>   break;
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(8, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(j), (unsigned long long)j);
>   }
>   }
> Index: setup.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/setup.c,v
> retrieving revision 1.57
> diff -u -p -r1.57 setup.c
> --- setup.c 20 Jan 2015 18:22:21 -0000 1.57
> +++ setup.c 19 Sep 2015 19:09:19 -0000
> @@ -40,6 +40,7 @@
>  #include <sys/dkio.h>
>  #include <sys/disklabel.h>
>  
> +#include <err.h>
>  #include <errno.h>
>  #include <fcntl.h>
>  #include <stdio.h>
> @@ -133,7 +134,7 @@ setup(char *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)
> - errexit("cannot allocate space for superblock\n");
> + errx(8, "cannot allocate space for superblock");
>   if ((lp = getdisklabel(NULL, fsreadfd)) != NULL)
>   secsize = lp->d_secsize;
>   else
> @@ -377,7 +378,7 @@ found:
>   pfatal("BAD SUMMARY INFORMATION");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   asked++;
>   }
> @@ -652,7 +653,7 @@ getdisklabel(char *s, int fd)
>   if (s == NULL)
>   return (NULL);
>   pwarn("ioctl (GCINFO): %s\n", strerror(errno));
> - errexit("%s: can't read disk label\n", s);
> + errx(8, "%s: can't read disk label", s);
>   }
>   return (&lab);
>  }
> Index: utilities.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/utilities.c,v
> retrieving revision 1.50
> diff -u -p -r1.50 utilities.c
> --- utilities.c 5 Sep 2015 20:07:11 -0000 1.50
> +++ utilities.c 19 Sep 2015 19:09:19 -0000
> @@ -43,6 +43,7 @@
>  #include <ctype.h>
>  #include <unistd.h>
>  #include <limits.h>
> +#include <err.h>
>  #include <errno.h>
>  #include <fcntl.h>
>  #include <paths.h>
> @@ -126,7 +127,7 @@ inoinfo(ino_t inum)
>   int iloff;
>  
>   if (inum > maxino)
> - errexit("inoinfo: inumber %llu out of range",
> + errx(8, "inoinfo: inumber %llu out of range",
>      (unsigned long long)inum);
>   ilp = &inostathead[inum / sblock.fs_ipg];
>   iloff = inum % sblock.fs_ipg;
> @@ -148,7 +149,7 @@ bufinit(void)
>   pbp = pdirbp = NULL;
>   bufp = malloc((unsigned int)sblock.fs_bsize);
>   if (bufp == 0)
> - errexit("cannot allocate buffer pool\n");
> + errx(8, "cannot allocate buffer pool");
>   cgblk.b_un.b_buf = bufp;
>   initbarea(&cgblk);
>   bufhead.b_next = bufhead.b_prev = &bufhead;
> @@ -163,7 +164,7 @@ bufinit(void)
>   free(bufp);
>   if (i >= MINBUFS)
>   break;
> - errexit("cannot allocate buffer pool\n");
> + errx(8, "cannot allocate buffer pool");
>   }
>   bp->b_un.b_buf = bufp;
>   bp->b_prev = &bufhead;
> @@ -190,7 +191,7 @@ getdatablk(daddr_t blkno, long size)
>   if ((bp->b_flags & B_INUSE) == 0)
>   break;
>   if (bp == &bufhead)
> - errexit("deadlocked buffer pool\n");
> + errx(8, "deadlocked buffer pool");
>   getblk(bp, blkno, size);
>   /* FALLTHROUGH */
>  foundit:
> @@ -252,7 +253,7 @@ rwerror(char *mesg, daddr_t blk)
>   printf("\n");
>   pfatal("CANNOT %s: BLK %lld", mesg, (long long)blk);
>   if (reply("CONTINUE") == 0)
> - errexit("Program terminated\n");
> + errx(8, "Program terminated");
>  }
>  
>  void
> @@ -304,7 +305,7 @@ ckfini(int markclean)
>   free(bp);
>   }
>   if (bufhead.b_size != cnt)
> - errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
> + errx(8, "Panic: lost %d buffers", bufhead.b_size - cnt);
>   pbp = pdirbp = NULL;
>   if (markclean && (sblock.fs_clean & FS_ISCLEAN) == 0) {
>   /*
> @@ -581,7 +582,7 @@ dofix(struct inodesc *idesc, char *msg)
>   return (0);
>  
>   default:
> - errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
> + errx(8, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
>   }
>   /* NOTREACHED */
>  }
>

Reply | Threaded
Open this post in threaded view
|

Re: Remove errx() clone from fsck_*

Michael McConville-2
Bob Beck wrote:
> seeing "8" everywhere here makes me think I'm in OpenSSL code.
>
> please make that some sort of sensible define.
>
> And post this with the removal of the function, so do it
> everywhere. I can't tell from the diff that it's sane.

Below is a complete removal of errexit(), as requested on ICB.

I replaced a couple fprintf/exit combos too, which should also be
errx().


Index: fsck/fsutil.c
===================================================================
RCS file: /cvs/src/sbin/fsck/fsutil.c,v
retrieving revision 1.21
diff -u -p -r1.21 fsutil.c
--- fsck/fsutil.c 29 May 2015 15:57:36 -0000 1.21
+++ fsck/fsutil.c 19 Sep 2015 20:54:33 -0000
@@ -73,18 +73,6 @@ hotroot(void)
  return hot;
 }
 
-/*VARARGS*/
-void
-errexit(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- (void) vfprintf(stderr, fmt, ap);
- va_end(ap);
- exit(8);
-}
-
 static void
 vmsg(int fatal, const char *fmt, va_list ap)
 {
Index: fsck/fsutil.h
===================================================================
RCS file: /cvs/src/sbin/fsck/fsutil.h,v
retrieving revision 1.7
diff -u -p -r1.7 fsutil.h
--- fsck/fsutil.h 8 Oct 2014 16:27:53 -0000 1.7
+++ fsck/fsutil.h 19 Sep 2015 20:54:33 -0000
@@ -31,8 +31,6 @@
  */
 
 void xperror(const char *);
-void errexit(const char *, ...)
-    __attribute__((__noreturn__,__format__(__printf__,1,2)));
 void pfatal(const char *, ...)
     __attribute__((__format__(__printf__,1,2)));
 void pwarn(const char *, ...)
Index: fsck_ext2fs/dir.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/dir.c,v
retrieving revision 1.20
diff -u -p -r1.20 dir.c
--- fsck_ext2fs/dir.c 16 Jan 2015 06:39:57 -0000 1.20
+++ fsck_ext2fs/dir.c 19 Sep 2015 20:54:33 -0000
@@ -40,6 +40,7 @@
 
 #include <ufs/ufs/dinode.h> /* for IFMT & friends */
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -114,13 +115,11 @@ dirscan(struct inodesc *idesc)
  long blksiz;
  char *dbuf = NULL;
 
- if ((dbuf = malloc(sblock.e2fs_bsize)) == NULL) {
- fprintf(stderr, "out of memory");
- exit(8);
- }
+ if ((dbuf = malloc(sblock.e2fs_bsize)) == NULL)
+ errx(8, "out of memory");
 
  if (idesc->id_type != DATA)
- errexit("wrong type to dirscan %d\n", idesc->id_type);
+ errx(8, "wrong type to dirscan %d", idesc->id_type);
  if (idesc->id_entryno == 0 &&
     (idesc->id_filesize & (sblock.e2fs_bsize - 1)) != 0)
  idesc->id_filesize = roundup(idesc->id_filesize, sblock.e2fs_bsize);
@@ -532,10 +531,8 @@ expanddir(struct ext2fs_dinode *dp, char
  sblock.e2fs_bsize);
  if (bp->b_errs)
  goto bad;
- if ((firstblk = malloc(sblock.e2fs_bsize)) == NULL) {
- fprintf(stderr, "out of memory\n");
- exit(8);
- }
+ if ((firstblk = malloc(sblock.e2fs_bsize)) == NULL)
+ errx(8, "out of memory");
  memcpy(firstblk, bp->b_un.b_buf, sblock.e2fs_bsize);
  bp = getdirblk(newblk, sblock.e2fs_bsize);
  if (bp->b_errs) {
Index: fsck_ext2fs/inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/inode.c,v
retrieving revision 1.25
diff -u -p -r1.25 inode.c
--- fsck_ext2fs/inode.c 16 Jan 2015 06:39:57 -0000 1.25
+++ fsck_ext2fs/inode.c 19 Sep 2015 20:54:33 -0000
@@ -46,6 +46,7 @@
 #include <string.h>
 #include <time.h>
 #include <limits.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "fsutil.h"
@@ -332,7 +333,7 @@ ginode(ino_t inumber)
 
  if ((inumber < EXT2_FIRSTINO && inumber != EXT2_ROOTINO)
  || inumber > maxino)
- errexit("bad inode number %llu to ginode\n",
+ errx(8, "bad inode number %llu to ginode",
     (unsigned long long)inumber);
  if (startinum == 0 ||
     inumber < startinum || inumber >= startinum + sblock.e2fs_ipb) {
@@ -361,7 +362,7 @@ getnextinode(ino_t inumber)
  static struct ext2fs_dinode *dp;
 
  if (inumber != nextino++ || inumber > maxino)
- errexit("bad inode number %llu to nextinode\n",
+ errx(8, "bad inode number %llu to nextinode",
     (unsigned long long)inumber);
  if (inumber >= lastinum) {
  readcnt++;
@@ -400,7 +401,7 @@ resetinodebuf(void)
  }
  if (inodebuf == NULL &&
     (inodebuf = malloc((unsigned)inobufsize)) == NULL)
- errexit("Cannot allocate space for inode buffer\n");
+ errx(8, "Cannot allocate space for inode buffer");
  while (nextino < EXT2_ROOTINO)
  (void)getnextinode(nextino);
 }
@@ -452,7 +453,7 @@ cacheino(struct ext2fs_dinode *dp, ino_t
  inpsort = reallocarray(inpsort, listmax,
     sizeof(struct inoinfo *));
  if (inpsort == NULL)
- errexit("cannot increase directory list\n");
+ errx(8, "cannot increase directory list");
  }
  inpsort[inplast++] = inp;
 }
@@ -470,7 +471,7 @@ getinoinfo(ino_t inumber)
  continue;
  return (inp);
  }
- errexit("cannot find inode %llu\n", (unsigned long long)inumber);
+ errx(8, "cannot find inode %llu", (unsigned long long)inumber);
  return (NULL);
 }
 
@@ -601,7 +602,7 @@ blkerror(ino_t ino, char *type, daddr32_
  return;
 
  default:
- errexit("BAD STATE %d TO BLKERR\n", statemap[ino]);
+ errx(8, "BAD STATE %d TO BLKERR", statemap[ino]);
  /* NOTREACHED */
  }
 }
Index: fsck_ext2fs/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/main.c,v
retrieving revision 1.22
diff -u -p -r1.22 main.c
--- fsck_ext2fs/main.c 7 Feb 2015 02:09:13 -0000 1.22
+++ fsck_ext2fs/main.c 19 Sep 2015 20:54:33 -0000
@@ -44,6 +44,7 @@
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "extern.h"
@@ -85,7 +86,7 @@ main(int argc, char *argv[])
  case 'm':
  lfmode = argtoi('m', "mode", optarg, 8);
  if (lfmode &~ 07777)
- errexit("bad mode to -m: %o\n", lfmode);
+ errx(8, "bad mode to -m: %o", lfmode);
  printf("** lost+found creation mode %o\n", lfmode);
  break;
 
@@ -136,7 +137,7 @@ argtoi(int flag, char *req, char *str, i
 
  ret = (int)strtol(str, &cp, base);
  if (cp == str || *cp)
- errexit("-%c flag requires a %s\n", flag, req);
+ errx(8, "-%c flag requires a %s", flag, req);
  return (ret);
 }
 
Index: fsck_ext2fs/pass1.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass1.c,v
retrieving revision 1.16
diff -u -p -r1.16 pass1.c
--- fsck_ext2fs/pass1.c 20 Aug 2015 22:02:20 -0000 1.16
+++ fsck_ext2fs/pass1.c 19 Sep 2015 20:54:33 -0000
@@ -243,7 +243,7 @@ checkinode(ino_t inumber, struct inodesc
  if (zlnp == NULL) {
  pfatal("LINK COUNT TABLE OVERFLOW");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  } else {
  zlnp->zlncnt = inumber;
  zlnp->next = zlnhead;
@@ -305,7 +305,7 @@ pass1check(struct inodesc *idesc)
  if (preen)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  return (STOP);
  }
  }
@@ -323,14 +323,14 @@ pass1check(struct inodesc *idesc)
  if (preen)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  return (STOP);
  }
  new = malloc(sizeof(struct dups));
  if (new == NULL) {
  pfatal("DUP TABLE OVERFLOW.");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  return (STOP);
  }
  new->dup = blkno;
Index: fsck_ext2fs/pass2.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass2.c,v
retrieving revision 1.14
diff -u -p -r1.14 pass2.c
--- fsck_ext2fs/pass2.c 16 Jan 2015 06:39:57 -0000 1.14
+++ fsck_ext2fs/pass2.c 19 Sep 2015 20:54:33 -0000
@@ -43,6 +43,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <limits.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "fsutil.h"
@@ -68,9 +69,9 @@ pass2(void)
  case USTATE:
  pfatal("ROOT INODE UNALLOCATED");
  if (reply("ALLOCATE") == 0)
- errexit("%s\n", "");
+ exit(8);
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
 
  case DCLEAR:
@@ -78,11 +79,11 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(EXT2_ROOTINO);
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  break;
 
  case FSTATE:
@@ -91,11 +92,11 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(EXT2_ROOTINO);
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("FIX") == 0)
- errexit("%s\n", "");
+ exit(8);
  dp = ginode(EXT2_ROOTINO);
  dp->e2di_mode = htole16((letoh16(dp->e2di_mode) & ~IFMT) | IFDIR);
  inodirty();
@@ -105,7 +106,7 @@ pass2(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR ROOT INODE\n", statemap[EXT2_ROOTINO]);
+ errx(8, "BAD STATE %d FOR ROOT INODE", statemap[EXT2_ROOTINO]);
  }
 
  /*
@@ -417,7 +418,7 @@ again:
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     statemap[letoh32(dirp->e2d_ino)],
     (unsigned long long)letoh32(dirp->e2d_ino));
  }
Index: fsck_ext2fs/pass4.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass4.c,v
retrieving revision 1.10
diff -u -p -r1.10 pass4.c
--- fsck_ext2fs/pass4.c 16 Jan 2015 06:39:57 -0000 1.10
+++ fsck_ext2fs/pass4.c 19 Sep 2015 20:54:33 -0000
@@ -37,6 +37,7 @@
 #include <ufs/ext2fs/ext2fs.h>
 #include <stdlib.h>
 #include <string.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -97,7 +98,7 @@ pass4(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     statemap[inumber], (unsigned long long)inumber);
  }
  }
Index: fsck_ext2fs/pass5.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass5.c,v
retrieving revision 1.18
diff -u -p -r1.18 pass5.c
--- fsck_ext2fs/pass5.c 16 Jan 2015 06:39:57 -0000 1.18
+++ fsck_ext2fs/pass5.c 19 Sep 2015 20:54:34 -0000
@@ -39,6 +39,7 @@
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -68,7 +69,7 @@ pass5(void)
  ibmap = malloc(fs->e2fs_bsize);
  bbmap = malloc(fs->e2fs_bsize);
  if (ibmap == NULL || bbmap == NULL) {
- errexit("out of memory\n");
+ errx(8, "out of memory");
  }
 
  for (c = 0; c < fs->e2fs_ncg; c++) {
@@ -131,7 +132,7 @@ pass5(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     statemap[j], (unsigned long long)j);
  }
  }
Index: fsck_ext2fs/setup.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/setup.c,v
retrieving revision 1.27
diff -u -p -r1.27 setup.c
--- fsck_ext2fs/setup.c 10 Sep 2015 15:21:40 -0000 1.27
+++ fsck_ext2fs/setup.c 19 Sep 2015 20:54:34 -0000
@@ -41,6 +41,7 @@
 #include <sys/dkio.h>
 #include <sys/disklabel.h>
 
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -104,7 +105,7 @@ setup(char *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)
- errexit("cannot allocate space for superblock\n");
+ errx(8, "cannot allocate space for superblock");
  if ((lp = getdisklabel((char *)NULL, fsreadfd)) != NULL)
  secsize = lp->d_secsize;
  else
@@ -183,7 +184,7 @@ setup(char *dev)
 
  sblock.e2fs_gd = calloc(sblock.e2fs_ngdb, sblock.e2fs_bsize);
  if (sblock.e2fs_gd == NULL)
- errexit("out of memory\n");
+ errx(8, "out of memory");
  asked = 0;
  for (i=0; i < sblock.e2fs_ngdb; i++) {
  if (bread(fsreadfd,(char *)
@@ -192,7 +193,7 @@ setup(char *dev)
  sblock.e2fs_bsize) != 0 && !asked) {
  pfatal("BAD SUMMARY INFORMATION");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  asked++;
  }
  }
@@ -479,7 +480,7 @@ getdisklabel(char *s, int fd)
  if (s == NULL)
  return ((struct disklabel *)NULL);
  pwarn("ioctl (GCINFO): %s\n", strerror(errno));
- errexit("%s: can't read disk label\n", s);
+ errx(8, "%s: can't read disk label", s);
  }
  return (&lab);
 }
Index: fsck_ext2fs/utilities.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/utilities.c,v
retrieving revision 1.26
diff -u -p -r1.26 utilities.c
--- fsck_ext2fs/utilities.c 5 Sep 2015 20:07:11 -0000 1.26
+++ fsck_ext2fs/utilities.c 19 Sep 2015 20:54:34 -0000
@@ -44,6 +44,7 @@
 #include <ctype.h>
 #include <unistd.h>
 #include <errno.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -134,7 +135,7 @@ bufinit(void)
  free(bufp);
  if (i >= MINBUFS)
  break;
- errexit("cannot allocate buffer pool\n");
+ errx(8, "cannot allocate buffer pool");
  }
  bp->b_un.b_buf = bufp;
  bp->b_prev = &bufhead;
@@ -161,7 +162,7 @@ getdatablk(daddr32_t blkno, long size)
  if ((bp->b_flags & B_INUSE) == 0)
  break;
  if (bp == &bufhead)
- errexit("deadlocked buffer pool\n");
+ errx(8, "deadlocked buffer pool");
  getblk(bp, blkno, size);
  diskreads++;
  /* fall through */
@@ -224,7 +225,7 @@ rwerror(char *mesg, daddr32_t blk)
  printf("\n");
  pfatal("CANNOT %s: BLK %d", mesg, blk);
  if (reply("CONTINUE") == 0)
- errexit("Program terminated\n");
+ errx(8, "Program terminated");
 }
 
 void
@@ -255,7 +256,7 @@ ckfini(int markclean)
  free((char *)bp);
  }
  if (bufhead.b_size != cnt)
- errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
+ errx(8, "Panic: lost %d buffers", bufhead.b_size - cnt);
  pbp = pdirbp = (struct bufarea *)0;
  if (markclean && (sblock.e2fs.e2fs_state & E2FS_ISCLEAN) == 0) {
  /*
@@ -505,7 +506,7 @@ dofix(struct inodesc *idesc, char *msg)
  return (0);
 
  default:
- errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
+ errx(8, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
  }
  /* NOTREACHED */
 }
Index: fsck_ffs/dir.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/dir.c,v
retrieving revision 1.32
diff -u -p -r1.32 dir.c
--- fsck_ffs/dir.c 20 Jan 2015 18:22:21 -0000 1.32
+++ fsck_ffs/dir.c 19 Sep 2015 20:54:34 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -103,7 +104,7 @@ dirscan(struct inodesc *idesc)
  char dbuf[DIRBLKSIZ];
 
  if (idesc->id_type != DATA)
- errexit("wrong type to dirscan %d\n", idesc->id_type);
+ errx(8, "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);
Index: fsck_ffs/inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/inode.c,v
retrieving revision 1.46
diff -u -p -r1.46 inode.c
--- fsck_ffs/inode.c 20 Jan 2015 18:22:21 -0000 1.46
+++ fsck_ffs/inode.c 19 Sep 2015 20:54:34 -0000
@@ -38,6 +38,7 @@
 #ifndef SMALL
 #include <pwd.h>
 #endif
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -285,7 +286,7 @@ ginode(ino_t inumber)
  daddr_t iblk;
 
  if (inumber < ROOTINO || inumber > maxino)
- errexit("bad inode number %llu to ginode\n",
+ errx(8, "bad inode number %llu to ginode",
     (unsigned long long)inumber);
  if (startinum == 0 ||
     inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
@@ -318,7 +319,7 @@ getnextinode(ino_t inumber)
  static caddr_t nextinop;
 
  if (inumber != nextino++ || inumber > maxino)
- errexit("bad inode number %llu to nextinode %llu\n",
+ errx(8, "bad inode number %llu to nextinode %llu",
     (unsigned long long)inumber,
     (unsigned long long)nextino);
  if (inumber >= lastinum) {
@@ -371,15 +372,13 @@ setinodebuf(ino_t inum)
  }
  if (inodebuf == NULL &&
     (inodebuf = malloc((unsigned)inobufsize)) == NULL)
- errexit("Cannot allocate space for inode buffer\n");
+ errx(8, "Cannot allocate space for inode buffer");
 }
 
 void
 freeinodebuf(void)
 {
-
- if (inodebuf != NULL)
- free(inodebuf);
+ free(inodebuf);
  inodebuf = NULL;
 }
 
@@ -404,7 +403,7 @@ cacheino(union dinode *dp, ino_t inumber
  blks = NDADDR + NIADDR;
  inp = malloc(sizeof(*inp) + (blks ? blks - 1 : 0) * sizeof(daddr_t));
  if (inp == NULL)
- errexit("cannot allocate memory for inode cache\n");
+ errx(8, "cannot allocate memory for inode cache");
  inpp = &inphead[inumber % numdirs];
  inp->i_nexthash = *inpp;
  *inpp = inp;
@@ -427,7 +426,7 @@ cacheino(union dinode *dp, ino_t inumber
  newinpsort = reallocarray(inpsort,
     (unsigned)newlistmax, sizeof(struct inoinfo *));
  if (newinpsort == NULL)
- errexit("cannot increase directory list");
+ errx(8, "cannot increase directory list");
  inpsort = newinpsort;
  listmax = newlistmax;
  }
@@ -447,7 +446,7 @@ getinoinfo(ino_t inumber)
  continue;
  return (inp);
  }
- errexit("cannot find inode %llu\n", (unsigned long long)inumber);
+ errx(8, "cannot find inode %llu", (unsigned long long)inumber);
  return (NULL);
 }
 
@@ -571,7 +570,7 @@ blkerror(ino_t ino, char *type, daddr_t
  return;
 
  default:
- errexit("BAD STATE %d TO BLKERR\n", GET_ISTATE(ino));
+ errx(8, "BAD STATE %d TO BLKERR", GET_ISTATE(ino));
  /* NOTREACHED */
  }
 }
Index: fsck_ffs/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/main.c,v
retrieving revision 1.44
diff -u -p -r1.44 main.c
--- fsck_ffs/main.c 7 Feb 2015 02:09:13 -0000 1.44
+++ fsck_ffs/main.c 19 Sep 2015 20:54:34 -0000
@@ -38,6 +38,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <err.h>
 #include <stdio.h>
 #include <unistd.h>
 
@@ -77,8 +78,7 @@ main(int argc, char *argv[])
  skipclean = 0;
  cvtlevel = argtoi('c', "conversion level", optarg, 10);
  if (cvtlevel < 3)
- errexit("cannot do level %d conversion\n",
-    cvtlevel);
+ errx(8, "cannot do level %d conversion", cvtlevel);
  break;
 
  case 'd':
@@ -92,7 +92,7 @@ main(int argc, char *argv[])
  case 'm':
  lfmode = argtoi('m', "mode", optarg, 8);
  if (lfmode &~ 07777)
- errexit("bad mode to -m: %o\n", lfmode);
+ errx(8, "bad mode to -m: %o", lfmode);
  printf("** lost+found creation mode %o\n", lfmode);
  break;
 
@@ -109,8 +109,8 @@ main(int argc, char *argv[])
  break;
 
  default:
- errexit("usage: %s [-fnpy] [-b block#] [-c level] "
-    "[-m mode] filesystem ...\n", __progname);
+ errx(8, "usage: %s [-fnpy] [-b block#] [-c level] "
+    "[-m mode] filesystem ...", __progname);
  }
  }
  argc -= optind;
@@ -139,7 +139,7 @@ argtoi(int flag, char *req, char *str, i
 
  ret = (int)strtol(str, &cp, base);
  if (cp == str || *cp)
- errexit("-%c flag requires a %s\n", flag, req);
+ errx(8, "-%c flag requires a %s", flag, req);
  return (ret);
 }
 
Index: fsck_ffs/pass1.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass1.c,v
retrieving revision 1.43
diff -u -p -r1.43 pass1.c
--- fsck_ffs/pass1.c 22 Aug 2015 06:00:27 -0000 1.43
+++ fsck_ffs/pass1.c 19 Sep 2015 20:54:34 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -140,7 +141,7 @@ pass1(void)
  info = calloc((unsigned)inosused, sizeof(struct inostat));
  inospace = (unsigned)inosused * sizeof(struct inostat);
  if (info == NULL)
- errexit("cannot alloc %zu bytes for inoinfo", inospace);
+ errx(8, "cannot alloc %zu bytes for inoinfo", inospace);
  inostathead[c].il_stat = info;
  /*
  * Scan the allocated inodes.
@@ -302,7 +303,7 @@ checkinode(ino_t inumber, struct inodesc
  pfatal("LINK COUNT TABLE OVERFLOW");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  } else {
  zlnp->zlncnt = inumber;
@@ -365,7 +366,7 @@ pass1check(struct inodesc *idesc)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
@@ -385,7 +386,7 @@ pass1check(struct inodesc *idesc)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
@@ -394,7 +395,7 @@ pass1check(struct inodesc *idesc)
  pfatal("DUP TABLE OVERFLOW.");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
Index: fsck_ffs/pass2.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass2.c,v
retrieving revision 1.37
diff -u -p -r1.37 pass2.c
--- fsck_ffs/pass2.c 20 Jan 2015 18:22:21 -0000 1.37
+++ fsck_ffs/pass2.c 19 Sep 2015 20:54:34 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -86,10 +87,10 @@ pass2(void)
  pfatal("ROOT INODE UNALLOCATED");
  if (reply("ALLOCATE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
 
  case DCLEAR:
@@ -97,12 +98,12 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(ROOTINO);
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  break;
 
@@ -112,12 +113,12 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(ROOTINO);
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(8, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("FIX") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  dp = ginode(ROOTINO);
  DIP_SET(dp, di_mode, DIP(dp, di_mode) & ~IFMT);
@@ -129,7 +130,7 @@ pass2(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR ROOT INODE\n", GET_ISTATE(ROOTINO));
+ errx(8, "BAD STATE %d FOR ROOT INODE", GET_ISTATE(ROOTINO));
  }
  SET_ISTATE(ROOTINO, DFOUND);
  /*
@@ -453,7 +454,7 @@ again:
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(dirp->d_ino),
     (unsigned long long)dirp->d_ino);
  }
Index: fsck_ffs/pass4.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass4.c,v
retrieving revision 1.24
diff -u -p -r1.24 pass4.c
--- fsck_ffs/pass4.c 20 Jan 2015 18:22:21 -0000 1.24
+++ fsck_ffs/pass4.c 19 Sep 2015 20:54:34 -0000
@@ -34,6 +34,7 @@
 #include <sys/time.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -110,7 +111,7 @@ pass4(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(inumber),
     (unsigned long long)inumber);
  }
Index: fsck_ffs/pass5.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass5.c,v
retrieving revision 1.48
diff -u -p -r1.48 pass5.c
--- fsck_ffs/pass5.c 20 Jan 2015 18:22:21 -0000 1.48
+++ fsck_ffs/pass5.c 19 Sep 2015 20:54:34 -0000
@@ -38,6 +38,7 @@
 #include <ufs/ufs/quota.h>
 #include <ufs/ufs/inode.h>
 #include <ufs/ffs/ffs_extern.h>
+#include <err.h>
 #include <stdio.h>
 #include <string.h>
 #include <limits.h>
@@ -162,7 +163,7 @@ pass5(void)
 
  default:
  inomapsize = blkmapsize = sumsize = 0;
- errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n",
+ errx(8, "UNKNOWN ROTATIONAL TABLE FORMAT %d",
  fs->fs_postblformat);
  }
  memset(&idesc[0], 0, sizeof idesc);
@@ -250,7 +251,7 @@ pass5(void)
  default:
  if (j < ROOTINO)
  break;
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(8, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(j), (unsigned long long)j);
  }
  }
Index: fsck_ffs/setup.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/setup.c,v
retrieving revision 1.57
diff -u -p -r1.57 setup.c
--- fsck_ffs/setup.c 20 Jan 2015 18:22:21 -0000 1.57
+++ fsck_ffs/setup.c 19 Sep 2015 20:54:34 -0000
@@ -40,6 +40,7 @@
 #include <sys/dkio.h>
 #include <sys/disklabel.h>
 
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -133,7 +134,7 @@ setup(char *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)
- errexit("cannot allocate space for superblock\n");
+ errx(8, "cannot allocate space for superblock");
  if ((lp = getdisklabel(NULL, fsreadfd)) != NULL)
  secsize = lp->d_secsize;
  else
@@ -377,7 +378,7 @@ found:
  pfatal("BAD SUMMARY INFORMATION");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  asked++;
  }
@@ -652,7 +653,7 @@ getdisklabel(char *s, int fd)
  if (s == NULL)
  return (NULL);
  pwarn("ioctl (GCINFO): %s\n", strerror(errno));
- errexit("%s: can't read disk label\n", s);
+ errx(8, "%s: can't read disk label", s);
  }
  return (&lab);
 }
Index: fsck_ffs/utilities.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/utilities.c,v
retrieving revision 1.50
diff -u -p -r1.50 utilities.c
--- fsck_ffs/utilities.c 5 Sep 2015 20:07:11 -0000 1.50
+++ fsck_ffs/utilities.c 19 Sep 2015 20:54:34 -0000
@@ -43,6 +43,7 @@
 #include <ctype.h>
 #include <unistd.h>
 #include <limits.h>
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <paths.h>
@@ -126,7 +127,7 @@ inoinfo(ino_t inum)
  int iloff;
 
  if (inum > maxino)
- errexit("inoinfo: inumber %llu out of range",
+ errx(8, "inoinfo: inumber %llu out of range",
     (unsigned long long)inum);
  ilp = &inostathead[inum / sblock.fs_ipg];
  iloff = inum % sblock.fs_ipg;
@@ -148,7 +149,7 @@ bufinit(void)
  pbp = pdirbp = NULL;
  bufp = malloc((unsigned int)sblock.fs_bsize);
  if (bufp == 0)
- errexit("cannot allocate buffer pool\n");
+ errx(8, "cannot allocate buffer pool");
  cgblk.b_un.b_buf = bufp;
  initbarea(&cgblk);
  bufhead.b_next = bufhead.b_prev = &bufhead;
@@ -163,7 +164,7 @@ bufinit(void)
  free(bufp);
  if (i >= MINBUFS)
  break;
- errexit("cannot allocate buffer pool\n");
+ errx(8, "cannot allocate buffer pool");
  }
  bp->b_un.b_buf = bufp;
  bp->b_prev = &bufhead;
@@ -190,7 +191,7 @@ getdatablk(daddr_t blkno, long size)
  if ((bp->b_flags & B_INUSE) == 0)
  break;
  if (bp == &bufhead)
- errexit("deadlocked buffer pool\n");
+ errx(8, "deadlocked buffer pool");
  getblk(bp, blkno, size);
  /* FALLTHROUGH */
 foundit:
@@ -252,7 +253,7 @@ rwerror(char *mesg, daddr_t blk)
  printf("\n");
  pfatal("CANNOT %s: BLK %lld", mesg, (long long)blk);
  if (reply("CONTINUE") == 0)
- errexit("Program terminated\n");
+ errx(8, "Program terminated");
 }
 
 void
@@ -304,7 +305,7 @@ ckfini(int markclean)
  free(bp);
  }
  if (bufhead.b_size != cnt)
- errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
+ errx(8, "Panic: lost %d buffers", bufhead.b_size - cnt);
  pbp = pdirbp = NULL;
  if (markclean && (sblock.fs_clean & FS_ISCLEAN) == 0) {
  /*
@@ -581,7 +582,7 @@ dofix(struct inodesc *idesc, char *msg)
  return (0);
 
  default:
- errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
+ errx(8, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
  }
  /* NOTREACHED */
 }
Index: fsck_msdos/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_msdos/main.c,v
retrieving revision 1.19
diff -u -p -r1.19 main.c
--- fsck_msdos/main.c 16 Jun 2014 18:33:33 -0000 1.19
+++ fsck_msdos/main.c 19 Sep 2015 20:54:34 -0000
@@ -32,6 +32,7 @@
 #include <ctype.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <err.h>
 #include <errno.h>
 #include <stdarg.h>
 
@@ -48,7 +49,7 @@ int main(int, char **);
 static void
 usage(void)
 {
- errexit("usage: fsck_msdos [-fnpy] filesystem ...\n");
+ errx(8, "usage: fsck_msdos [-fnpy] filesystem ...");
 }
 
 int

Reply | Threaded
Open this post in threaded view
|

Re: Remove errx() clone from fsck_*

Michael McConville-2
Bob Beck wrote:

> Michael McConville wrote:
> > Bob Beck wrote:
> > > seeing "8" everywhere here makes me think I'm in OpenSSL code.
> > >
> > > please make that some sort of sensible define.
> > >
> > > And post this with the removal of the function, so do it
> > > everywhere. I can't tell from the diff that it's sane.
> >
> > Below is a complete removal of errexit(), as requested on ICB.
> >
> > I replaced a couple fprintf/exit combos too, which should also be
> > errx().
>
> You still have "8" everywhere.. not 1, or 16, or 256 :)
>
> I realize we don't want the behaviour to change but can this be a #define?
>
> magically chosen ass numbers everywhere are bad.

Is FSCKFAIL too wordy? FSFAIL could carry false implications and EFAIL
is a little tautological.

Feel free to s/FSCKFAIL/better-idea/, of course. No strong feelings
here.


Index: fsck/fsutil.c
===================================================================
RCS file: /cvs/src/sbin/fsck/fsutil.c,v
retrieving revision 1.21
diff -u -p -r1.21 fsutil.c
--- fsck/fsutil.c 29 May 2015 15:57:36 -0000 1.21
+++ fsck/fsutil.c 20 Sep 2015 00:00:38 -0000
@@ -73,18 +73,6 @@ hotroot(void)
  return hot;
 }
 
-/*VARARGS*/
-void
-errexit(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- (void) vfprintf(stderr, fmt, ap);
- va_end(ap);
- exit(8);
-}
-
 static void
 vmsg(int fatal, const char *fmt, va_list ap)
 {
Index: fsck/fsutil.h
===================================================================
RCS file: /cvs/src/sbin/fsck/fsutil.h,v
retrieving revision 1.7
diff -u -p -r1.7 fsutil.h
--- fsck/fsutil.h 8 Oct 2014 16:27:53 -0000 1.7
+++ fsck/fsutil.h 20 Sep 2015 00:00:38 -0000
@@ -31,8 +31,6 @@
  */
 
 void xperror(const char *);
-void errexit(const char *, ...)
-    __attribute__((__noreturn__,__format__(__printf__,1,2)));
 void pfatal(const char *, ...)
     __attribute__((__format__(__printf__,1,2)));
 void pwarn(const char *, ...)
@@ -48,6 +46,8 @@ int  hotroot(void);
 void *emalloc(size_t);
 void *ereallocarray(void *, size_t, size_t);
 char *estrdup(const char *);
+
+#define FSCKFAIL 8
 
 #define CHECK_PREEN 1
 #define CHECK_VERBOSE 2
Index: fsck_ext2fs/dir.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/dir.c,v
retrieving revision 1.20
diff -u -p -r1.20 dir.c
--- fsck_ext2fs/dir.c 16 Jan 2015 06:39:57 -0000 1.20
+++ fsck_ext2fs/dir.c 20 Sep 2015 00:00:39 -0000
@@ -40,6 +40,7 @@
 
 #include <ufs/ufs/dinode.h> /* for IFMT & friends */
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -114,13 +115,11 @@ dirscan(struct inodesc *idesc)
  long blksiz;
  char *dbuf = NULL;
 
- if ((dbuf = malloc(sblock.e2fs_bsize)) == NULL) {
- fprintf(stderr, "out of memory");
- exit(8);
- }
+ if ((dbuf = malloc(sblock.e2fs_bsize)) == NULL)
+ errx(FSCKFAIL, "out of memory");
 
  if (idesc->id_type != DATA)
- errexit("wrong type to dirscan %d\n", idesc->id_type);
+ errx(FSCKFAIL, "wrong type to dirscan %d", idesc->id_type);
  if (idesc->id_entryno == 0 &&
     (idesc->id_filesize & (sblock.e2fs_bsize - 1)) != 0)
  idesc->id_filesize = roundup(idesc->id_filesize, sblock.e2fs_bsize);
@@ -532,10 +531,8 @@ expanddir(struct ext2fs_dinode *dp, char
  sblock.e2fs_bsize);
  if (bp->b_errs)
  goto bad;
- if ((firstblk = malloc(sblock.e2fs_bsize)) == NULL) {
- fprintf(stderr, "out of memory\n");
- exit(8);
- }
+ if ((firstblk = malloc(sblock.e2fs_bsize)) == NULL)
+ errx(FSCKFAIL, "out of memory");
  memcpy(firstblk, bp->b_un.b_buf, sblock.e2fs_bsize);
  bp = getdirblk(newblk, sblock.e2fs_bsize);
  if (bp->b_errs) {
Index: fsck_ext2fs/inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/inode.c,v
retrieving revision 1.25
diff -u -p -r1.25 inode.c
--- fsck_ext2fs/inode.c 16 Jan 2015 06:39:57 -0000 1.25
+++ fsck_ext2fs/inode.c 20 Sep 2015 00:00:39 -0000
@@ -46,6 +46,7 @@
 #include <string.h>
 #include <time.h>
 #include <limits.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "fsutil.h"
@@ -332,7 +333,7 @@ ginode(ino_t inumber)
 
  if ((inumber < EXT2_FIRSTINO && inumber != EXT2_ROOTINO)
  || inumber > maxino)
- errexit("bad inode number %llu to ginode\n",
+ errx(FSCKFAIL, "bad inode number %llu to ginode",
     (unsigned long long)inumber);
  if (startinum == 0 ||
     inumber < startinum || inumber >= startinum + sblock.e2fs_ipb) {
@@ -361,7 +362,7 @@ getnextinode(ino_t inumber)
  static struct ext2fs_dinode *dp;
 
  if (inumber != nextino++ || inumber > maxino)
- errexit("bad inode number %llu to nextinode\n",
+ errx(FSCKFAIL, "bad inode number %llu to nextinode",
     (unsigned long long)inumber);
  if (inumber >= lastinum) {
  readcnt++;
@@ -400,7 +401,7 @@ resetinodebuf(void)
  }
  if (inodebuf == NULL &&
     (inodebuf = malloc((unsigned)inobufsize)) == NULL)
- errexit("Cannot allocate space for inode buffer\n");
+ errx(FSCKFAIL, "Cannot allocate space for inode buffer");
  while (nextino < EXT2_ROOTINO)
  (void)getnextinode(nextino);
 }
@@ -452,7 +453,7 @@ cacheino(struct ext2fs_dinode *dp, ino_t
  inpsort = reallocarray(inpsort, listmax,
     sizeof(struct inoinfo *));
  if (inpsort == NULL)
- errexit("cannot increase directory list\n");
+ errx(FSCKFAIL, "cannot increase directory list");
  }
  inpsort[inplast++] = inp;
 }
@@ -470,7 +471,7 @@ getinoinfo(ino_t inumber)
  continue;
  return (inp);
  }
- errexit("cannot find inode %llu\n", (unsigned long long)inumber);
+ errx(FSCKFAIL, "cannot find inode %llu", (unsigned long long)inumber);
  return (NULL);
 }
 
@@ -601,7 +602,7 @@ blkerror(ino_t ino, char *type, daddr32_
  return;
 
  default:
- errexit("BAD STATE %d TO BLKERR\n", statemap[ino]);
+ errx(FSCKFAIL, "BAD STATE %d TO BLKERR", statemap[ino]);
  /* NOTREACHED */
  }
 }
Index: fsck_ext2fs/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/main.c,v
retrieving revision 1.22
diff -u -p -r1.22 main.c
--- fsck_ext2fs/main.c 7 Feb 2015 02:09:13 -0000 1.22
+++ fsck_ext2fs/main.c 20 Sep 2015 00:00:39 -0000
@@ -44,6 +44,7 @@
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "extern.h"
@@ -85,7 +86,7 @@ main(int argc, char *argv[])
  case 'm':
  lfmode = argtoi('m', "mode", optarg, 8);
  if (lfmode &~ 07777)
- errexit("bad mode to -m: %o\n", lfmode);
+ errx(FSCKFAIL, "bad mode to -m: %o", lfmode);
  printf("** lost+found creation mode %o\n", lfmode);
  break;
 
@@ -136,7 +137,7 @@ argtoi(int flag, char *req, char *str, i
 
  ret = (int)strtol(str, &cp, base);
  if (cp == str || *cp)
- errexit("-%c flag requires a %s\n", flag, req);
+ errx(FSCKFAIL, "-%c flag requires a %s", flag, req);
  return (ret);
 }
 
Index: fsck_ext2fs/pass1.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass1.c,v
retrieving revision 1.16
diff -u -p -r1.16 pass1.c
--- fsck_ext2fs/pass1.c 20 Aug 2015 22:02:20 -0000 1.16
+++ fsck_ext2fs/pass1.c 20 Sep 2015 00:00:39 -0000
@@ -243,7 +243,7 @@ checkinode(ino_t inumber, struct inodesc
  if (zlnp == NULL) {
  pfatal("LINK COUNT TABLE OVERFLOW");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  } else {
  zlnp->zlncnt = inumber;
  zlnp->next = zlnhead;
@@ -305,7 +305,7 @@ pass1check(struct inodesc *idesc)
  if (preen)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  return (STOP);
  }
  }
@@ -323,14 +323,14 @@ pass1check(struct inodesc *idesc)
  if (preen)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  return (STOP);
  }
  new = malloc(sizeof(struct dups));
  if (new == NULL) {
  pfatal("DUP TABLE OVERFLOW.");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  return (STOP);
  }
  new->dup = blkno;
Index: fsck_ext2fs/pass2.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass2.c,v
retrieving revision 1.14
diff -u -p -r1.14 pass2.c
--- fsck_ext2fs/pass2.c 16 Jan 2015 06:39:57 -0000 1.14
+++ fsck_ext2fs/pass2.c 20 Sep 2015 00:00:39 -0000
@@ -43,6 +43,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <limits.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "fsutil.h"
@@ -68,9 +69,9 @@ pass2(void)
  case USTATE:
  pfatal("ROOT INODE UNALLOCATED");
  if (reply("ALLOCATE") == 0)
- errexit("%s\n", "");
+ exit(8);
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
 
  case DCLEAR:
@@ -78,11 +79,11 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(EXT2_ROOTINO);
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  break;
 
  case FSTATE:
@@ -91,11 +92,11 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(EXT2_ROOTINO);
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("FIX") == 0)
- errexit("%s\n", "");
+ exit(8);
  dp = ginode(EXT2_ROOTINO);
  dp->e2di_mode = htole16((letoh16(dp->e2di_mode) & ~IFMT) | IFDIR);
  inodirty();
@@ -105,7 +106,7 @@ pass2(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR ROOT INODE\n", statemap[EXT2_ROOTINO]);
+ errx(FSCKFAIL, "BAD STATE %d FOR ROOT INODE", statemap[EXT2_ROOTINO]);
  }
 
  /*
@@ -417,7 +418,7 @@ again:
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     statemap[letoh32(dirp->e2d_ino)],
     (unsigned long long)letoh32(dirp->e2d_ino));
  }
Index: fsck_ext2fs/pass4.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass4.c,v
retrieving revision 1.10
diff -u -p -r1.10 pass4.c
--- fsck_ext2fs/pass4.c 16 Jan 2015 06:39:57 -0000 1.10
+++ fsck_ext2fs/pass4.c 20 Sep 2015 00:00:39 -0000
@@ -37,6 +37,7 @@
 #include <ufs/ext2fs/ext2fs.h>
 #include <stdlib.h>
 #include <string.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -97,7 +98,7 @@ pass4(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     statemap[inumber], (unsigned long long)inumber);
  }
  }
Index: fsck_ext2fs/pass5.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass5.c,v
retrieving revision 1.18
diff -u -p -r1.18 pass5.c
--- fsck_ext2fs/pass5.c 16 Jan 2015 06:39:57 -0000 1.18
+++ fsck_ext2fs/pass5.c 20 Sep 2015 00:00:39 -0000
@@ -39,6 +39,7 @@
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -68,7 +69,7 @@ pass5(void)
  ibmap = malloc(fs->e2fs_bsize);
  bbmap = malloc(fs->e2fs_bsize);
  if (ibmap == NULL || bbmap == NULL) {
- errexit("out of memory\n");
+ errx(FSCKFAIL, "out of memory");
  }
 
  for (c = 0; c < fs->e2fs_ncg; c++) {
@@ -131,7 +132,7 @@ pass5(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     statemap[j], (unsigned long long)j);
  }
  }
Index: fsck_ext2fs/setup.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/setup.c,v
retrieving revision 1.27
diff -u -p -r1.27 setup.c
--- fsck_ext2fs/setup.c 10 Sep 2015 15:21:40 -0000 1.27
+++ fsck_ext2fs/setup.c 20 Sep 2015 00:00:39 -0000
@@ -41,6 +41,7 @@
 #include <sys/dkio.h>
 #include <sys/disklabel.h>
 
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -104,7 +105,7 @@ setup(char *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)
- errexit("cannot allocate space for superblock\n");
+ errx(FSCKFAIL, "cannot allocate space for superblock");
  if ((lp = getdisklabel((char *)NULL, fsreadfd)) != NULL)
  secsize = lp->d_secsize;
  else
@@ -183,7 +184,7 @@ setup(char *dev)
 
  sblock.e2fs_gd = calloc(sblock.e2fs_ngdb, sblock.e2fs_bsize);
  if (sblock.e2fs_gd == NULL)
- errexit("out of memory\n");
+ errx(FSCKFAIL, "out of memory");
  asked = 0;
  for (i=0; i < sblock.e2fs_ngdb; i++) {
  if (bread(fsreadfd,(char *)
@@ -192,7 +193,7 @@ setup(char *dev)
  sblock.e2fs_bsize) != 0 && !asked) {
  pfatal("BAD SUMMARY INFORMATION");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ exit(8);
  asked++;
  }
  }
@@ -479,7 +480,7 @@ getdisklabel(char *s, int fd)
  if (s == NULL)
  return ((struct disklabel *)NULL);
  pwarn("ioctl (GCINFO): %s\n", strerror(errno));
- errexit("%s: can't read disk label\n", s);
+ errx(FSCKFAIL, "%s: can't read disk label", s);
  }
  return (&lab);
 }
Index: fsck_ext2fs/utilities.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/utilities.c,v
retrieving revision 1.26
diff -u -p -r1.26 utilities.c
--- fsck_ext2fs/utilities.c 5 Sep 2015 20:07:11 -0000 1.26
+++ fsck_ext2fs/utilities.c 20 Sep 2015 00:00:39 -0000
@@ -44,6 +44,7 @@
 #include <ctype.h>
 #include <unistd.h>
 #include <errno.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -134,7 +135,7 @@ bufinit(void)
  free(bufp);
  if (i >= MINBUFS)
  break;
- errexit("cannot allocate buffer pool\n");
+ errx(FSCKFAIL, "cannot allocate buffer pool");
  }
  bp->b_un.b_buf = bufp;
  bp->b_prev = &bufhead;
@@ -161,7 +162,7 @@ getdatablk(daddr32_t blkno, long size)
  if ((bp->b_flags & B_INUSE) == 0)
  break;
  if (bp == &bufhead)
- errexit("deadlocked buffer pool\n");
+ errx(FSCKFAIL, "deadlocked buffer pool");
  getblk(bp, blkno, size);
  diskreads++;
  /* fall through */
@@ -224,7 +225,7 @@ rwerror(char *mesg, daddr32_t blk)
  printf("\n");
  pfatal("CANNOT %s: BLK %d", mesg, blk);
  if (reply("CONTINUE") == 0)
- errexit("Program terminated\n");
+ errx(FSCKFAIL, "Program terminated");
 }
 
 void
@@ -255,7 +256,7 @@ ckfini(int markclean)
  free((char *)bp);
  }
  if (bufhead.b_size != cnt)
- errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
+ errx(FSCKFAIL, "Panic: lost %d buffers", bufhead.b_size - cnt);
  pbp = pdirbp = (struct bufarea *)0;
  if (markclean && (sblock.e2fs.e2fs_state & E2FS_ISCLEAN) == 0) {
  /*
@@ -505,7 +506,7 @@ dofix(struct inodesc *idesc, char *msg)
  return (0);
 
  default:
- errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
+ errx(FSCKFAIL, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
  }
  /* NOTREACHED */
 }
Index: fsck_ffs/dir.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/dir.c,v
retrieving revision 1.32
diff -u -p -r1.32 dir.c
--- fsck_ffs/dir.c 20 Jan 2015 18:22:21 -0000 1.32
+++ fsck_ffs/dir.c 20 Sep 2015 00:00:39 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -103,7 +104,7 @@ dirscan(struct inodesc *idesc)
  char dbuf[DIRBLKSIZ];
 
  if (idesc->id_type != DATA)
- errexit("wrong type to dirscan %d\n", idesc->id_type);
+ errx(FSCKFAIL, "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);
Index: fsck_ffs/inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/inode.c,v
retrieving revision 1.46
diff -u -p -r1.46 inode.c
--- fsck_ffs/inode.c 20 Jan 2015 18:22:21 -0000 1.46
+++ fsck_ffs/inode.c 20 Sep 2015 00:00:39 -0000
@@ -38,6 +38,7 @@
 #ifndef SMALL
 #include <pwd.h>
 #endif
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -285,7 +286,7 @@ ginode(ino_t inumber)
  daddr_t iblk;
 
  if (inumber < ROOTINO || inumber > maxino)
- errexit("bad inode number %llu to ginode\n",
+ errx(FSCKFAIL, "bad inode number %llu to ginode",
     (unsigned long long)inumber);
  if (startinum == 0 ||
     inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
@@ -318,7 +319,7 @@ getnextinode(ino_t inumber)
  static caddr_t nextinop;
 
  if (inumber != nextino++ || inumber > maxino)
- errexit("bad inode number %llu to nextinode %llu\n",
+ errx(FSCKFAIL, "bad inode number %llu to nextinode %llu",
     (unsigned long long)inumber,
     (unsigned long long)nextino);
  if (inumber >= lastinum) {
@@ -371,15 +372,13 @@ setinodebuf(ino_t inum)
  }
  if (inodebuf == NULL &&
     (inodebuf = malloc((unsigned)inobufsize)) == NULL)
- errexit("Cannot allocate space for inode buffer\n");
+ errx(FSCKFAIL, "Cannot allocate space for inode buffer");
 }
 
 void
 freeinodebuf(void)
 {
-
- if (inodebuf != NULL)
- free(inodebuf);
+ free(inodebuf);
  inodebuf = NULL;
 }
 
@@ -404,7 +403,7 @@ cacheino(union dinode *dp, ino_t inumber
  blks = NDADDR + NIADDR;
  inp = malloc(sizeof(*inp) + (blks ? blks - 1 : 0) * sizeof(daddr_t));
  if (inp == NULL)
- errexit("cannot allocate memory for inode cache\n");
+ errx(FSCKFAIL, "cannot allocate memory for inode cache");
  inpp = &inphead[inumber % numdirs];
  inp->i_nexthash = *inpp;
  *inpp = inp;
@@ -427,7 +426,7 @@ cacheino(union dinode *dp, ino_t inumber
  newinpsort = reallocarray(inpsort,
     (unsigned)newlistmax, sizeof(struct inoinfo *));
  if (newinpsort == NULL)
- errexit("cannot increase directory list");
+ errx(FSCKFAIL, "cannot increase directory list");
  inpsort = newinpsort;
  listmax = newlistmax;
  }
@@ -447,7 +446,7 @@ getinoinfo(ino_t inumber)
  continue;
  return (inp);
  }
- errexit("cannot find inode %llu\n", (unsigned long long)inumber);
+ errx(FSCKFAIL, "cannot find inode %llu", (unsigned long long)inumber);
  return (NULL);
 }
 
@@ -571,7 +570,7 @@ blkerror(ino_t ino, char *type, daddr_t
  return;
 
  default:
- errexit("BAD STATE %d TO BLKERR\n", GET_ISTATE(ino));
+ errx(FSCKFAIL, "BAD STATE %d TO BLKERR", GET_ISTATE(ino));
  /* NOTREACHED */
  }
 }
Index: fsck_ffs/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/main.c,v
retrieving revision 1.44
diff -u -p -r1.44 main.c
--- fsck_ffs/main.c 7 Feb 2015 02:09:13 -0000 1.44
+++ fsck_ffs/main.c 20 Sep 2015 00:00:39 -0000
@@ -38,6 +38,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <err.h>
 #include <stdio.h>
 #include <unistd.h>
 
@@ -77,8 +78,7 @@ main(int argc, char *argv[])
  skipclean = 0;
  cvtlevel = argtoi('c', "conversion level", optarg, 10);
  if (cvtlevel < 3)
- errexit("cannot do level %d conversion\n",
-    cvtlevel);
+ errx(FSCKFAIL, "cannot do level %d conversion", cvtlevel);
  break;
 
  case 'd':
@@ -92,7 +92,7 @@ main(int argc, char *argv[])
  case 'm':
  lfmode = argtoi('m', "mode", optarg, 8);
  if (lfmode &~ 07777)
- errexit("bad mode to -m: %o\n", lfmode);
+ errx(FSCKFAIL, "bad mode to -m: %o", lfmode);
  printf("** lost+found creation mode %o\n", lfmode);
  break;
 
@@ -109,8 +109,8 @@ main(int argc, char *argv[])
  break;
 
  default:
- errexit("usage: %s [-fnpy] [-b block#] [-c level] "
-    "[-m mode] filesystem ...\n", __progname);
+ errx(FSCKFAIL, "usage: %s [-fnpy] [-b block#] [-c level] "
+    "[-m mode] filesystem ...", __progname);
  }
  }
  argc -= optind;
@@ -139,7 +139,7 @@ argtoi(int flag, char *req, char *str, i
 
  ret = (int)strtol(str, &cp, base);
  if (cp == str || *cp)
- errexit("-%c flag requires a %s\n", flag, req);
+ errx(FSCKFAIL, "-%c flag requires a %s", flag, req);
  return (ret);
 }
 
Index: fsck_ffs/pass1.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass1.c,v
retrieving revision 1.43
diff -u -p -r1.43 pass1.c
--- fsck_ffs/pass1.c 22 Aug 2015 06:00:27 -0000 1.43
+++ fsck_ffs/pass1.c 20 Sep 2015 00:00:39 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -140,7 +141,7 @@ pass1(void)
  info = calloc((unsigned)inosused, sizeof(struct inostat));
  inospace = (unsigned)inosused * sizeof(struct inostat);
  if (info == NULL)
- errexit("cannot alloc %zu bytes for inoinfo", inospace);
+ errx(FSCKFAIL, "cannot alloc %zu bytes for inoinfo", inospace);
  inostathead[c].il_stat = info;
  /*
  * Scan the allocated inodes.
@@ -302,7 +303,7 @@ checkinode(ino_t inumber, struct inodesc
  pfatal("LINK COUNT TABLE OVERFLOW");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  } else {
  zlnp->zlncnt = inumber;
@@ -365,7 +366,7 @@ pass1check(struct inodesc *idesc)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
@@ -385,7 +386,7 @@ pass1check(struct inodesc *idesc)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
@@ -394,7 +395,7 @@ pass1check(struct inodesc *idesc)
  pfatal("DUP TABLE OVERFLOW.");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  return (STOP);
  }
Index: fsck_ffs/pass2.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass2.c,v
retrieving revision 1.37
diff -u -p -r1.37 pass2.c
--- fsck_ffs/pass2.c 20 Jan 2015 18:22:21 -0000 1.37
+++ fsck_ffs/pass2.c 20 Sep 2015 00:00:39 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -86,10 +87,10 @@ pass2(void)
  pfatal("ROOT INODE UNALLOCATED");
  if (reply("ALLOCATE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
 
  case DCLEAR:
@@ -97,12 +98,12 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(ROOTINO);
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  break;
 
@@ -112,12 +113,12 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(ROOTINO);
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("FIX") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  dp = ginode(ROOTINO);
  DIP_SET(dp, di_mode, DIP(dp, di_mode) & ~IFMT);
@@ -129,7 +130,7 @@ pass2(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR ROOT INODE\n", GET_ISTATE(ROOTINO));
+ errx(FSCKFAIL, "BAD STATE %d FOR ROOT INODE", GET_ISTATE(ROOTINO));
  }
  SET_ISTATE(ROOTINO, DFOUND);
  /*
@@ -453,7 +454,7 @@ again:
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(dirp->d_ino),
     (unsigned long long)dirp->d_ino);
  }
Index: fsck_ffs/pass4.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass4.c,v
retrieving revision 1.24
diff -u -p -r1.24 pass4.c
--- fsck_ffs/pass4.c 20 Jan 2015 18:22:21 -0000 1.24
+++ fsck_ffs/pass4.c 20 Sep 2015 00:00:39 -0000
@@ -34,6 +34,7 @@
 #include <sys/time.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -110,7 +111,7 @@ pass4(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(inumber),
     (unsigned long long)inumber);
  }
Index: fsck_ffs/pass5.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass5.c,v
retrieving revision 1.48
diff -u -p -r1.48 pass5.c
--- fsck_ffs/pass5.c 20 Jan 2015 18:22:21 -0000 1.48
+++ fsck_ffs/pass5.c 20 Sep 2015 00:00:39 -0000
@@ -38,6 +38,7 @@
 #include <ufs/ufs/quota.h>
 #include <ufs/ufs/inode.h>
 #include <ufs/ffs/ffs_extern.h>
+#include <err.h>
 #include <stdio.h>
 #include <string.h>
 #include <limits.h>
@@ -162,7 +163,7 @@ pass5(void)
 
  default:
  inomapsize = blkmapsize = sumsize = 0;
- errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n",
+ errx(FSCKFAIL, "UNKNOWN ROTATIONAL TABLE FORMAT %d",
  fs->fs_postblformat);
  }
  memset(&idesc[0], 0, sizeof idesc);
@@ -250,7 +251,7 @@ pass5(void)
  default:
  if (j < ROOTINO)
  break;
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(j), (unsigned long long)j);
  }
  }
Index: fsck_ffs/setup.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/setup.c,v
retrieving revision 1.57
diff -u -p -r1.57 setup.c
--- fsck_ffs/setup.c 20 Jan 2015 18:22:21 -0000 1.57
+++ fsck_ffs/setup.c 20 Sep 2015 00:00:40 -0000
@@ -40,6 +40,7 @@
 #include <sys/dkio.h>
 #include <sys/disklabel.h>
 
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -133,7 +134,7 @@ setup(char *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)
- errexit("cannot allocate space for superblock\n");
+ errx(FSCKFAIL, "cannot allocate space for superblock");
  if ((lp = getdisklabel(NULL, fsreadfd)) != NULL)
  secsize = lp->d_secsize;
  else
@@ -377,7 +378,7 @@ found:
  pfatal("BAD SUMMARY INFORMATION");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ exit(8);
  }
  asked++;
  }
@@ -652,7 +653,7 @@ getdisklabel(char *s, int fd)
  if (s == NULL)
  return (NULL);
  pwarn("ioctl (GCINFO): %s\n", strerror(errno));
- errexit("%s: can't read disk label\n", s);
+ errx(FSCKFAIL, "%s: can't read disk label", s);
  }
  return (&lab);
 }
Index: fsck_ffs/utilities.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/utilities.c,v
retrieving revision 1.50
diff -u -p -r1.50 utilities.c
--- fsck_ffs/utilities.c 5 Sep 2015 20:07:11 -0000 1.50
+++ fsck_ffs/utilities.c 20 Sep 2015 00:00:40 -0000
@@ -43,6 +43,7 @@
 #include <ctype.h>
 #include <unistd.h>
 #include <limits.h>
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <paths.h>
@@ -126,7 +127,7 @@ inoinfo(ino_t inum)
  int iloff;
 
  if (inum > maxino)
- errexit("inoinfo: inumber %llu out of range",
+ errx(FSCKFAIL, "inoinfo: inumber %llu out of range",
     (unsigned long long)inum);
  ilp = &inostathead[inum / sblock.fs_ipg];
  iloff = inum % sblock.fs_ipg;
@@ -148,7 +149,7 @@ bufinit(void)
  pbp = pdirbp = NULL;
  bufp = malloc((unsigned int)sblock.fs_bsize);
  if (bufp == 0)
- errexit("cannot allocate buffer pool\n");
+ errx(FSCKFAIL, "cannot allocate buffer pool");
  cgblk.b_un.b_buf = bufp;
  initbarea(&cgblk);
  bufhead.b_next = bufhead.b_prev = &bufhead;
@@ -163,7 +164,7 @@ bufinit(void)
  free(bufp);
  if (i >= MINBUFS)
  break;
- errexit("cannot allocate buffer pool\n");
+ errx(FSCKFAIL, "cannot allocate buffer pool");
  }
  bp->b_un.b_buf = bufp;
  bp->b_prev = &bufhead;
@@ -190,7 +191,7 @@ getdatablk(daddr_t blkno, long size)
  if ((bp->b_flags & B_INUSE) == 0)
  break;
  if (bp == &bufhead)
- errexit("deadlocked buffer pool\n");
+ errx(FSCKFAIL, "deadlocked buffer pool");
  getblk(bp, blkno, size);
  /* FALLTHROUGH */
 foundit:
@@ -252,7 +253,7 @@ rwerror(char *mesg, daddr_t blk)
  printf("\n");
  pfatal("CANNOT %s: BLK %lld", mesg, (long long)blk);
  if (reply("CONTINUE") == 0)
- errexit("Program terminated\n");
+ errx(FSCKFAIL, "Program terminated");
 }
 
 void
@@ -304,7 +305,7 @@ ckfini(int markclean)
  free(bp);
  }
  if (bufhead.b_size != cnt)
- errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
+ errx(FSCKFAIL, "Panic: lost %d buffers", bufhead.b_size - cnt);
  pbp = pdirbp = NULL;
  if (markclean && (sblock.fs_clean & FS_ISCLEAN) == 0) {
  /*
@@ -581,7 +582,7 @@ dofix(struct inodesc *idesc, char *msg)
  return (0);
 
  default:
- errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
+ errx(FSCKFAIL, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
  }
  /* NOTREACHED */
 }
Index: fsck_msdos/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_msdos/main.c,v
retrieving revision 1.19
diff -u -p -r1.19 main.c
--- fsck_msdos/main.c 16 Jun 2014 18:33:33 -0000 1.19
+++ fsck_msdos/main.c 20 Sep 2015 00:00:40 -0000
@@ -32,6 +32,7 @@
 #include <ctype.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <err.h>
 #include <errno.h>
 #include <stdarg.h>
 
@@ -48,7 +49,7 @@ int main(int, char **);
 static void
 usage(void)
 {
- errexit("usage: fsck_msdos [-fnpy] filesystem ...\n");
+ errx(FSCKFAIL, "usage: fsck_msdos [-fnpy] filesystem ...");
 }
 
 int

Reply | Threaded
Open this post in threaded view
|

Re: Remove errx() clone from fsck_*

Bob Beck-2


Alas, you are changing the behaviour in many places now.

for example you are calling exit(8) where previously
the errexit code would print a newline then exit (making the
previous interactive response not look stupid).

You are also, of course, spitting out "fcsk:" in front of the error
messages you are printing out, although this is less of a problem imo.

You are also using "errx" a lot of places where you have just come back
from a system call and have a legitimate errno.. You should use err()
in these places instead and change the error message appropriately to
allow for the strerror being printed.


On Sat, Sep 19, 2015 at 08:14:43PM -0400, Michael McConville wrote:

> Bob Beck wrote:
> > Michael McConville wrote:
> > > Bob Beck wrote:
> > > > seeing "8" everywhere here makes me think I'm in OpenSSL code.
> > > >
> > > > please make that some sort of sensible define.
> > > >
> > > > And post this with the removal of the function, so do it
> > > > everywhere. I can't tell from the diff that it's sane.
> > >
> > > Below is a complete removal of errexit(), as requested on ICB.
> > >
> > > I replaced a couple fprintf/exit combos too, which should also be
> > > errx().
> >
> > You still have "8" everywhere.. not 1, or 16, or 256 :)
> >
> > I realize we don't want the behaviour to change but can this be a #define?
> >
> > magically chosen ass numbers everywhere are bad.
>
> Is FSCKFAIL too wordy? FSFAIL could carry false implications and EFAIL
> is a little tautological.
>
> Feel free to s/FSCKFAIL/better-idea/, of course. No strong feelings
> here.
>
>
> Index: fsck/fsutil.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck/fsutil.c,v
> retrieving revision 1.21
> diff -u -p -r1.21 fsutil.c
> --- fsck/fsutil.c 29 May 2015 15:57:36 -0000 1.21
> +++ fsck/fsutil.c 20 Sep 2015 00:00:38 -0000
> @@ -73,18 +73,6 @@ hotroot(void)
>   return hot;
>  }
>  
> -/*VARARGS*/
> -void
> -errexit(const char *fmt, ...)
> -{
> - va_list ap;
> -
> - va_start(ap, fmt);
> - (void) vfprintf(stderr, fmt, ap);
> - va_end(ap);
> - exit(8);
> -}
> -
>  static void
>  vmsg(int fatal, const char *fmt, va_list ap)
>  {
> Index: fsck/fsutil.h
> ===================================================================
> RCS file: /cvs/src/sbin/fsck/fsutil.h,v
> retrieving revision 1.7
> diff -u -p -r1.7 fsutil.h
> --- fsck/fsutil.h 8 Oct 2014 16:27:53 -0000 1.7
> +++ fsck/fsutil.h 20 Sep 2015 00:00:38 -0000
> @@ -31,8 +31,6 @@
>   */
>  
>  void xperror(const char *);
> -void errexit(const char *, ...)
> -    __attribute__((__noreturn__,__format__(__printf__,1,2)));
>  void pfatal(const char *, ...)
>      __attribute__((__format__(__printf__,1,2)));
>  void pwarn(const char *, ...)
> @@ -48,6 +46,8 @@ int  hotroot(void);
>  void *emalloc(size_t);
>  void *ereallocarray(void *, size_t, size_t);
>  char *estrdup(const char *);
> +
> +#define FSCKFAIL 8
>  
>  #define CHECK_PREEN 1
>  #define CHECK_VERBOSE 2
> Index: fsck_ext2fs/dir.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/dir.c,v
> retrieving revision 1.20
> diff -u -p -r1.20 dir.c
> --- fsck_ext2fs/dir.c 16 Jan 2015 06:39:57 -0000 1.20
> +++ fsck_ext2fs/dir.c 20 Sep 2015 00:00:39 -0000
> @@ -40,6 +40,7 @@
>  
>  #include <ufs/ufs/dinode.h> /* for IFMT & friends */
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -114,13 +115,11 @@ dirscan(struct inodesc *idesc)
>   long blksiz;
>   char *dbuf = NULL;
>  
> - if ((dbuf = malloc(sblock.e2fs_bsize)) == NULL) {
> - fprintf(stderr, "out of memory");
> - exit(8);
> - }
> + if ((dbuf = malloc(sblock.e2fs_bsize)) == NULL)
> + errx(FSCKFAIL, "out of memory");
>  
>   if (idesc->id_type != DATA)
> - errexit("wrong type to dirscan %d\n", idesc->id_type);
> + errx(FSCKFAIL, "wrong type to dirscan %d", idesc->id_type);
>   if (idesc->id_entryno == 0 &&
>      (idesc->id_filesize & (sblock.e2fs_bsize - 1)) != 0)
>   idesc->id_filesize = roundup(idesc->id_filesize, sblock.e2fs_bsize);
> @@ -532,10 +531,8 @@ expanddir(struct ext2fs_dinode *dp, char
>   sblock.e2fs_bsize);
>   if (bp->b_errs)
>   goto bad;
> - if ((firstblk = malloc(sblock.e2fs_bsize)) == NULL) {
> - fprintf(stderr, "out of memory\n");
> - exit(8);
> - }
> + if ((firstblk = malloc(sblock.e2fs_bsize)) == NULL)
> + errx(FSCKFAIL, "out of memory");
>   memcpy(firstblk, bp->b_un.b_buf, sblock.e2fs_bsize);
>   bp = getdirblk(newblk, sblock.e2fs_bsize);
>   if (bp->b_errs) {
> Index: fsck_ext2fs/inode.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/inode.c,v
> retrieving revision 1.25
> diff -u -p -r1.25 inode.c
> --- fsck_ext2fs/inode.c 16 Jan 2015 06:39:57 -0000 1.25
> +++ fsck_ext2fs/inode.c 20 Sep 2015 00:00:39 -0000
> @@ -46,6 +46,7 @@
>  #include <string.h>
>  #include <time.h>
>  #include <limits.h>
> +#include <err.h>
>  
>  #include "fsck.h"
>  #include "fsutil.h"
> @@ -332,7 +333,7 @@ ginode(ino_t inumber)
>  
>   if ((inumber < EXT2_FIRSTINO && inumber != EXT2_ROOTINO)
>   || inumber > maxino)
> - errexit("bad inode number %llu to ginode\n",
> + errx(FSCKFAIL, "bad inode number %llu to ginode",
>      (unsigned long long)inumber);
>   if (startinum == 0 ||
>      inumber < startinum || inumber >= startinum + sblock.e2fs_ipb) {
> @@ -361,7 +362,7 @@ getnextinode(ino_t inumber)
>   static struct ext2fs_dinode *dp;
>  
>   if (inumber != nextino++ || inumber > maxino)
> - errexit("bad inode number %llu to nextinode\n",
> + errx(FSCKFAIL, "bad inode number %llu to nextinode",
>      (unsigned long long)inumber);
>   if (inumber >= lastinum) {
>   readcnt++;
> @@ -400,7 +401,7 @@ resetinodebuf(void)
>   }
>   if (inodebuf == NULL &&
>      (inodebuf = malloc((unsigned)inobufsize)) == NULL)
> - errexit("Cannot allocate space for inode buffer\n");
> + errx(FSCKFAIL, "Cannot allocate space for inode buffer");
>   while (nextino < EXT2_ROOTINO)
>   (void)getnextinode(nextino);
>  }
> @@ -452,7 +453,7 @@ cacheino(struct ext2fs_dinode *dp, ino_t
>   inpsort = reallocarray(inpsort, listmax,
>      sizeof(struct inoinfo *));
>   if (inpsort == NULL)
> - errexit("cannot increase directory list\n");
> + errx(FSCKFAIL, "cannot increase directory list");
>   }
>   inpsort[inplast++] = inp;
>  }
> @@ -470,7 +471,7 @@ getinoinfo(ino_t inumber)
>   continue;
>   return (inp);
>   }
> - errexit("cannot find inode %llu\n", (unsigned long long)inumber);
> + errx(FSCKFAIL, "cannot find inode %llu", (unsigned long long)inumber);
>   return (NULL);
>  }
>  
> @@ -601,7 +602,7 @@ blkerror(ino_t ino, char *type, daddr32_
>   return;
>  
>   default:
> - errexit("BAD STATE %d TO BLKERR\n", statemap[ino]);
> + errx(FSCKFAIL, "BAD STATE %d TO BLKERR", statemap[ino]);
>   /* NOTREACHED */
>   }
>  }
> Index: fsck_ext2fs/main.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/main.c,v
> retrieving revision 1.22
> diff -u -p -r1.22 main.c
> --- fsck_ext2fs/main.c 7 Feb 2015 02:09:13 -0000 1.22
> +++ fsck_ext2fs/main.c 20 Sep 2015 00:00:39 -0000
> @@ -44,6 +44,7 @@
>  #include <stdio.h>
>  #include <time.h>
>  #include <unistd.h>
> +#include <err.h>
>  
>  #include "fsck.h"
>  #include "extern.h"
> @@ -85,7 +86,7 @@ main(int argc, char *argv[])
>   case 'm':
>   lfmode = argtoi('m', "mode", optarg, 8);
>   if (lfmode &~ 07777)
> - errexit("bad mode to -m: %o\n", lfmode);
> + errx(FSCKFAIL, "bad mode to -m: %o", lfmode);
>   printf("** lost+found creation mode %o\n", lfmode);
>   break;
>  
> @@ -136,7 +137,7 @@ argtoi(int flag, char *req, char *str, i
>  
>   ret = (int)strtol(str, &cp, base);
>   if (cp == str || *cp)
> - errexit("-%c flag requires a %s\n", flag, req);
> + errx(FSCKFAIL, "-%c flag requires a %s", flag, req);
>   return (ret);
>  }
>  
> Index: fsck_ext2fs/pass1.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/pass1.c,v
> retrieving revision 1.16
> diff -u -p -r1.16 pass1.c
> --- fsck_ext2fs/pass1.c 20 Aug 2015 22:02:20 -0000 1.16
> +++ fsck_ext2fs/pass1.c 20 Sep 2015 00:00:39 -0000
> @@ -243,7 +243,7 @@ checkinode(ino_t inumber, struct inodesc
>   if (zlnp == NULL) {
>   pfatal("LINK COUNT TABLE OVERFLOW");
>   if (reply("CONTINUE") == 0)
> - errexit("%s\n", "");
> + exit(8);
>   } else {
>   zlnp->zlncnt = inumber;
>   zlnp->next = zlnhead;
> @@ -305,7 +305,7 @@ pass1check(struct inodesc *idesc)
>   if (preen)
>   printf(" (SKIPPING)\n");
>   else if (reply("CONTINUE") == 0)
> - errexit("%s\n", "");
> + exit(8);
>   return (STOP);
>   }
>   }
> @@ -323,14 +323,14 @@ pass1check(struct inodesc *idesc)
>   if (preen)
>   printf(" (SKIPPING)\n");
>   else if (reply("CONTINUE") == 0)
> - errexit("%s\n", "");
> + exit(8);
>   return (STOP);
>   }
>   new = malloc(sizeof(struct dups));
>   if (new == NULL) {
>   pfatal("DUP TABLE OVERFLOW.");
>   if (reply("CONTINUE") == 0)
> - errexit("%s\n", "");
> + exit(8);
>   return (STOP);
>   }
>   new->dup = blkno;
> Index: fsck_ext2fs/pass2.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/pass2.c,v
> retrieving revision 1.14
> diff -u -p -r1.14 pass2.c
> --- fsck_ext2fs/pass2.c 16 Jan 2015 06:39:57 -0000 1.14
> +++ fsck_ext2fs/pass2.c 20 Sep 2015 00:00:39 -0000
> @@ -43,6 +43,7 @@
>  #include <stdlib.h>
>  #include <string.h>
>  #include <limits.h>
> +#include <err.h>
>  
>  #include "fsck.h"
>  #include "fsutil.h"
> @@ -68,9 +69,9 @@ pass2(void)
>   case USTATE:
>   pfatal("ROOT INODE UNALLOCATED");
>   if (reply("ALLOCATE") == 0)
> - errexit("%s\n", "");
> + exit(8);
>   if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
>   break;
>  
>   case DCLEAR:
> @@ -78,11 +79,11 @@ pass2(void)
>   if (reply("REALLOCATE")) {
>   freeino(EXT2_ROOTINO);
>   if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
>   break;
>   }
>   if (reply("CONTINUE") == 0)
> - errexit("%s\n", "");
> + exit(8);
>   break;
>  
>   case FSTATE:
> @@ -91,11 +92,11 @@ pass2(void)
>   if (reply("REALLOCATE")) {
>   freeino(EXT2_ROOTINO);
>   if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
>   break;
>   }
>   if (reply("FIX") == 0)
> - errexit("%s\n", "");
> + exit(8);
>   dp = ginode(EXT2_ROOTINO);
>   dp->e2di_mode = htole16((letoh16(dp->e2di_mode) & ~IFMT) | IFDIR);
>   inodirty();
> @@ -105,7 +106,7 @@ pass2(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR ROOT INODE\n", statemap[EXT2_ROOTINO]);
> + errx(FSCKFAIL, "BAD STATE %d FOR ROOT INODE", statemap[EXT2_ROOTINO]);
>   }
>  
>   /*
> @@ -417,7 +418,7 @@ again:
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
>      statemap[letoh32(dirp->e2d_ino)],
>      (unsigned long long)letoh32(dirp->e2d_ino));
>   }
> Index: fsck_ext2fs/pass4.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/pass4.c,v
> retrieving revision 1.10
> diff -u -p -r1.10 pass4.c
> --- fsck_ext2fs/pass4.c 16 Jan 2015 06:39:57 -0000 1.10
> +++ fsck_ext2fs/pass4.c 20 Sep 2015 00:00:39 -0000
> @@ -37,6 +37,7 @@
>  #include <ufs/ext2fs/ext2fs.h>
>  #include <stdlib.h>
>  #include <string.h>
> +#include <err.h>
>  
>  #include "fsutil.h"
>  #include "fsck.h"
> @@ -97,7 +98,7 @@ pass4(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
>      statemap[inumber], (unsigned long long)inumber);
>   }
>   }
> Index: fsck_ext2fs/pass5.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/pass5.c,v
> retrieving revision 1.18
> diff -u -p -r1.18 pass5.c
> --- fsck_ext2fs/pass5.c 16 Jan 2015 06:39:57 -0000 1.18
> +++ fsck_ext2fs/pass5.c 20 Sep 2015 00:00:39 -0000
> @@ -39,6 +39,7 @@
>  #include <string.h>
>  #include <stdio.h>
>  #include <stdlib.h>
> +#include <err.h>
>  
>  #include "fsutil.h"
>  #include "fsck.h"
> @@ -68,7 +69,7 @@ pass5(void)
>   ibmap = malloc(fs->e2fs_bsize);
>   bbmap = malloc(fs->e2fs_bsize);
>   if (ibmap == NULL || bbmap == NULL) {
> - errexit("out of memory\n");
> + errx(FSCKFAIL, "out of memory");
>   }
>  
>   for (c = 0; c < fs->e2fs_ncg; c++) {
> @@ -131,7 +132,7 @@ pass5(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
>      statemap[j], (unsigned long long)j);
>   }
>   }
> Index: fsck_ext2fs/setup.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/setup.c,v
> retrieving revision 1.27
> diff -u -p -r1.27 setup.c
> --- fsck_ext2fs/setup.c 10 Sep 2015 15:21:40 -0000 1.27
> +++ fsck_ext2fs/setup.c 20 Sep 2015 00:00:39 -0000
> @@ -41,6 +41,7 @@
>  #include <sys/dkio.h>
>  #include <sys/disklabel.h>
>  
> +#include <err.h>
>  #include <errno.h>
>  #include <fcntl.h>
>  #include <stdio.h>
> @@ -104,7 +105,7 @@ setup(char *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)
> - errexit("cannot allocate space for superblock\n");
> + errx(FSCKFAIL, "cannot allocate space for superblock");
>   if ((lp = getdisklabel((char *)NULL, fsreadfd)) != NULL)
>   secsize = lp->d_secsize;
>   else
> @@ -183,7 +184,7 @@ setup(char *dev)
>  
>   sblock.e2fs_gd = calloc(sblock.e2fs_ngdb, sblock.e2fs_bsize);
>   if (sblock.e2fs_gd == NULL)
> - errexit("out of memory\n");
> + errx(FSCKFAIL, "out of memory");
>   asked = 0;
>   for (i=0; i < sblock.e2fs_ngdb; i++) {
>   if (bread(fsreadfd,(char *)
> @@ -192,7 +193,7 @@ setup(char *dev)
>   sblock.e2fs_bsize) != 0 && !asked) {
>   pfatal("BAD SUMMARY INFORMATION");
>   if (reply("CONTINUE") == 0)
> - errexit("%s\n", "");
> + exit(8);
>   asked++;
>   }
>   }
> @@ -479,7 +480,7 @@ getdisklabel(char *s, int fd)
>   if (s == NULL)
>   return ((struct disklabel *)NULL);
>   pwarn("ioctl (GCINFO): %s\n", strerror(errno));
> - errexit("%s: can't read disk label\n", s);
> + errx(FSCKFAIL, "%s: can't read disk label", s);
>   }
>   return (&lab);
>  }
> Index: fsck_ext2fs/utilities.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ext2fs/utilities.c,v
> retrieving revision 1.26
> diff -u -p -r1.26 utilities.c
> --- fsck_ext2fs/utilities.c 5 Sep 2015 20:07:11 -0000 1.26
> +++ fsck_ext2fs/utilities.c 20 Sep 2015 00:00:39 -0000
> @@ -44,6 +44,7 @@
>  #include <ctype.h>
>  #include <unistd.h>
>  #include <errno.h>
> +#include <err.h>
>  
>  #include "fsutil.h"
>  #include "fsck.h"
> @@ -134,7 +135,7 @@ bufinit(void)
>   free(bufp);
>   if (i >= MINBUFS)
>   break;
> - errexit("cannot allocate buffer pool\n");
> + errx(FSCKFAIL, "cannot allocate buffer pool");
>   }
>   bp->b_un.b_buf = bufp;
>   bp->b_prev = &bufhead;
> @@ -161,7 +162,7 @@ getdatablk(daddr32_t blkno, long size)
>   if ((bp->b_flags & B_INUSE) == 0)
>   break;
>   if (bp == &bufhead)
> - errexit("deadlocked buffer pool\n");
> + errx(FSCKFAIL, "deadlocked buffer pool");
>   getblk(bp, blkno, size);
>   diskreads++;
>   /* fall through */
> @@ -224,7 +225,7 @@ rwerror(char *mesg, daddr32_t blk)
>   printf("\n");
>   pfatal("CANNOT %s: BLK %d", mesg, blk);
>   if (reply("CONTINUE") == 0)
> - errexit("Program terminated\n");
> + errx(FSCKFAIL, "Program terminated");
>  }
>  
>  void
> @@ -255,7 +256,7 @@ ckfini(int markclean)
>   free((char *)bp);
>   }
>   if (bufhead.b_size != cnt)
> - errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
> + errx(FSCKFAIL, "Panic: lost %d buffers", bufhead.b_size - cnt);
>   pbp = pdirbp = (struct bufarea *)0;
>   if (markclean && (sblock.e2fs.e2fs_state & E2FS_ISCLEAN) == 0) {
>   /*
> @@ -505,7 +506,7 @@ dofix(struct inodesc *idesc, char *msg)
>   return (0);
>  
>   default:
> - errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
> + errx(FSCKFAIL, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
>   }
>   /* NOTREACHED */
>  }
> Index: fsck_ffs/dir.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/dir.c,v
> retrieving revision 1.32
> diff -u -p -r1.32 dir.c
> --- fsck_ffs/dir.c 20 Jan 2015 18:22:21 -0000 1.32
> +++ fsck_ffs/dir.c 20 Sep 2015 00:00:39 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -103,7 +104,7 @@ dirscan(struct inodesc *idesc)
>   char dbuf[DIRBLKSIZ];
>  
>   if (idesc->id_type != DATA)
> - errexit("wrong type to dirscan %d\n", idesc->id_type);
> + errx(FSCKFAIL, "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);
> Index: fsck_ffs/inode.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/inode.c,v
> retrieving revision 1.46
> diff -u -p -r1.46 inode.c
> --- fsck_ffs/inode.c 20 Jan 2015 18:22:21 -0000 1.46
> +++ fsck_ffs/inode.c 20 Sep 2015 00:00:39 -0000
> @@ -38,6 +38,7 @@
>  #ifndef SMALL
>  #include <pwd.h>
>  #endif
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -285,7 +286,7 @@ ginode(ino_t inumber)
>   daddr_t iblk;
>  
>   if (inumber < ROOTINO || inumber > maxino)
> - errexit("bad inode number %llu to ginode\n",
> + errx(FSCKFAIL, "bad inode number %llu to ginode",
>      (unsigned long long)inumber);
>   if (startinum == 0 ||
>      inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
> @@ -318,7 +319,7 @@ getnextinode(ino_t inumber)
>   static caddr_t nextinop;
>  
>   if (inumber != nextino++ || inumber > maxino)
> - errexit("bad inode number %llu to nextinode %llu\n",
> + errx(FSCKFAIL, "bad inode number %llu to nextinode %llu",
>      (unsigned long long)inumber,
>      (unsigned long long)nextino);
>   if (inumber >= lastinum) {
> @@ -371,15 +372,13 @@ setinodebuf(ino_t inum)
>   }
>   if (inodebuf == NULL &&
>      (inodebuf = malloc((unsigned)inobufsize)) == NULL)
> - errexit("Cannot allocate space for inode buffer\n");
> + errx(FSCKFAIL, "Cannot allocate space for inode buffer");
>  }
>  
>  void
>  freeinodebuf(void)
>  {
> -
> - if (inodebuf != NULL)
> - free(inodebuf);
> + free(inodebuf);
>   inodebuf = NULL;
>  }
>  
> @@ -404,7 +403,7 @@ cacheino(union dinode *dp, ino_t inumber
>   blks = NDADDR + NIADDR;
>   inp = malloc(sizeof(*inp) + (blks ? blks - 1 : 0) * sizeof(daddr_t));
>   if (inp == NULL)
> - errexit("cannot allocate memory for inode cache\n");
> + errx(FSCKFAIL, "cannot allocate memory for inode cache");
>   inpp = &inphead[inumber % numdirs];
>   inp->i_nexthash = *inpp;
>   *inpp = inp;
> @@ -427,7 +426,7 @@ cacheino(union dinode *dp, ino_t inumber
>   newinpsort = reallocarray(inpsort,
>      (unsigned)newlistmax, sizeof(struct inoinfo *));
>   if (newinpsort == NULL)
> - errexit("cannot increase directory list");
> + errx(FSCKFAIL, "cannot increase directory list");
>   inpsort = newinpsort;
>   listmax = newlistmax;
>   }
> @@ -447,7 +446,7 @@ getinoinfo(ino_t inumber)
>   continue;
>   return (inp);
>   }
> - errexit("cannot find inode %llu\n", (unsigned long long)inumber);
> + errx(FSCKFAIL, "cannot find inode %llu", (unsigned long long)inumber);
>   return (NULL);
>  }
>  
> @@ -571,7 +570,7 @@ blkerror(ino_t ino, char *type, daddr_t
>   return;
>  
>   default:
> - errexit("BAD STATE %d TO BLKERR\n", GET_ISTATE(ino));
> + errx(FSCKFAIL, "BAD STATE %d TO BLKERR", GET_ISTATE(ino));
>   /* NOTREACHED */
>   }
>  }
> Index: fsck_ffs/main.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/main.c,v
> retrieving revision 1.44
> diff -u -p -r1.44 main.c
> --- fsck_ffs/main.c 7 Feb 2015 02:09:13 -0000 1.44
> +++ fsck_ffs/main.c 20 Sep 2015 00:00:39 -0000
> @@ -38,6 +38,7 @@
>  #include <stdlib.h>
>  #include <string.h>
>  #include <ctype.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <unistd.h>
>  
> @@ -77,8 +78,7 @@ main(int argc, char *argv[])
>   skipclean = 0;
>   cvtlevel = argtoi('c', "conversion level", optarg, 10);
>   if (cvtlevel < 3)
> - errexit("cannot do level %d conversion\n",
> -    cvtlevel);
> + errx(FSCKFAIL, "cannot do level %d conversion", cvtlevel);
>   break;
>  
>   case 'd':
> @@ -92,7 +92,7 @@ main(int argc, char *argv[])
>   case 'm':
>   lfmode = argtoi('m', "mode", optarg, 8);
>   if (lfmode &~ 07777)
> - errexit("bad mode to -m: %o\n", lfmode);
> + errx(FSCKFAIL, "bad mode to -m: %o", lfmode);
>   printf("** lost+found creation mode %o\n", lfmode);
>   break;
>  
> @@ -109,8 +109,8 @@ main(int argc, char *argv[])
>   break;
>  
>   default:
> - errexit("usage: %s [-fnpy] [-b block#] [-c level] "
> -    "[-m mode] filesystem ...\n", __progname);
> + errx(FSCKFAIL, "usage: %s [-fnpy] [-b block#] [-c level] "
> +    "[-m mode] filesystem ...", __progname);
>   }
>   }
>   argc -= optind;
> @@ -139,7 +139,7 @@ argtoi(int flag, char *req, char *str, i
>  
>   ret = (int)strtol(str, &cp, base);
>   if (cp == str || *cp)
> - errexit("-%c flag requires a %s\n", flag, req);
> + errx(FSCKFAIL, "-%c flag requires a %s", flag, req);
>   return (ret);
>  }
>  
> Index: fsck_ffs/pass1.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass1.c,v
> retrieving revision 1.43
> diff -u -p -r1.43 pass1.c
> --- fsck_ffs/pass1.c 22 Aug 2015 06:00:27 -0000 1.43
> +++ fsck_ffs/pass1.c 20 Sep 2015 00:00:39 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -140,7 +141,7 @@ pass1(void)
>   info = calloc((unsigned)inosused, sizeof(struct inostat));
>   inospace = (unsigned)inosused * sizeof(struct inostat);
>   if (info == NULL)
> - errexit("cannot alloc %zu bytes for inoinfo", inospace);
> + errx(FSCKFAIL, "cannot alloc %zu bytes for inoinfo", inospace);
>   inostathead[c].il_stat = info;
>   /*
>   * Scan the allocated inodes.
> @@ -302,7 +303,7 @@ checkinode(ino_t inumber, struct inodesc
>   pfatal("LINK COUNT TABLE OVERFLOW");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   } else {
>   zlnp->zlncnt = inumber;
> @@ -365,7 +366,7 @@ pass1check(struct inodesc *idesc)
>   printf(" (SKIPPING)\n");
>   else if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> @@ -385,7 +386,7 @@ pass1check(struct inodesc *idesc)
>   printf(" (SKIPPING)\n");
>   else if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> @@ -394,7 +395,7 @@ pass1check(struct inodesc *idesc)
>   pfatal("DUP TABLE OVERFLOW.");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   return (STOP);
>   }
> Index: fsck_ffs/pass2.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass2.c,v
> retrieving revision 1.37
> diff -u -p -r1.37 pass2.c
> --- fsck_ffs/pass2.c 20 Jan 2015 18:22:21 -0000 1.37
> +++ fsck_ffs/pass2.c 20 Sep 2015 00:00:39 -0000
> @@ -36,6 +36,7 @@
>  #include <ufs/ufs/dir.h>
>  #include <ufs/ffs/fs.h>
>  
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -86,10 +87,10 @@ pass2(void)
>   pfatal("ROOT INODE UNALLOCATED");
>   if (reply("ALLOCATE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
>   break;
>  
>   case DCLEAR:
> @@ -97,12 +98,12 @@ pass2(void)
>   if (reply("REALLOCATE")) {
>   freeino(ROOTINO);
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
>   break;
>   }
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   break;
>  
> @@ -112,12 +113,12 @@ pass2(void)
>   if (reply("REALLOCATE")) {
>   freeino(ROOTINO);
>   if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
> - errexit("CANNOT ALLOCATE ROOT INODE\n");
> + errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
>   break;
>   }
>   if (reply("FIX") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   dp = ginode(ROOTINO);
>   DIP_SET(dp, di_mode, DIP(dp, di_mode) & ~IFMT);
> @@ -129,7 +130,7 @@ pass2(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR ROOT INODE\n", GET_ISTATE(ROOTINO));
> + errx(FSCKFAIL, "BAD STATE %d FOR ROOT INODE", GET_ISTATE(ROOTINO));
>   }
>   SET_ISTATE(ROOTINO, DFOUND);
>   /*
> @@ -453,7 +454,7 @@ again:
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(dirp->d_ino),
>      (unsigned long long)dirp->d_ino);
>   }
> Index: fsck_ffs/pass4.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass4.c,v
> retrieving revision 1.24
> diff -u -p -r1.24 pass4.c
> --- fsck_ffs/pass4.c 20 Jan 2015 18:22:21 -0000 1.24
> +++ fsck_ffs/pass4.c 20 Sep 2015 00:00:39 -0000
> @@ -34,6 +34,7 @@
>  #include <sys/time.h>
>  #include <ufs/ufs/dinode.h>
>  #include <ufs/ffs/fs.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -110,7 +111,7 @@ pass4(void)
>   break;
>  
>   default:
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(inumber),
>      (unsigned long long)inumber);
>   }
> Index: fsck_ffs/pass5.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/pass5.c,v
> retrieving revision 1.48
> diff -u -p -r1.48 pass5.c
> --- fsck_ffs/pass5.c 20 Jan 2015 18:22:21 -0000 1.48
> +++ fsck_ffs/pass5.c 20 Sep 2015 00:00:39 -0000
> @@ -38,6 +38,7 @@
>  #include <ufs/ufs/quota.h>
>  #include <ufs/ufs/inode.h>
>  #include <ufs/ffs/ffs_extern.h>
> +#include <err.h>
>  #include <stdio.h>
>  #include <string.h>
>  #include <limits.h>
> @@ -162,7 +163,7 @@ pass5(void)
>  
>   default:
>   inomapsize = blkmapsize = sumsize = 0;
> - errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n",
> + errx(FSCKFAIL, "UNKNOWN ROTATIONAL TABLE FORMAT %d",
>   fs->fs_postblformat);
>   }
>   memset(&idesc[0], 0, sizeof idesc);
> @@ -250,7 +251,7 @@ pass5(void)
>   default:
>   if (j < ROOTINO)
>   break;
> - errexit("BAD STATE %d FOR INODE I=%llu\n",
> + errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
>      GET_ISTATE(j), (unsigned long long)j);
>   }
>   }
> Index: fsck_ffs/setup.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/setup.c,v
> retrieving revision 1.57
> diff -u -p -r1.57 setup.c
> --- fsck_ffs/setup.c 20 Jan 2015 18:22:21 -0000 1.57
> +++ fsck_ffs/setup.c 20 Sep 2015 00:00:40 -0000
> @@ -40,6 +40,7 @@
>  #include <sys/dkio.h>
>  #include <sys/disklabel.h>
>  
> +#include <err.h>
>  #include <errno.h>
>  #include <fcntl.h>
>  #include <stdio.h>
> @@ -133,7 +134,7 @@ setup(char *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)
> - errexit("cannot allocate space for superblock\n");
> + errx(FSCKFAIL, "cannot allocate space for superblock");
>   if ((lp = getdisklabel(NULL, fsreadfd)) != NULL)
>   secsize = lp->d_secsize;
>   else
> @@ -377,7 +378,7 @@ found:
>   pfatal("BAD SUMMARY INFORMATION");
>   if (reply("CONTINUE") == 0) {
>   ckfini(0);
> - errexit("%s", "");
> + exit(8);
>   }
>   asked++;
>   }
> @@ -652,7 +653,7 @@ getdisklabel(char *s, int fd)
>   if (s == NULL)
>   return (NULL);
>   pwarn("ioctl (GCINFO): %s\n", strerror(errno));
> - errexit("%s: can't read disk label\n", s);
> + errx(FSCKFAIL, "%s: can't read disk label", s);
>   }
>   return (&lab);
>  }
> Index: fsck_ffs/utilities.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_ffs/utilities.c,v
> retrieving revision 1.50
> diff -u -p -r1.50 utilities.c
> --- fsck_ffs/utilities.c 5 Sep 2015 20:07:11 -0000 1.50
> +++ fsck_ffs/utilities.c 20 Sep 2015 00:00:40 -0000
> @@ -43,6 +43,7 @@
>  #include <ctype.h>
>  #include <unistd.h>
>  #include <limits.h>
> +#include <err.h>
>  #include <errno.h>
>  #include <fcntl.h>
>  #include <paths.h>
> @@ -126,7 +127,7 @@ inoinfo(ino_t inum)
>   int iloff;
>  
>   if (inum > maxino)
> - errexit("inoinfo: inumber %llu out of range",
> + errx(FSCKFAIL, "inoinfo: inumber %llu out of range",
>      (unsigned long long)inum);
>   ilp = &inostathead[inum / sblock.fs_ipg];
>   iloff = inum % sblock.fs_ipg;
> @@ -148,7 +149,7 @@ bufinit(void)
>   pbp = pdirbp = NULL;
>   bufp = malloc((unsigned int)sblock.fs_bsize);
>   if (bufp == 0)
> - errexit("cannot allocate buffer pool\n");
> + errx(FSCKFAIL, "cannot allocate buffer pool");
>   cgblk.b_un.b_buf = bufp;
>   initbarea(&cgblk);
>   bufhead.b_next = bufhead.b_prev = &bufhead;
> @@ -163,7 +164,7 @@ bufinit(void)
>   free(bufp);
>   if (i >= MINBUFS)
>   break;
> - errexit("cannot allocate buffer pool\n");
> + errx(FSCKFAIL, "cannot allocate buffer pool");
>   }
>   bp->b_un.b_buf = bufp;
>   bp->b_prev = &bufhead;
> @@ -190,7 +191,7 @@ getdatablk(daddr_t blkno, long size)
>   if ((bp->b_flags & B_INUSE) == 0)
>   break;
>   if (bp == &bufhead)
> - errexit("deadlocked buffer pool\n");
> + errx(FSCKFAIL, "deadlocked buffer pool");
>   getblk(bp, blkno, size);
>   /* FALLTHROUGH */
>  foundit:
> @@ -252,7 +253,7 @@ rwerror(char *mesg, daddr_t blk)
>   printf("\n");
>   pfatal("CANNOT %s: BLK %lld", mesg, (long long)blk);
>   if (reply("CONTINUE") == 0)
> - errexit("Program terminated\n");
> + errx(FSCKFAIL, "Program terminated");
>  }
>  
>  void
> @@ -304,7 +305,7 @@ ckfini(int markclean)
>   free(bp);
>   }
>   if (bufhead.b_size != cnt)
> - errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
> + errx(FSCKFAIL, "Panic: lost %d buffers", bufhead.b_size - cnt);
>   pbp = pdirbp = NULL;
>   if (markclean && (sblock.fs_clean & FS_ISCLEAN) == 0) {
>   /*
> @@ -581,7 +582,7 @@ dofix(struct inodesc *idesc, char *msg)
>   return (0);
>  
>   default:
> - errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
> + errx(FSCKFAIL, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
>   }
>   /* NOTREACHED */
>  }
> Index: fsck_msdos/main.c
> ===================================================================
> RCS file: /cvs/src/sbin/fsck_msdos/main.c,v
> retrieving revision 1.19
> diff -u -p -r1.19 main.c
> --- fsck_msdos/main.c 16 Jun 2014 18:33:33 -0000 1.19
> +++ fsck_msdos/main.c 20 Sep 2015 00:00:40 -0000
> @@ -32,6 +32,7 @@
>  #include <ctype.h>
>  #include <stdio.h>
>  #include <unistd.h>
> +#include <err.h>
>  #include <errno.h>
>  #include <stdarg.h>
>  
> @@ -48,7 +49,7 @@ int main(int, char **);
>  static void
>  usage(void)
>  {
> - errexit("usage: fsck_msdos [-fnpy] filesystem ...\n");
> + errx(FSCKFAIL, "usage: fsck_msdos [-fnpy] filesystem ...");
>  }
>  
>  int

Reply | Threaded
Open this post in threaded view
|

Re: Remove errx() clone from fsck_*

Michael McConville-2
Bob Beck wrote:
> Alas, you are changing the behaviour in many places now.
>
> for example you are calling exit(8) where previously the errexit code
> would print a newline then exit (making the previous interactive
> response not look stupid).

Good point. Oversight on my part.

> You are also, of course, spitting out "fcsk:" in front of the error
> messages you are printing out, although this is less of a problem imo.

Right. I thought this had been acknowledged. Seems to me like an
improvement if anything - I can't think of any possible unintended
effects.

> You are also using "errx" a lot of places where you have just come
> back from a system call and have a legitimate errno.. You should use
> err() in these places instead and change the error message
> appropriately to allow for the strerror being printed.

Also true. I figured I'd change the behavior less to start and drop the
'x's afterward if people were interested.

Let me know if you want to take this off-list. I don't want to bother
people who are less interested.

And thanks for the help and patience.  :-)  New patch below.


Index: fsck/fsutil.c
===================================================================
RCS file: /cvs/src/sbin/fsck/fsutil.c,v
retrieving revision 1.21
diff -u -p -r1.21 fsutil.c
--- fsck/fsutil.c 29 May 2015 15:57:36 -0000 1.21
+++ fsck/fsutil.c 20 Sep 2015 03:35:44 -0000
@@ -73,18 +73,6 @@ hotroot(void)
  return hot;
 }
 
-/*VARARGS*/
-void
-errexit(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- (void) vfprintf(stderr, fmt, ap);
- va_end(ap);
- exit(8);
-}
-
 static void
 vmsg(int fatal, const char *fmt, va_list ap)
 {
Index: fsck/fsutil.h
===================================================================
RCS file: /cvs/src/sbin/fsck/fsutil.h,v
retrieving revision 1.7
diff -u -p -r1.7 fsutil.h
--- fsck/fsutil.h 8 Oct 2014 16:27:53 -0000 1.7
+++ fsck/fsutil.h 20 Sep 2015 03:35:44 -0000
@@ -31,8 +31,6 @@
  */
 
 void xperror(const char *);
-void errexit(const char *, ...)
-    __attribute__((__noreturn__,__format__(__printf__,1,2)));
 void pfatal(const char *, ...)
     __attribute__((__format__(__printf__,1,2)));
 void pwarn(const char *, ...)
@@ -48,6 +46,8 @@ int  hotroot(void);
 void *emalloc(size_t);
 void *ereallocarray(void *, size_t, size_t);
 char *estrdup(const char *);
+
+#define FSCKFAIL 8
 
 #define CHECK_PREEN 1
 #define CHECK_VERBOSE 2
Index: fsck_ext2fs/dir.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/dir.c,v
retrieving revision 1.20
diff -u -p -r1.20 dir.c
--- fsck_ext2fs/dir.c 16 Jan 2015 06:39:57 -0000 1.20
+++ fsck_ext2fs/dir.c 20 Sep 2015 03:35:44 -0000
@@ -40,6 +40,7 @@
 
 #include <ufs/ufs/dinode.h> /* for IFMT & friends */
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -114,13 +115,11 @@ dirscan(struct inodesc *idesc)
  long blksiz;
  char *dbuf = NULL;
 
- if ((dbuf = malloc(sblock.e2fs_bsize)) == NULL) {
- fprintf(stderr, "out of memory");
- exit(8);
- }
+ if ((dbuf = malloc(sblock.e2fs_bsize)) == NULL)
+ errx(FSCKFAIL, "out of memory");
 
  if (idesc->id_type != DATA)
- errexit("wrong type to dirscan %d\n", idesc->id_type);
+ errx(FSCKFAIL, "wrong type to dirscan %d", idesc->id_type);
  if (idesc->id_entryno == 0 &&
     (idesc->id_filesize & (sblock.e2fs_bsize - 1)) != 0)
  idesc->id_filesize = roundup(idesc->id_filesize, sblock.e2fs_bsize);
@@ -532,10 +531,8 @@ expanddir(struct ext2fs_dinode *dp, char
  sblock.e2fs_bsize);
  if (bp->b_errs)
  goto bad;
- if ((firstblk = malloc(sblock.e2fs_bsize)) == NULL) {
- fprintf(stderr, "out of memory\n");
- exit(8);
- }
+ if ((firstblk = malloc(sblock.e2fs_bsize)) == NULL)
+ errx(FSCKFAIL, "out of memory");
  memcpy(firstblk, bp->b_un.b_buf, sblock.e2fs_bsize);
  bp = getdirblk(newblk, sblock.e2fs_bsize);
  if (bp->b_errs) {
Index: fsck_ext2fs/inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/inode.c,v
retrieving revision 1.25
diff -u -p -r1.25 inode.c
--- fsck_ext2fs/inode.c 16 Jan 2015 06:39:57 -0000 1.25
+++ fsck_ext2fs/inode.c 20 Sep 2015 03:35:44 -0000
@@ -46,6 +46,7 @@
 #include <string.h>
 #include <time.h>
 #include <limits.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "fsutil.h"
@@ -332,7 +333,7 @@ ginode(ino_t inumber)
 
  if ((inumber < EXT2_FIRSTINO && inumber != EXT2_ROOTINO)
  || inumber > maxino)
- errexit("bad inode number %llu to ginode\n",
+ errx(FSCKFAIL, "bad inode number %llu to ginode",
     (unsigned long long)inumber);
  if (startinum == 0 ||
     inumber < startinum || inumber >= startinum + sblock.e2fs_ipb) {
@@ -361,7 +362,7 @@ getnextinode(ino_t inumber)
  static struct ext2fs_dinode *dp;
 
  if (inumber != nextino++ || inumber > maxino)
- errexit("bad inode number %llu to nextinode\n",
+ errx(FSCKFAIL, "bad inode number %llu to nextinode",
     (unsigned long long)inumber);
  if (inumber >= lastinum) {
  readcnt++;
@@ -400,7 +401,7 @@ resetinodebuf(void)
  }
  if (inodebuf == NULL &&
     (inodebuf = malloc((unsigned)inobufsize)) == NULL)
- errexit("Cannot allocate space for inode buffer\n");
+ errx(FSCKFAIL, "Cannot allocate space for inode buffer");
  while (nextino < EXT2_ROOTINO)
  (void)getnextinode(nextino);
 }
@@ -452,7 +453,7 @@ cacheino(struct ext2fs_dinode *dp, ino_t
  inpsort = reallocarray(inpsort, listmax,
     sizeof(struct inoinfo *));
  if (inpsort == NULL)
- errexit("cannot increase directory list\n");
+ errx(FSCKFAIL, "cannot increase directory list");
  }
  inpsort[inplast++] = inp;
 }
@@ -470,7 +471,7 @@ getinoinfo(ino_t inumber)
  continue;
  return (inp);
  }
- errexit("cannot find inode %llu\n", (unsigned long long)inumber);
+ errx(FSCKFAIL, "cannot find inode %llu", (unsigned long long)inumber);
  return (NULL);
 }
 
@@ -601,7 +602,7 @@ blkerror(ino_t ino, char *type, daddr32_
  return;
 
  default:
- errexit("BAD STATE %d TO BLKERR\n", statemap[ino]);
+ errx(FSCKFAIL, "BAD STATE %d TO BLKERR", statemap[ino]);
  /* NOTREACHED */
  }
 }
Index: fsck_ext2fs/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/main.c,v
retrieving revision 1.22
diff -u -p -r1.22 main.c
--- fsck_ext2fs/main.c 7 Feb 2015 02:09:13 -0000 1.22
+++ fsck_ext2fs/main.c 20 Sep 2015 03:35:45 -0000
@@ -44,6 +44,7 @@
 #include <stdio.h>
 #include <time.h>
 #include <unistd.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "extern.h"
@@ -85,7 +86,7 @@ main(int argc, char *argv[])
  case 'm':
  lfmode = argtoi('m', "mode", optarg, 8);
  if (lfmode &~ 07777)
- errexit("bad mode to -m: %o\n", lfmode);
+ errx(FSCKFAIL, "bad mode to -m: %o", lfmode);
  printf("** lost+found creation mode %o\n", lfmode);
  break;
 
@@ -136,7 +137,7 @@ argtoi(int flag, char *req, char *str, i
 
  ret = (int)strtol(str, &cp, base);
  if (cp == str || *cp)
- errexit("-%c flag requires a %s\n", flag, req);
+ errx(FSCKFAIL, "-%c flag requires a %s", flag, req);
  return (ret);
 }
 
Index: fsck_ext2fs/pass1.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass1.c,v
retrieving revision 1.16
diff -u -p -r1.16 pass1.c
--- fsck_ext2fs/pass1.c 20 Aug 2015 22:02:20 -0000 1.16
+++ fsck_ext2fs/pass1.c 20 Sep 2015 03:35:45 -0000
@@ -43,6 +43,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "extern.h"
@@ -243,7 +244,7 @@ checkinode(ino_t inumber, struct inodesc
  if (zlnp == NULL) {
  pfatal("LINK COUNT TABLE OVERFLOW");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ errx(FSCKFAIL, "");
  } else {
  zlnp->zlncnt = inumber;
  zlnp->next = zlnhead;
@@ -305,7 +306,7 @@ pass1check(struct inodesc *idesc)
  if (preen)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ errx(FSCKFAIL, "");
  return (STOP);
  }
  }
@@ -323,14 +324,14 @@ pass1check(struct inodesc *idesc)
  if (preen)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ errx(FSCKFAIL, "");
  return (STOP);
  }
  new = malloc(sizeof(struct dups));
  if (new == NULL) {
  pfatal("DUP TABLE OVERFLOW.");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ errx(FSCKFAIL, "");
  return (STOP);
  }
  new->dup = blkno;
Index: fsck_ext2fs/pass2.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass2.c,v
retrieving revision 1.14
diff -u -p -r1.14 pass2.c
--- fsck_ext2fs/pass2.c 16 Jan 2015 06:39:57 -0000 1.14
+++ fsck_ext2fs/pass2.c 20 Sep 2015 03:35:45 -0000
@@ -43,6 +43,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <limits.h>
+#include <err.h>
 
 #include "fsck.h"
 #include "fsutil.h"
@@ -68,9 +69,9 @@ pass2(void)
  case USTATE:
  pfatal("ROOT INODE UNALLOCATED");
  if (reply("ALLOCATE") == 0)
- errexit("%s\n", "");
+ errx(FSCKFAIL, "");
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
 
  case DCLEAR:
@@ -78,11 +79,11 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(EXT2_ROOTINO);
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ errx(FSCKFAIL, "");
  break;
 
  case FSTATE:
@@ -91,11 +92,11 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(EXT2_ROOTINO);
  if (allocdir(EXT2_ROOTINO, EXT2_ROOTINO, 0755) != EXT2_ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("FIX") == 0)
- errexit("%s\n", "");
+ errx(FSCKFAIL, "");
  dp = ginode(EXT2_ROOTINO);
  dp->e2di_mode = htole16((letoh16(dp->e2di_mode) & ~IFMT) | IFDIR);
  inodirty();
@@ -105,7 +106,7 @@ pass2(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR ROOT INODE\n", statemap[EXT2_ROOTINO]);
+ errx(FSCKFAIL, "BAD STATE %d FOR ROOT INODE", statemap[EXT2_ROOTINO]);
  }
 
  /*
@@ -417,7 +418,7 @@ again:
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     statemap[letoh32(dirp->e2d_ino)],
     (unsigned long long)letoh32(dirp->e2d_ino));
  }
Index: fsck_ext2fs/pass4.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass4.c,v
retrieving revision 1.10
diff -u -p -r1.10 pass4.c
--- fsck_ext2fs/pass4.c 16 Jan 2015 06:39:57 -0000 1.10
+++ fsck_ext2fs/pass4.c 20 Sep 2015 03:35:45 -0000
@@ -37,6 +37,7 @@
 #include <ufs/ext2fs/ext2fs.h>
 #include <stdlib.h>
 #include <string.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -97,7 +98,7 @@ pass4(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     statemap[inumber], (unsigned long long)inumber);
  }
  }
Index: fsck_ext2fs/pass5.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/pass5.c,v
retrieving revision 1.18
diff -u -p -r1.18 pass5.c
--- fsck_ext2fs/pass5.c 16 Jan 2015 06:39:57 -0000 1.18
+++ fsck_ext2fs/pass5.c 20 Sep 2015 03:35:45 -0000
@@ -39,6 +39,7 @@
 #include <string.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -68,7 +69,7 @@ pass5(void)
  ibmap = malloc(fs->e2fs_bsize);
  bbmap = malloc(fs->e2fs_bsize);
  if (ibmap == NULL || bbmap == NULL) {
- errexit("out of memory\n");
+ errx(FSCKFAIL, "out of memory");
  }
 
  for (c = 0; c < fs->e2fs_ncg; c++) {
@@ -131,7 +132,7 @@ pass5(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     statemap[j], (unsigned long long)j);
  }
  }
Index: fsck_ext2fs/setup.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/setup.c,v
retrieving revision 1.27
diff -u -p -r1.27 setup.c
--- fsck_ext2fs/setup.c 10 Sep 2015 15:21:40 -0000 1.27
+++ fsck_ext2fs/setup.c 20 Sep 2015 03:35:45 -0000
@@ -41,6 +41,7 @@
 #include <sys/dkio.h>
 #include <sys/disklabel.h>
 
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -104,7 +105,7 @@ setup(char *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)
- errexit("cannot allocate space for superblock\n");
+ errx(FSCKFAIL, "cannot allocate space for superblock");
  if ((lp = getdisklabel((char *)NULL, fsreadfd)) != NULL)
  secsize = lp->d_secsize;
  else
@@ -183,7 +184,7 @@ setup(char *dev)
 
  sblock.e2fs_gd = calloc(sblock.e2fs_ngdb, sblock.e2fs_bsize);
  if (sblock.e2fs_gd == NULL)
- errexit("out of memory\n");
+ errx(FSCKFAIL, "out of memory");
  asked = 0;
  for (i=0; i < sblock.e2fs_ngdb; i++) {
  if (bread(fsreadfd,(char *)
@@ -192,7 +193,7 @@ setup(char *dev)
  sblock.e2fs_bsize) != 0 && !asked) {
  pfatal("BAD SUMMARY INFORMATION");
  if (reply("CONTINUE") == 0)
- errexit("%s\n", "");
+ errx(FSCKFAIL, "");
  asked++;
  }
  }
@@ -479,7 +480,7 @@ getdisklabel(char *s, int fd)
  if (s == NULL)
  return ((struct disklabel *)NULL);
  pwarn("ioctl (GCINFO): %s\n", strerror(errno));
- errexit("%s: can't read disk label\n", s);
+ errx(FSCKFAIL, "%s: can't read disk label", s);
  }
  return (&lab);
 }
Index: fsck_ext2fs/utilities.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ext2fs/utilities.c,v
retrieving revision 1.26
diff -u -p -r1.26 utilities.c
--- fsck_ext2fs/utilities.c 5 Sep 2015 20:07:11 -0000 1.26
+++ fsck_ext2fs/utilities.c 20 Sep 2015 03:35:45 -0000
@@ -44,6 +44,7 @@
 #include <ctype.h>
 #include <unistd.h>
 #include <errno.h>
+#include <err.h>
 
 #include "fsutil.h"
 #include "fsck.h"
@@ -134,7 +135,7 @@ bufinit(void)
  free(bufp);
  if (i >= MINBUFS)
  break;
- errexit("cannot allocate buffer pool\n");
+ errx(FSCKFAIL, "cannot allocate buffer pool");
  }
  bp->b_un.b_buf = bufp;
  bp->b_prev = &bufhead;
@@ -161,7 +162,7 @@ getdatablk(daddr32_t blkno, long size)
  if ((bp->b_flags & B_INUSE) == 0)
  break;
  if (bp == &bufhead)
- errexit("deadlocked buffer pool\n");
+ errx(FSCKFAIL, "deadlocked buffer pool");
  getblk(bp, blkno, size);
  diskreads++;
  /* fall through */
@@ -224,7 +225,7 @@ rwerror(char *mesg, daddr32_t blk)
  printf("\n");
  pfatal("CANNOT %s: BLK %d", mesg, blk);
  if (reply("CONTINUE") == 0)
- errexit("Program terminated\n");
+ errx(FSCKFAIL, "Program terminated");
 }
 
 void
@@ -255,7 +256,7 @@ ckfini(int markclean)
  free((char *)bp);
  }
  if (bufhead.b_size != cnt)
- errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
+ errx(FSCKFAIL, "Panic: lost %d buffers", bufhead.b_size - cnt);
  pbp = pdirbp = (struct bufarea *)0;
  if (markclean && (sblock.e2fs.e2fs_state & E2FS_ISCLEAN) == 0) {
  /*
@@ -505,7 +506,7 @@ dofix(struct inodesc *idesc, char *msg)
  return (0);
 
  default:
- errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
+ errx(FSCKFAIL, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
  }
  /* NOTREACHED */
 }
Index: fsck_ffs/dir.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/dir.c,v
retrieving revision 1.32
diff -u -p -r1.32 dir.c
--- fsck_ffs/dir.c 20 Jan 2015 18:22:21 -0000 1.32
+++ fsck_ffs/dir.c 20 Sep 2015 03:35:45 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -103,7 +104,7 @@ dirscan(struct inodesc *idesc)
  char dbuf[DIRBLKSIZ];
 
  if (idesc->id_type != DATA)
- errexit("wrong type to dirscan %d\n", idesc->id_type);
+ errx(FSCKFAIL, "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);
Index: fsck_ffs/inode.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/inode.c,v
retrieving revision 1.46
diff -u -p -r1.46 inode.c
--- fsck_ffs/inode.c 20 Jan 2015 18:22:21 -0000 1.46
+++ fsck_ffs/inode.c 20 Sep 2015 03:35:45 -0000
@@ -38,6 +38,7 @@
 #ifndef SMALL
 #include <pwd.h>
 #endif
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -285,7 +286,7 @@ ginode(ino_t inumber)
  daddr_t iblk;
 
  if (inumber < ROOTINO || inumber > maxino)
- errexit("bad inode number %llu to ginode\n",
+ errx(FSCKFAIL, "bad inode number %llu to ginode",
     (unsigned long long)inumber);
  if (startinum == 0 ||
     inumber < startinum || inumber >= startinum + INOPB(&sblock)) {
@@ -318,7 +319,7 @@ getnextinode(ino_t inumber)
  static caddr_t nextinop;
 
  if (inumber != nextino++ || inumber > maxino)
- errexit("bad inode number %llu to nextinode %llu\n",
+ errx(FSCKFAIL, "bad inode number %llu to nextinode %llu",
     (unsigned long long)inumber,
     (unsigned long long)nextino);
  if (inumber >= lastinum) {
@@ -371,7 +372,7 @@ setinodebuf(ino_t inum)
  }
  if (inodebuf == NULL &&
     (inodebuf = malloc((unsigned)inobufsize)) == NULL)
- errexit("Cannot allocate space for inode buffer\n");
+ errx(FSCKFAIL, "Cannot allocate space for inode buffer");
 }
 
 void
@@ -404,7 +405,7 @@ cacheino(union dinode *dp, ino_t inumber
  blks = NDADDR + NIADDR;
  inp = malloc(sizeof(*inp) + (blks ? blks - 1 : 0) * sizeof(daddr_t));
  if (inp == NULL)
- errexit("cannot allocate memory for inode cache\n");
+ errx(FSCKFAIL, "cannot allocate memory for inode cache");
  inpp = &inphead[inumber % numdirs];
  inp->i_nexthash = *inpp;
  *inpp = inp;
@@ -427,7 +428,7 @@ cacheino(union dinode *dp, ino_t inumber
  newinpsort = reallocarray(inpsort,
     (unsigned)newlistmax, sizeof(struct inoinfo *));
  if (newinpsort == NULL)
- errexit("cannot increase directory list");
+ errx(FSCKFAIL, "cannot increase directory list");
  inpsort = newinpsort;
  listmax = newlistmax;
  }
@@ -447,7 +448,7 @@ getinoinfo(ino_t inumber)
  continue;
  return (inp);
  }
- errexit("cannot find inode %llu\n", (unsigned long long)inumber);
+ errx(FSCKFAIL, "cannot find inode %llu", (unsigned long long)inumber);
  return (NULL);
 }
 
@@ -571,7 +572,7 @@ blkerror(ino_t ino, char *type, daddr_t
  return;
 
  default:
- errexit("BAD STATE %d TO BLKERR\n", GET_ISTATE(ino));
+ errx(FSCKFAIL, "BAD STATE %d TO BLKERR", GET_ISTATE(ino));
  /* NOTREACHED */
  }
 }
Index: fsck_ffs/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/main.c,v
retrieving revision 1.44
diff -u -p -r1.44 main.c
--- fsck_ffs/main.c 7 Feb 2015 02:09:13 -0000 1.44
+++ fsck_ffs/main.c 20 Sep 2015 03:35:45 -0000
@@ -38,6 +38,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+#include <err.h>
 #include <stdio.h>
 #include <unistd.h>
 
@@ -77,8 +78,7 @@ main(int argc, char *argv[])
  skipclean = 0;
  cvtlevel = argtoi('c', "conversion level", optarg, 10);
  if (cvtlevel < 3)
- errexit("cannot do level %d conversion\n",
-    cvtlevel);
+ errx(FSCKFAIL, "cannot do level %d conversion", cvtlevel);
  break;
 
  case 'd':
@@ -92,7 +92,7 @@ main(int argc, char *argv[])
  case 'm':
  lfmode = argtoi('m', "mode", optarg, 8);
  if (lfmode &~ 07777)
- errexit("bad mode to -m: %o\n", lfmode);
+ errx(FSCKFAIL, "bad mode to -m: %o", lfmode);
  printf("** lost+found creation mode %o\n", lfmode);
  break;
 
@@ -109,8 +109,8 @@ main(int argc, char *argv[])
  break;
 
  default:
- errexit("usage: %s [-fnpy] [-b block#] [-c level] "
-    "[-m mode] filesystem ...\n", __progname);
+ errx(FSCKFAIL, "usage: %s [-fnpy] [-b block#] [-c level] "
+    "[-m mode] filesystem ...", __progname);
  }
  }
  argc -= optind;
@@ -139,7 +139,7 @@ argtoi(int flag, char *req, char *str, i
 
  ret = (int)strtol(str, &cp, base);
  if (cp == str || *cp)
- errexit("-%c flag requires a %s\n", flag, req);
+ errx(FSCKFAIL, "-%c flag requires a %s", flag, req);
  return (ret);
 }
 
Index: fsck_ffs/pass1.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass1.c,v
retrieving revision 1.43
diff -u -p -r1.43 pass1.c
--- fsck_ffs/pass1.c 22 Aug 2015 06:00:27 -0000 1.43
+++ fsck_ffs/pass1.c 20 Sep 2015 03:35:45 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -140,7 +141,7 @@ pass1(void)
  info = calloc((unsigned)inosused, sizeof(struct inostat));
  inospace = (unsigned)inosused * sizeof(struct inostat);
  if (info == NULL)
- errexit("cannot alloc %zu bytes for inoinfo", inospace);
+ errx(FSCKFAIL, "cannot alloc %zu bytes for inoinfo", inospace);
  inostathead[c].il_stat = info;
  /*
  * Scan the allocated inodes.
@@ -302,7 +303,7 @@ checkinode(ino_t inumber, struct inodesc
  pfatal("LINK COUNT TABLE OVERFLOW");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ errx(FSCKFAIL, "");
  }
  } else {
  zlnp->zlncnt = inumber;
@@ -365,7 +366,7 @@ pass1check(struct inodesc *idesc)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ errx(FSCKFAIL, "");
  }
  return (STOP);
  }
@@ -385,7 +386,7 @@ pass1check(struct inodesc *idesc)
  printf(" (SKIPPING)\n");
  else if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ errx(FSCKFAIL, "");
  }
  return (STOP);
  }
@@ -394,7 +395,7 @@ pass1check(struct inodesc *idesc)
  pfatal("DUP TABLE OVERFLOW.");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ errx(FSCKFAIL, "");
  }
  return (STOP);
  }
Index: fsck_ffs/pass2.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass2.c,v
retrieving revision 1.37
diff -u -p -r1.37 pass2.c
--- fsck_ffs/pass2.c 20 Jan 2015 18:22:21 -0000 1.37
+++ fsck_ffs/pass2.c 20 Sep 2015 03:35:45 -0000
@@ -36,6 +36,7 @@
 #include <ufs/ufs/dir.h>
 #include <ufs/ffs/fs.h>
 
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -86,10 +87,10 @@ pass2(void)
  pfatal("ROOT INODE UNALLOCATED");
  if (reply("ALLOCATE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ errx(FSCKFAIL, "");
  }
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
 
  case DCLEAR:
@@ -97,12 +98,12 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(ROOTINO);
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ errx(FSCKFAIL, "");
  }
  break;
 
@@ -112,12 +113,12 @@ pass2(void)
  if (reply("REALLOCATE")) {
  freeino(ROOTINO);
  if (allocdir(ROOTINO, ROOTINO, 0755) != ROOTINO)
- errexit("CANNOT ALLOCATE ROOT INODE\n");
+ errx(FSCKFAIL, "CANNOT ALLOCATE ROOT INODE");
  break;
  }
  if (reply("FIX") == 0) {
  ckfini(0);
- errexit("%s", "");
+ errx(FSCKFAIL, "");
  }
  dp = ginode(ROOTINO);
  DIP_SET(dp, di_mode, DIP(dp, di_mode) & ~IFMT);
@@ -129,7 +130,7 @@ pass2(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR ROOT INODE\n", GET_ISTATE(ROOTINO));
+ errx(FSCKFAIL, "BAD STATE %d FOR ROOT INODE", GET_ISTATE(ROOTINO));
  }
  SET_ISTATE(ROOTINO, DFOUND);
  /*
@@ -453,7 +454,7 @@ again:
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(dirp->d_ino),
     (unsigned long long)dirp->d_ino);
  }
Index: fsck_ffs/pass4.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass4.c,v
retrieving revision 1.24
diff -u -p -r1.24 pass4.c
--- fsck_ffs/pass4.c 20 Jan 2015 18:22:21 -0000 1.24
+++ fsck_ffs/pass4.c 20 Sep 2015 03:35:45 -0000
@@ -34,6 +34,7 @@
 #include <sys/time.h>
 #include <ufs/ufs/dinode.h>
 #include <ufs/ffs/fs.h>
+#include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -110,7 +111,7 @@ pass4(void)
  break;
 
  default:
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(inumber),
     (unsigned long long)inumber);
  }
Index: fsck_ffs/pass5.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/pass5.c,v
retrieving revision 1.48
diff -u -p -r1.48 pass5.c
--- fsck_ffs/pass5.c 20 Jan 2015 18:22:21 -0000 1.48
+++ fsck_ffs/pass5.c 20 Sep 2015 03:35:45 -0000
@@ -38,6 +38,7 @@
 #include <ufs/ufs/quota.h>
 #include <ufs/ufs/inode.h>
 #include <ufs/ffs/ffs_extern.h>
+#include <err.h>
 #include <stdio.h>
 #include <string.h>
 #include <limits.h>
@@ -162,7 +163,7 @@ pass5(void)
 
  default:
  inomapsize = blkmapsize = sumsize = 0;
- errexit("UNKNOWN ROTATIONAL TABLE FORMAT %d\n",
+ errx(FSCKFAIL, "UNKNOWN ROTATIONAL TABLE FORMAT %d",
  fs->fs_postblformat);
  }
  memset(&idesc[0], 0, sizeof idesc);
@@ -250,7 +251,7 @@ pass5(void)
  default:
  if (j < ROOTINO)
  break;
- errexit("BAD STATE %d FOR INODE I=%llu\n",
+ errx(FSCKFAIL, "BAD STATE %d FOR INODE I=%llu",
     GET_ISTATE(j), (unsigned long long)j);
  }
  }
Index: fsck_ffs/setup.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/setup.c,v
retrieving revision 1.57
diff -u -p -r1.57 setup.c
--- fsck_ffs/setup.c 20 Jan 2015 18:22:21 -0000 1.57
+++ fsck_ffs/setup.c 20 Sep 2015 03:35:46 -0000
@@ -40,6 +40,7 @@
 #include <sys/dkio.h>
 #include <sys/disklabel.h>
 
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -133,7 +134,7 @@ setup(char *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)
- errexit("cannot allocate space for superblock\n");
+ errx(FSCKFAIL, "cannot allocate space for superblock");
  if ((lp = getdisklabel(NULL, fsreadfd)) != NULL)
  secsize = lp->d_secsize;
  else
@@ -377,7 +378,7 @@ found:
  pfatal("BAD SUMMARY INFORMATION");
  if (reply("CONTINUE") == 0) {
  ckfini(0);
- errexit("%s", "");
+ errx(FSCKFAIL, "");
  }
  asked++;
  }
@@ -652,7 +653,7 @@ getdisklabel(char *s, int fd)
  if (s == NULL)
  return (NULL);
  pwarn("ioctl (GCINFO): %s\n", strerror(errno));
- errexit("%s: can't read disk label\n", s);
+ errx(FSCKFAIL, "%s: can't read disk label", s);
  }
  return (&lab);
 }
Index: fsck_ffs/utilities.c
===================================================================
RCS file: /cvs/src/sbin/fsck_ffs/utilities.c,v
retrieving revision 1.50
diff -u -p -r1.50 utilities.c
--- fsck_ffs/utilities.c 5 Sep 2015 20:07:11 -0000 1.50
+++ fsck_ffs/utilities.c 20 Sep 2015 03:35:46 -0000
@@ -43,6 +43,7 @@
 #include <ctype.h>
 #include <unistd.h>
 #include <limits.h>
+#include <err.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <paths.h>
@@ -126,7 +127,7 @@ inoinfo(ino_t inum)
  int iloff;
 
  if (inum > maxino)
- errexit("inoinfo: inumber %llu out of range",
+ errx(FSCKFAIL, "inoinfo: inumber %llu out of range",
     (unsigned long long)inum);
  ilp = &inostathead[inum / sblock.fs_ipg];
  iloff = inum % sblock.fs_ipg;
@@ -148,7 +149,7 @@ bufinit(void)
  pbp = pdirbp = NULL;
  bufp = malloc((unsigned int)sblock.fs_bsize);
  if (bufp == 0)
- errexit("cannot allocate buffer pool\n");
+ errx(FSCKFAIL, "cannot allocate buffer pool");
  cgblk.b_un.b_buf = bufp;
  initbarea(&cgblk);
  bufhead.b_next = bufhead.b_prev = &bufhead;
@@ -163,7 +164,7 @@ bufinit(void)
  free(bufp);
  if (i >= MINBUFS)
  break;
- errexit("cannot allocate buffer pool\n");
+ errx(FSCKFAIL, "cannot allocate buffer pool");
  }
  bp->b_un.b_buf = bufp;
  bp->b_prev = &bufhead;
@@ -190,7 +191,7 @@ getdatablk(daddr_t blkno, long size)
  if ((bp->b_flags & B_INUSE) == 0)
  break;
  if (bp == &bufhead)
- errexit("deadlocked buffer pool\n");
+ errx(FSCKFAIL, "deadlocked buffer pool");
  getblk(bp, blkno, size);
  /* FALLTHROUGH */
 foundit:
@@ -252,7 +253,7 @@ rwerror(char *mesg, daddr_t blk)
  printf("\n");
  pfatal("CANNOT %s: BLK %lld", mesg, (long long)blk);
  if (reply("CONTINUE") == 0)
- errexit("Program terminated\n");
+ errx(FSCKFAIL, "Program terminated");
 }
 
 void
@@ -304,7 +305,7 @@ ckfini(int markclean)
  free(bp);
  }
  if (bufhead.b_size != cnt)
- errexit("Panic: lost %d buffers\n", bufhead.b_size - cnt);
+ errx(FSCKFAIL, "Panic: lost %d buffers", bufhead.b_size - cnt);
  pbp = pdirbp = NULL;
  if (markclean && (sblock.fs_clean & FS_ISCLEAN) == 0) {
  /*
@@ -581,7 +582,7 @@ dofix(struct inodesc *idesc, char *msg)
  return (0);
 
  default:
- errexit("UNKNOWN INODESC FIX MODE %d\n", idesc->id_fix);
+ errx(FSCKFAIL, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix);
  }
  /* NOTREACHED */
 }
Index: fsck_msdos/main.c
===================================================================
RCS file: /cvs/src/sbin/fsck_msdos/main.c,v
retrieving revision 1.19
diff -u -p -r1.19 main.c
--- fsck_msdos/main.c 16 Jun 2014 18:33:33 -0000 1.19
+++ fsck_msdos/main.c 20 Sep 2015 03:35:46 -0000
@@ -32,6 +32,7 @@
 #include <ctype.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <err.h>
 #include <errno.h>
 #include <stdarg.h>
 
@@ -48,7 +49,7 @@ int main(int, char **);
 static void
 usage(void)
 {
- errexit("usage: fsck_msdos [-fnpy] filesystem ...\n");
+ errx(FSCKFAIL, "usage: fsck_msdos [-fnpy] filesystem ...");
 }
 
 int