Use sysexits.h for better exit-codes
[mmh] / uip / mhl.c
index 386cf95..c201a95 100644 (file)
--- a/uip/mhl.c
+++ b/uip/mhl.c
@@ -16,6 +16,7 @@
 #include <ctype.h>
 #include <sys/stat.h>
 #include <locale.h>
+#include <sysexits.h>
 
 /*
 ** MAJOR BUG:
@@ -233,30 +234,30 @@ main(int argc, char **argv)
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
-                               exit(1);
+                               exit(EX_USAGE);
                        case UNKWNSW:
-                               adios(NULL, "-%s unknown\n", cp);
+                               adios(EX_USAGE, NULL, "-%s unknown\n", cp);
 
                        case HELPSW:
                                snprintf(buf, sizeof(buf), "%s [switches] [files ...]", invo_name);
                                print_help(buf, switches, 1);
-                               exit(0);
+                               exit(argc == 2 ? EX_OK : EX_USAGE);
                        case VERSIONSW:
                                print_version(invo_name);
-                               exit(0);
+                               exit(argc == 2 ? EX_OK : EX_USAGE);
 
                        case FORMSW:
                                if (!(form = *argp++) || *form == '-')
-                                       adios(NULL, "missing argument to %s",
+                                       adios(EX_USAGE, NULL, "missing argument to %s",
                                                        argp[-2]);
                                continue;
 
                        case WIDTHSW:
                                if (!(cp = *argp++) || *cp == '-')
-                                       adios(NULL, "missing argument to %s",
+                                       adios(EX_USAGE, NULL, "missing argument to %s",
                                                        argp[-2]);
                                if ((width = atoi(cp)) < 1)
-                                       adios(NULL, "bad argument %s %s",
+                                       adios(EX_USAGE, NULL, "bad argument %s %s",
                                                        argp[-2], cp);
                                continue;
 
@@ -290,7 +291,7 @@ main(int argc, char **argv)
 
        fflush(stdout);
        if (ferror(stdout)) {
-               adios("output", "error writing");
+               adios(EX_IOERR, "output", "error writing");
        }
 
        return exitstat;
@@ -321,7 +322,7 @@ mhl_format(char *file, int width)
        }
 
        if ((fp = fopen(etcpath(file), "r")) == NULL)
-               adios(file, "unable to open format file");
+               adios(EX_IOERR, file, "unable to open format file");
 
        if (fstat(fileno(fp), &st) != NOTOK) {
                mtime = st.st_mtime;
@@ -383,7 +384,7 @@ mhl_format(char *file, int width)
                        parptr = bp;
                        while (*parptr) {
                                if (evalvar(&global))
-                                       adios(NULL, "format file syntax error: %s", bp);
+                                       adios(EX_CONFIG, NULL, "format file syntax error: %s", bp);
                                if (*parptr)
                                        parptr++;
                        }
@@ -394,7 +395,7 @@ mhl_format(char *file, int width)
                        while (*parptr == ':' || *parptr == ',') {
                                parptr++;
                                if (evalvar(c1))
-                                       adios(NULL, "format file syntax error: %s", bp);
+                                       adios(EX_CONFIG, NULL, "format file syntax error: %s", bp);
                        }
                        if (!c1->c_fstr && global.c_fstr) {
                                if ((c1->c_flags & DATEFMT) &&
@@ -408,7 +409,7 @@ mhl_format(char *file, int width)
                        continue;
 
                default:
-                       adios(NULL, "format file syntax error: %s", bp);
+                       adios(EX_CONFIG, NULL, "format file syntax error: %s", bp);
                }
        }
        fclose(fp);
@@ -700,7 +701,7 @@ mhlfile(FILE *fp, char *mname, int ofilen, int ofilec)
                        return;
 
                default:
-                       adios(NULL, "getfld() returned %d", state);
+                       adios(EX_SOFTWARE, NULL, "getfld() returned %d", state);
                }
        }
 }
@@ -781,7 +782,7 @@ mcomp_format(struct mcomp *c1, struct mcomp *c2)
        while ((cp = getname(ap))) {
                if ((p = (struct pqpair *)
                                calloc((size_t) 1, sizeof(*p))) == NULL)
-                       adios(NULL, "unable to allocate pqpair memory");
+                       adios(EX_OSERR, NULL, "unable to allocate pqpair memory");
 
                if ((mp = getm(cp, NULL, 0, AD_NAME, error)) == NULL) {
                        p->pq_text = getcpy(cp);
@@ -829,7 +830,7 @@ add_queue(struct mcomp **head, struct mcomp **tail, char *name,
        struct mcomp *c1;
 
        if ((c1 = (struct mcomp *) calloc((size_t) 1, sizeof(*c1))) == NULL)
-               adios(NULL, "unable to allocate comp memory");
+               adios(EX_OSERR, NULL, "unable to allocate comp memory");
 
        c1->c_flags = flags & ~INIT;
        if ((c1->c_name = name ? getcpy(name) : NULL))
@@ -892,7 +893,7 @@ putcomp(struct mcomp *c1, struct mcomp *c2, int flag)
        if ((ovtxt = c1->c_ovtxt ? c1->c_ovtxt : global.c_ovtxt) == NULL)
                ovtxt = "";
        if (wid < ovoff + strlen(ovtxt) + 5)
-               adios(NULL, "component: %s width(%d) too small for overflow(%d)", c1->c_name, wid, ovoff + strlen(ovtxt) + 5);
+               adios(EX_SOFTWARE, NULL, "component: %s width(%d) too small for overflow(%d)", c1->c_name, wid, ovoff + strlen(ovtxt) + 5);
        onelp = NULL;
 
        if (c1->c_flags & CLEARTEXT) {