Fix uip/whom.c for C89 compatibility
[mmh] / uip / ali.c
index 4d7617b..d4c6c7f 100644 (file)
--- a/uip/ali.c
+++ b/uip/ali.c
@@ -10,6 +10,8 @@
 #include <h/addrsbr.h>
 #include <h/aliasbr.h>
 #include <h/utils.h>
 #include <h/addrsbr.h>
 #include <h/aliasbr.h>
 #include <h/utils.h>
+#include <locale.h>
+#include <sysexits.h>
 
 /*
 ** maximum number of names
 
 /*
 ** maximum number of names
@@ -38,6 +40,8 @@ static struct swit switches[] = {
        { NULL, 0 }
 };
 
        { NULL, 0 }
 };
 
+char *version=VERSION;
+
 static int pos = 1;
 
 extern struct aka *akahead;
 static int pos = 1;
 
 extern struct aka *akahead;
@@ -72,25 +76,25 @@ main(int argc, char **argv)
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
                        switch (smatch(++cp, switches)) {
                        case AMBIGSW:
                                ambigsw(cp, switches);
-                               /* sysexits.h EX_USAGE */
-                               exit(1);
+                               exit(EX_USAGE);
                        case UNKWNSW:
                        case UNKWNSW:
-                               adios(NULL, "-%s unknown", cp);
+                               adios(EX_USAGE, NULL, "-%s unknown", cp);
 
                        case HELPSW:
                                snprintf(buf, sizeof(buf), "%s [switches] aliases ...",
                                        invo_name);
                                print_help(buf, switches, 1);
 
                        case HELPSW:
                                snprintf(buf, sizeof(buf), "%s [switches] aliases ...",
                                        invo_name);
                                print_help(buf, switches, 1);
-                               exit(0);
+                               exit(argc == 2 ? EX_OK : EX_USAGE);
                        case VERSIONSW:
                                print_version(invo_name);
                        case VERSIONSW:
                                print_version(invo_name);
-                               exit(0);
+                               exit(argc == 2 ? EX_OK : EX_USAGE);
 
                        case FILESW:
 
                        case FILESW:
-                               if (!(cp = *argp++) || *cp == '-')
-                                       adios(NULL, "missing argument to %s", argp[-2]);
+                               if (!(cp = *argp++) || *cp == '-') {
+                                       adios(EX_USAGE, NULL, "missing argument to %s", argp[-2]);
+                               }
                                if ((i = alias(cp)) != AK_OK)
                                if ((i = alias(cp)) != AK_OK)
-                                       adios(NULL, "aliasing error in %s: %s", cp, akerror(i));
+                                       adios(EX_USAGE, NULL, "aliasing error in %s: %s", cp, akerror(i));
                                deffiles = 0;
                                continue;
 
                                deffiles = 0;
                                continue;
 
@@ -123,15 +127,15 @@ main(int argc, char **argv)
        if (deffiles && (cp = context_find("Aliasfile"))) {
                char *dp = NULL;
 
        if (deffiles && (cp = context_find("Aliasfile"))) {
                char *dp = NULL;
 
-               for (ap = brkstring(dp=getcpy(cp), " ", "\n");
+               for (ap = brkstring(dp=mh_xstrdup(cp), " ", "\n");
                                ap && *ap; ap++) {
                        if ((i = alias(etcpath(*ap))) != AK_OK) {
                                ap && *ap; ap++) {
                        if ((i = alias(etcpath(*ap))) != AK_OK) {
-                               adios(NULL, "aliasing error in %s: %s",
+                               adios(EX_DATAERR, NULL, "aliasing error in %s: %s",
                                                *ap, akerror(i));
                        }
                }
                if (dp) {
                                                *ap, akerror(i));
                        }
                }
                if (dp) {
-                       free(dp);
+                       mh_free0(&dp);
                }
        }
 
                }
        }
 
@@ -140,13 +144,13 @@ main(int argc, char **argv)
        */
        if (inverted) {
                if (vecp == 0)
        */
        if (inverted) {
                if (vecp == 0)
-                       adios(NULL, "usage: %s -user addresses ...  (you forgot the addresses)",
+                       adios(EX_USAGE, NULL, "usage: %s -user addresses ...  (you forgot the addresses)",
                                   invo_name);
 
                for (i = 0; i < vecp; i++)
                        print_usr(vec[i], list, normalize);
 
                                   invo_name);
 
                for (i = 0; i < vecp; i++)
                        print_usr(vec[i], list, normalize);
 
-               exit(0);
+               exit(EX_OK);
        }
 
        if (vecp) {
        }
 
        if (vecp) {
@@ -162,7 +166,7 @@ main(int argc, char **argv)
                }
        }
 
                }
        }
 
-       return 0;
+       return EX_OK;
 }
 
 static void
 }
 
 static void
@@ -208,14 +212,14 @@ print_aka(char *p, int list, int margin)
 static void
 print_usr(char *s, int list, int norm)
 {
 static void
 print_usr(char *s, int list, int norm)
 {
-       register char *cp, *pp, *vp;
-       register struct aka *ak;
-       register struct mailname *mp, *np;
+       char *cp, *pp, *vp;
+       struct aka *ak;
+       struct mailname *mp, *np;
 
        if ((pp = getname(s)) == NULL)
 
        if ((pp = getname(s)) == NULL)
-               adios(NULL, "no address in \"%s\"", s);
+               adios(EX_DATAERR, NULL, "no address in \"%s\"", s);
        if ((mp = getm(pp, NULL, 0, norm, NULL)) == NULL)
        if ((mp = getm(pp, NULL, 0, norm, NULL)) == NULL)
-               adios(NULL, "bad address \"%s\"", s);
+               adios(EX_DATAERR, NULL, "bad address \"%s\"", s);
        while (getname(""))
                continue;
 
        while (getname(""))
                continue;
 
@@ -228,7 +232,7 @@ print_usr(char *s, int list, int norm)
                        if (!mh_strcasecmp(mp->m_host, np->m_host)
                                        && !mh_strcasecmp(mp->m_mbox, np->m_mbox)) {
                                vp = vp ? add(ak->ak_name, add(",", vp))
                        if (!mh_strcasecmp(mp->m_host, np->m_host)
                                        && !mh_strcasecmp(mp->m_mbox, np->m_mbox)) {
                                vp = vp ? add(ak->ak_name, add(",", vp))
-                                       : getcpy(ak->ak_name);
+                                       : mh_xstrdup(ak->ak_name);
                                mnfree(np);
                                while (getname(""))
                                        continue;
                                mnfree(np);
                                while (getname(""))
                                        continue;
@@ -242,5 +246,5 @@ print_usr(char *s, int list, int norm)
        print_aka(vp ? vp : s, list, 0);
 
        if (vp)
        print_aka(vp ? vp : s, list, 0);
 
        if (vp)
-               free(vp);
+               mh_free0(&vp);
 }
 }