Fix missing va_end call in uip/mhmisc.c
[mmh] / sbr / mf.c
index 6338a6e..c86d4d5 100644 (file)
--- a/sbr/mf.c
+++ b/sbr/mf.c
@@ -10,6 +10,9 @@
 #include <ctype.h>
 #include <stdio.h>
 #include <h/utils.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
 
 /*
 ** static prototypes
@@ -27,7 +30,7 @@ static int my_lex(char *);
 static char *
 getcpy(char *s)
 {
-       register char *p;
+       char *p;
 
        if (!s) {
                /*
@@ -39,7 +42,7 @@ getcpy(char *s)
                for(;;)
                        pause();
        }
-       p = mh_xmalloc((size_t) (strlen(s) + 2));
+       p = mh_xcalloc(strlen(s) + 2, sizeof(char));
        strcpy(p, s);
        return p;
 }
@@ -161,37 +164,35 @@ static struct adrx  adrxs2;
 struct adrx *
 getadrx(char *addrs)
 {
-       register char *bp;
-       register struct adrx *adrxp = &adrxs2;
+       char *bp;
+       struct adrx *adrxp = &adrxs2;
 
        if (pers)
-               free(pers);
+               mh_free0(&pers);
        if (mbox)
-               free(mbox);
+               mh_free0(&mbox);
        if (host)
-               free(host);
+               mh_free0(&host);
        if (path)
-               free(path);
+               mh_free0(&path);
        if (grp)
-               free(grp);
+               mh_free0(&grp);
        if (note)
-               free(note);
-       pers = mbox = host = path = grp = note = NULL;
+               mh_free0(&note);
        err[0] = 0;
 
        if (dp == NULL) {
                dp = cp = getcpy(addrs ? addrs : "");
                glevel = 0;
        } else if (cp == NULL) {
-               free(dp);
-               dp = NULL;
+               mh_free0(&dp);
                return NULL;
        }
 
        switch (parse_address()) {
        case DONE:
-               free(dp);
-               dp = cp = NULL;
+               mh_free0(&dp);
+               cp = NULL;
                return NULL;
 
        case OK:
@@ -269,8 +270,7 @@ again: ;
                }
        case LX_COMA:
                if (note) {
-                       free(note);
-                       note = NULL;
+                       mh_free0(&note);
                }
                goto again;
 
@@ -418,7 +418,7 @@ phrase(char *buffer)
 static int
 route_addr(char *buffer)
 {
-       register char *pp = cp;
+       char *pp = cp;
 
        if (my_lex(buffer) == LX_AT) {
                if (route(buffer) == NOTOK)
@@ -498,8 +498,7 @@ domain(char *buffer)
 
                case LX_AT:  /* sigh (0) */
                        mbox = add(host, add("%", mbox));
-                       free(host);
-                       host = NULL;
+                       mh_free0(&host);
                        continue;
 
                default:
@@ -539,7 +538,7 @@ route(char *buffer)
 
                                default:
                                        sprintf(err, "no at-sign found for next domain in route (%s)",
-                                                        buffer);
+                                                       buffer);
                                }
                                break;
                        }
@@ -567,8 +566,8 @@ my_lex(char *buffer)
 {
        /* buffer should be at least BUFSIZ bytes long */
        int i;
-       register unsigned char c;
-       register char *bp;
+       unsigned char c;
+       char *bp;
 
        /*
        ** Add C to the buffer bp. After use of this macro *bp is guaranteed
@@ -708,7 +707,7 @@ char *
 legal_person(char *p)
 {
        int i;
-       register char *cp;
+       char *cp;
        static char buffer[BUFSIZ];
 
        if (*p == '"')