Use sysexits.h for better exit-codes
[mmh] / uip / flist.c
index c0a056c..091def7 100644 (file)
@@ -21,6 +21,7 @@
 #include <dirent.h>
 #include <sys/stat.h>
 #include <locale.h>
+#include <sysexits.h>
 
 /*
 ** We allocate space to record the names of folders
@@ -154,27 +155,27 @@ main(int argc, char **argv)
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
-                               /* sysexits.h EX_USAGE */
-                               exit(1);
+                               exit(EX_USAGE);
                        case UNKWNSW:
-                               adios(NULL, "-%s unknown", cp);
+                               adios(EX_USAGE, NULL, "-%s unknown", cp);
 
                        case HELPSW:
                                snprintf(buf, sizeof(buf), "%s [+folder1 [+folder2 ...]][switches]", 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 SEQSW:
                                if (!(cp = *argp++) || *cp == '-')
-                                       adios(NULL, "missing argument to %s",
+                                       adios(EX_USAGE, NULL, "missing argument to %s",
                                                        argp[-2]);
 
                                /* check if too many sequences specified */
                                if (numsequences >= NUMATTRS)
-                                       adios(NULL, "too many sequences (more than %d) specified", NUMATTRS);
+                                       adios(EX_USAGE, NULL, "too many sequences (more than %d) specified", NUMATTRS);
                                sequencesToDo[numsequences++] = cp;
                                break;
 
@@ -245,7 +246,7 @@ main(int argc, char **argv)
 
                if ((cp = context_find(usequence))) {
                        if (!*cp) {
-                               adios(NULL, "profile entry %s set, but empty, and no sequence given", usequence);
+                               adios(EX_CONFIG, NULL, "profile entry %s set, but empty, and no sequence given", usequence);
                        }
                } else {
                        cp = seq_unseen;  /* use default */
@@ -254,7 +255,7 @@ main(int argc, char **argv)
                ap = brkstring(dp, " ", "\n");
                for (; ap && *ap; ap++) {
                        if (numsequences >= NUMATTRS) {
-                               adios(NULL, "too many sequences (more than %d) in %s profile entry", NUMATTRS, usequence);
+                               adios(EX_USAGE, NULL, "too many sequences (more than %d) in %s profile entry", NUMATTRS, usequence);
                        } else {
                                sequencesToDo[numsequences++] = *ap;
                        }
@@ -266,7 +267,7 @@ main(int argc, char **argv)
        qsort(folders, nFolders, sizeof(struct Folder),
                        (qsort_comp) CompareFolders);
        PrintFolders();
-       return 0;
+       return EX_OK;
 }
 
 /*
@@ -315,7 +316,7 @@ ScanFolders(void)
         * change directory to base of nmh directory
         */
        if (chdir(nmhdir) == NOTOK)
-               adios(nmhdir, "unable to change directory to");
+               adios(EX_OSERR, nmhdir, "unable to change directory to");
 
        if (numfolders > 0) {
                /* Update context */
@@ -401,7 +402,7 @@ BuildFolderListRecurse(char *dirName, struct stat *s, int searchdepth)
        nlinks = s->st_nlink;
 
        if (!(dir = opendir(dirName)))
-               adios(dirName, "can't open directory");
+               adios(EX_IOERR, dirName, "can't open directory");
 
        /*
        ** A hack so that we don't see a