#include <h/aliasbr.h>
#include <h/utils.h>
#include <locale.h>
+#include <sysexits.h>
/*
** maximum number of names
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 [switches] aliases ...",
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 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)
- 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;
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) {
- adios(NULL, "aliasing error in %s: %s",
+ adios(EX_DATAERR, NULL, "aliasing error in %s: %s",
*ap, akerror(i));
}
}
if (dp) {
- free(dp);
+ mh_free0(&dp);
}
}
*/
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);
- exit(0);
+ exit(EX_OK);
}
if (vecp) {
}
}
- return 0;
+ return EX_OK;
}
static void
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)
- 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)
- adios(NULL, "bad address \"%s\"", s);
+ adios(EX_DATAERR, NULL, "bad address \"%s\"", s);
while (getname(""))
continue;
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;
print_aka(vp ? vp : s, list, 0);
if (vp)
- free(vp);
+ mh_free0(&vp);
}