X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/e6bb9ec43b332fd1a4b0faddbe3c9f2f2ee80dde..f93ce652c5d1361b00a28db7bbb9e638197a6676:/uip/ali.c?ds=inline diff --git a/uip/ali.c b/uip/ali.c index e9a63fda..e7c865be 100644 --- a/uip/ali.c +++ b/uip/ali.c @@ -13,29 +13,23 @@ #include #include -static struct swit switches[] = { -#define ALIASW 0 - { "alias aliasfile", 0 }, -#define NALIASW 1 - { "noalias", -7 }, -#define LISTSW 2 - { "list", 0 }, -#define NLISTSW 3 - { "nolist", 0 }, -#define NORMSW 4 - { "normalize", 0 }, -#define NNORMSW 5 - { "nonormalize", 0 }, -#define USERSW 6 - { "user", 0 }, -#define NUSERSW 7 - { "nouser", 0 }, -#define VERSIONSW 8 - { "version", 0 }, -#define HELPSW 9 - { "help", 0 }, - { NULL, 0 } -}; +#define ALI_SWITCHES \ + X("alias aliasfile", 0, ALIASW) \ + X("noalias", -7, NALIASW) \ + X("list", 0, LISTSW) \ + X("nolist", 0, NLISTSW) \ + X("user", 0, USERSW) \ + X("nouser", 0, NUSERSW) \ + X("version", 0, VERSIONSW) \ + X("help", 0, HELPSW) \ + +#define X(sw, minchars, id) id, +DEFINE_SWITCH_ENUM(ALI); +#undef X + +#define X(sw, minchars, id) { sw, minchars, id }, +DEFINE_SWITCH_ARRAY(ALI, switches); +#undef X static int pos = 1; @@ -45,27 +39,21 @@ extern struct aka *akahead; * prototypes */ static void print_aka (char *, int, int); -static void print_usr (char *, int, int); +static void print_usr (char *, int); int main (int argc, char **argv) { int i, vecp = 0, inverted = 0, list = 0; - int noalias = 0, normalize = AD_NHST; + int noalias = 0; char *cp, **ap, **argp, buf[BUFSIZ]; /* Really only need to allocate for argc-1, but must allocate at least 1, so go ahead and allocate for argc char pointers. */ char **vec = mh_xmalloc (argc * sizeof (char *)), **arguments; struct aka *ak; -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex (argv[0], '/'); - - /* read user profile/context */ - context_read(); + if (nmh_init(argv[0], 1)) { return 1; } mts_init (invo_name); arguments = getarguments (invo_name, argc, argv, 1); @@ -106,13 +94,6 @@ main (int argc, char **argv) list = 0; continue; - case NORMSW: - normalize = AD_HOST; - continue; - case NNORMSW: - normalize = AD_NHST; - continue; - case USERSW: inverted++; continue; @@ -154,7 +135,7 @@ main (int argc, char **argv) invo_name); for (i = 0; i < vecp; i++) - print_usr (vec[i], list, normalize); + print_usr (vec[i], list); } else { if (vecp) { /* print specified aliases */ @@ -216,7 +197,7 @@ print_aka (char *p, int list, int margin) } static void -print_usr (char *s, int list, int norm) +print_usr (char *s, int list) { register char *cp, *pp, *vp; register struct aka *ak; @@ -224,7 +205,7 @@ print_usr (char *s, int list, int norm) if ((pp = getname (s)) == NULL) adios (NULL, "no address in \"%s\"", s); - if ((mp = getm (pp, NULL, 0, norm, NULL)) == NULL) + if ((mp = getm (pp, NULL, 0, NULL, 0)) == NULL) adios (NULL, "bad address \"%s\"", s); while (getname ("")) continue; @@ -233,10 +214,12 @@ print_usr (char *s, int list, int norm) for (ak = akahead; ak; ak = ak->ak_next) { pp = akresult (ak); while ((cp = getname (pp))) { - if ((np = getm (cp, NULL, 0, norm, NULL)) == NULL) + if ((np = getm (cp, NULL, 0, NULL, 0)) == NULL) continue; - if (!mh_strcasecmp (mp->m_host, np->m_host) - && !mh_strcasecmp (mp->m_mbox, np->m_mbox)) { + if (!strcasecmp (mp->m_host ? mp->m_host : "", + np->m_host ? np->m_host : "") && + !strcasecmp (mp->m_mbox ? mp->m_mbox : "", + np->m_mbox ? np->m_mbox : "")) { vp = vp ? add (ak->ak_name, add (",", vp)) : getcpy (ak->ak_name); mnfree (np); @@ -249,12 +232,7 @@ print_usr (char *s, int list, int norm) } mnfree (mp); -#if 0 - printf ("%s: ", s); - print_aka (vp ? vp : s, list, pos += strlen (s) + 1); -#else print_aka (vp ? vp : s, list, 0); -#endif if (vp) free (vp);