On Sun, Oct 16, 2016 at 11:47:32AM +0200, Theo Buehler wrote:
> Many files already include <err.h> and there's a mix of hand-rolled
> warning messages and there's incorrect usage warn("config: ..."). This
> is a first sweep at unifying them.
> 
> In mkheaders.c, there is an err() function, rename it to emitwarn()
> since there are emit* functions already and it is non-fatal.

Here's a slightly improved version: I failed to remove a few newlines in
warning/error strings in main.c.

Index: main.c
===================================================================
RCS file: /cvs/src/usr.sbin/config/main.c,v
retrieving revision 1.55
diff -u -p -r1.55 main.c
--- main.c      16 Oct 2016 09:36:46 -0000      1.55
+++ main.c      16 Oct 2016 11:25:20 -0000
@@ -75,7 +75,7 @@ static void optiondelta(void);
 
 int    verbose;
 
-void
+__dead void
 usage(void)
 {
        extern char *__progname;
@@ -169,19 +169,15 @@ main(int argc, char *argv[])
 
        if (eflag) {
 #ifdef MAKE_BOOTSTRAP
-               fprintf(stderr, "config: UKC not available in this binary\n");
-               exit(1);
+               errx(1, "UKC not available in this binary");
 #else
                return (ukc(argv[0], outfile, uflag, fflag));
 #endif
        }
 
        conffile = (argc == 1) ? argv[0] : "CONFIG";
-       if (firstfile(conffile)) {
-               (void)fprintf(stderr, "config: cannot read %s: %s\n",
-                   conffile, strerror(errno));
-               exit(2);
-       }
+       if (firstfile(conffile))
+               err(2, "cannot read %s", conffile);
 
        /*
         * Init variables.
@@ -246,8 +242,7 @@ main(int argc, char *argv[])
                            defmaxusers);
                        maxusers = defmaxusers;
                } else {
-                       (void)fprintf(stderr,
-                           "config: need \"maxusers\" line\n");
+                       warnx("need \"maxusers\" line");
                        errors++;
                }
        }
@@ -269,7 +264,7 @@ main(int argc, char *argv[])
            mkioconf())
                stop();
        optiondelta();
-       exit(0);
+       return (0);
 }
 
 static int
@@ -278,11 +273,11 @@ mksymlink(const char *value, const char 
        int ret = 0;
 
        if (remove(path) && errno != ENOENT) {
-               warn("config: remove(%s)", path);
+               warn("remove(%s)", path);
                ret = 1;
        }
        if (symlink(value, path)) {
-               warn("config: symlink(%s -> %s)", path, value);
+               warn("symlink(%s -> %s)", path, value);
                ret = 1;
        }
        return (ret);
@@ -624,8 +619,7 @@ badstar(void)
                continue;
        foundstar:
                if (ht_lookup(needcnttab, d->d_name)) {
-                       (void)fprintf(stderr,
-                   "config: %s's cannot be *'d until its driver is fixed\n",
+                       warnx("%s's cannot be *'d until its driver is fixed",
                            d->d_name);
                        errs++;
                        continue;
@@ -662,26 +656,14 @@ setupdirs(void)
                builddir = defbuilddir;
 
        if (stat(builddir, &st) != 0) {
-               if (mkdir(builddir, 0777)) {
-                       (void)fprintf(stderr, "config: cannot create %s: %s\n",
-                           builddir, strerror(errno));
-                       exit(2);
-               }
-       } else if (!S_ISDIR(st.st_mode)) {
-               (void)fprintf(stderr, "config: %s is not a directory\n",
-                   builddir);
-               exit(2);
-       }
-       if (chdir(builddir) != 0) {
-               (void)fprintf(stderr, "config: cannot change to %s\n",
-                   builddir);
-               exit(2);
-       }
-       if (stat(srcdir, &st) != 0 || !S_ISDIR(st.st_mode)) {
-               (void)fprintf(stderr, "config: %s is not a directory\n",
-                   srcdir);
-               exit(2);
-       }
+               if (mkdir(builddir, 0777))
+                       err(2, "cannot create %s:", builddir);
+       } else if (!S_ISDIR(st.st_mode))
+               errx(2, "%s is not a directory", builddir);
+       if (chdir(builddir) != 0)
+               errx(2, "cannot change to %s", builddir);
+       if (stat(srcdir, &st) != 0 || !S_ISDIR(st.st_mode))
+               errx(2, "%s is not a directory", srcdir);
 
        if (bflag) {
                if (pledge("stdio rpath wpath cpath flock", NULL) == -1)
@@ -693,14 +675,10 @@ setupdirs(void)
                goto reconfig;
 
        fp = fopen("Makefile", "w");
-       if (!fp) {
-               (void)fprintf(stderr, "config: cannot create Makefile\n");
-               exit(2);
-       }
-       if (fprintf(fp, ".include \"../Makefile.inc\"\n") < 0) {
-               (void)fprintf(stderr, "config: cannot create Makefile\n");
-               exit(2);
-       }
+       if (!fp)
+               errx(2, "cannot create Makefile");
+       if (fprintf(fp, ".include \"../Makefile.inc\"\n") < 0)
+               errx(2, "cannot create Makefile");
        fclose(fp);
 
 reconfig:
Index: mkheaders.c
===================================================================
RCS file: /cvs/src/usr.sbin/config/mkheaders.c,v
retrieving revision 1.21
diff -u -p -r1.21 mkheaders.c
--- mkheaders.c 16 Jan 2015 06:40:16 -0000      1.21
+++ mkheaders.c 16 Oct 2016 11:25:20 -0000
@@ -42,6 +42,7 @@
  */
 
 #include <ctype.h>
+#include <err.h>
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -51,7 +52,7 @@
 
 static int emitcnt(struct nvlist *);
 static int emitopt(struct nvlist *);
-static int err(const char *, char *, FILE *);
+static int emitwarn(const char *, char *, FILE *);
 static char *cntname(const char *);
 
 /*
@@ -102,22 +103,21 @@ emitcnt(struct nvlist *head)
                nv = nv->nv_next;
        }
        if (ferror(fp))
-               return (err("read", fname, fp));
+               return (emitwarn("read", fname, fp));
        (void)fclose(fp);
        if (nv == NULL)
                return (0);
 writeit:
        if ((fp = fopen(fname, "w")) == NULL) {
-               (void)fprintf(stderr, "config: cannot write %s: %s\n",
-                   fname, strerror(errno));
+               warn("cannot write %s", fname);
                return (1);
        }
        for (nv = head; nv != NULL; nv = nv->nv_next)
                if (fprintf(fp, "#define\t%s\t%d\n",
                    cntname(nv->nv_name), nv->nv_int) < 0)
-                       return (err("writ", fname, fp));
+                       return (emitwarn("writ", fname, fp));
        if (fclose(fp))
-               return (err("writ", fname, NULL));
+               return (emitwarn("writ", fname, NULL));
        return (0);
 }
 
@@ -149,7 +149,7 @@ emitopt(struct nvlist *nv)
        }
 
        if (totlen < 0 || totlen >= sizeof new_contents) {
-               fprintf(stderr, "config: string too long\n");
+               warnx("string too long");
                return (1);
        }
 
@@ -166,7 +166,7 @@ emitopt(struct nvlist *nv)
                        goto writeit;
        }
        if (ferror(fp))
-               return (err("read", fname, fp));
+               return (emitwarn("read", fname, fp));
        (void)fclose(fp);
        if (nlines == 1)
                return (0);
@@ -175,23 +175,21 @@ writeit:
         * They're different, or the file doesn't exist.
         */
        if ((fp = fopen(fname, "w")) == NULL) {
-               (void)fprintf(stderr, "config: cannot write %s: %s\n",
-                   fname, strerror(errno));
+               warn("cannot write %s", fname);
                return (1);
        }
        if (fprintf(fp, "%s", new_contents) < 0)
-               return (err("writ", fname, fp));
+               return (emitwarn("writ", fname, fp));
        if (fclose(fp))
-               return (err("writ", fname, fp));
+               return (emitwarn("writ", fname, fp));
        return (0);
 }
 
 static int
-err(const char *what, char *fname, FILE *fp)
+emitwarn(const char *what, char *fname, FILE *fp)
 {
 
-       (void)fprintf(stderr, "config: error %sing %s: %s\n",
-           what, fname, strerror(errno));
+       warn("error %sing %s", what, fname);
        if (fp)
                (void)fclose(fp);
        return (1);
Index: mkioconf.c
===================================================================
RCS file: /cvs/src/usr.sbin/config/mkioconf.c,v
retrieving revision 1.34
diff -u -p -r1.34 mkioconf.c
--- mkioconf.c  11 Sep 2015 07:13:58 -0000      1.34
+++ mkioconf.c  16 Oct 2016 11:25:20 -0000
@@ -41,6 +41,7 @@
  *     from: @(#)mkioconf.c    8.1 (Berkeley) 6/6/93
  */
 
+#include <err.h>
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -77,8 +78,7 @@ mkioconf(void)
 
        qsort(packed, npacked, sizeof *packed, cforder);
        if ((fp = fopen("ioconf.c", "w")) == NULL) {
-               (void)fprintf(stderr, "config: cannot write ioconf.c: %s\n",
-                   strerror(errno));
+               warn("cannot write ioconf.c");
                return (1);
        }
        v = emithdr(fp);
@@ -86,9 +86,7 @@ mkioconf(void)
            emitlocnames(fp) || emitpv(fp) || emitcfdata(fp) ||
            emitroots(fp) || emitpseudo(fp)) {
                if (v >= 0)
-                       (void)fprintf(stderr,
-                           "config: error writing ioconf.c: %s\n",
-                           strerror(errno));
+                       warn("error writing ioconf.c");
                (void)fclose(fp);
                /* (void)unlink("ioconf.c"); */
                return (1);
@@ -127,8 +125,7 @@ emithdr(FILE *ofp)
                        if (fwrite(buf, 1, n, ofp) != n)
                                return (1);
                if (ferror(ifp)) {
-                       (void)fprintf(stderr, "config: error reading %s: %s\n",
-                           ifn, strerror(errno));
+                       warn("error reading %s", ifn);
                        (void)fclose(ifp);
                        return (-1);
                }
@@ -425,9 +422,7 @@ emitroots(FILE *fp)
                        continue;
                if (i->i_unit != 0 &&
                    (i->i_unit != STAR || i->i_base->d_umax != 0))
-                       (void)fprintf(stderr,
-                           "config: warning: `%s at root' is not unit 0\n",
-                           i->i_name);
+                       warnx("warning: `%s at root' is not unit 0", i->i_name);
                if (fprintf(fp, "\t%2d /* %s */,\n",
                    i->i_cfindex, i->i_name) < 0)
                        return (1);
Index: mkmakefile.c
===================================================================
RCS file: /cvs/src/usr.sbin/config/mkmakefile.c,v
retrieving revision 1.41
diff -u -p -r1.41 mkmakefile.c
--- mkmakefile.c        16 Jan 2015 06:40:16 -0000      1.41
+++ mkmakefile.c        16 Oct 2016 11:25:20 -0000
@@ -80,14 +80,12 @@ mkmakefile(void)
            machine, machine);
        ifname = sourcepath(buf);
        if ((ifp = fopen(ifname, "r")) == NULL) {
-               (void)fprintf(stderr, "config: cannot read %s: %s\n",
-                   ifname, strerror(errno));
+               warn("cannot read %s", ifname);
                free(ifname);
                return (1);
        }
        if ((ofp = fopen("Makefile", "w")) == NULL) {
-               (void)fprintf(stderr, "config: cannot write Makefile: %s\n",
-                   strerror(errno));
+               warn("cannot write Makefile");
                free(ifname);
                (void)fclose(ifp);
                return (1);
@@ -125,9 +123,7 @@ mkmakefile(void)
                        goto wrerror;
        }
        if (ferror(ifp)) {
-               (void)fprintf(stderr,
-                   "config: error reading %s (at line %d): %s\n",
-                   ifname, lineno, strerror(errno));
+               warn("error reading %s (at line %d)", ifname, lineno);
                goto bad;
        }
        if (fclose(ofp)) {
@@ -138,8 +134,7 @@ mkmakefile(void)
        free(ifname);
        return (0);
 wrerror:
-       (void)fprintf(stderr, "config: error writing Makefile: %s\n",
-           strerror(errno));
+       warn("error writing Makefile");
 bad:
        if (ofp != NULL)
                (void)fclose(ofp);
Index: mkswap.c
===================================================================
RCS file: /cvs/src/usr.sbin/config/mkswap.c,v
retrieving revision 1.15
diff -u -p -r1.15 mkswap.c
--- mkswap.c    16 Jan 2015 06:40:16 -0000      1.15
+++ mkswap.c    16 Oct 2016 11:25:20 -0000
@@ -43,6 +43,7 @@
 
 #include <sys/param.h> /* NODEV */
 
+#include <err.h>
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -89,8 +90,7 @@ mkoneswap(struct config *cf)
 
        (void)snprintf(fname, sizeof fname, "swap%s.c", cf->cf_name);
        if ((fp = fopen(fname, "w")) == NULL) {
-               (void)fprintf(stderr, "config: cannot write %s: %s\n",
-                   fname, strerror(errno));
+               warn("cannot write %s", fname);
                return (1);
        }
        if (fputs("\
@@ -125,8 +125,7 @@ mkoneswap(struct config *cf)
        }
        return (0);
 wrerror:
-       (void)fprintf(stderr, "config: error writing %s: %s\n",
-           fname, strerror(errno));
+       warn("error writing %s", fname);
        if (fp != NULL)
                (void)fclose(fp);
        /* (void)unlink(fname); */
Index: ukc.c
===================================================================
RCS file: /cvs/src/usr.sbin/config/ukc.c,v
retrieving revision 1.20
diff -u -p -r1.20 ukc.c
--- ukc.c       12 Oct 2015 04:43:30 -0000      1.20
+++ ukc.c       16 Oct 2016 11:25:20 -0000
@@ -57,7 +57,6 @@ check_int(int idx, const char *name)
 int
 ukc(char *file, char *outfile, int uflag, int force)
 {
-       extern char *__progname;
        int i;
        kvm_t *kd;
        char errbuf[_POSIX2_LINE_MAX];
@@ -65,7 +64,7 @@ ukc(char *file, char *outfile, int uflag
        char history[1024], kversion[1024];
 
        if (file == NULL) {
-               fprintf(stderr, "%s: no file specified\n", __progname);
+               warnx("no file specified");
                usage();
        }
 

Reply via email to