X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/c6f2d14d9c38345075629af3487c2de491584ca1..63621a81d16ab743de6b57d47578a9a2c670ad22:/uip/ap.c diff --git a/uip/ap.c b/uip/ap.c index dff6dc43..8265723e 100644 --- a/uip/ap.c +++ b/uip/ap.c @@ -1,6 +1,4 @@ - -/* - * ap.c -- parse addresses 822-style +/* ap.c -- parse addresses 822-style * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for @@ -12,6 +10,7 @@ #include #include #include +#include "sbr/terminal.h" #define NADDRS 100 @@ -51,14 +50,13 @@ main (int argc, char **argv) int width = -1, status = 0; char *cp, *form = NULL, *format = NULL, *nfs; char buf[BUFSIZ], **argp; - char **arguments, *addrs[NADDRS]; + char *addrs[NADDRS + 1]; /* Includes terminating NULL. */ if (nmh_init(argv[0], 2)) { return 1; } mts_init (); - arguments = getarguments (invo_name, argc, argv, 1); - argp = arguments; + argp = getarguments (invo_name, argc, argv, 1); while ((cp = *argp++)) { if (*cp == '-') { switch (smatch (++cp, switches)) { @@ -96,10 +94,9 @@ main (int argc, char **argv) continue; } } - if (addrp > NADDRS) + if (addrp == NADDRS) adios (NULL, "more than %d addresses", NADDRS); - else - addrs[addrp++] = cp; + addrs[addrp++] = cp; } addrs[addrp] = NULL; @@ -131,7 +128,7 @@ main (int argc, char **argv) status += process (addrs[addrp], width); fmt_free (fmt, 1); - done (status); + done(!!status); return 1; } @@ -157,8 +154,8 @@ process (char *arg, int length) while ((cp = getname (arg))) { NEW0(p); if ((mp = getm (cp, NULL, 0, error, sizeof(error))) == NULL) { - p->pq_text = getcpy (cp); - p->pq_error = getcpy (error); + p->pq_text = mh_xstrdup(cp); + p->pq_error = mh_xstrdup(error); status++; } else { @@ -174,15 +171,13 @@ process (char *arg, int length) cptr = fmt_findcomp ("text"); if (cptr) { - if (cptr->c_text) - free(cptr->c_text); + free(cptr->c_text); cptr->c_text = p->pq_text; p->pq_text = NULL; } cptr = fmt_findcomp ("error"); if (cptr) { - if (cptr->c_text) - free(cptr->c_text); + free(cptr->c_text); cptr->c_text = p->pq_error; p->pq_error = NULL; } @@ -191,12 +186,10 @@ process (char *arg, int length) fputs (charstring_buffer (scanl), stdout); charstring_free (scanl); - if (p->pq_text) - free (p->pq_text); - if (p->pq_error) - free (p->pq_error); + free(p->pq_text); + free(p->pq_error); q = p->pq_next; - free ((char *) p); + free(p); } return status;