Fix uip/whom.c for C89 compatibility
[mmh] / uip / new.c
index 60bb806..9763376 100644 (file)
--- a/uip/new.c
+++ b/uip/new.c
@@ -33,6 +33,8 @@ static struct swit switches[] = {
        { NULL, 0 }
 };
 
+char *version=VERSION;
+
 static enum { NEW, FNEXT, FPREV, UNSEEN } run_mode = NEW;
 
 /*
@@ -55,7 +57,7 @@ count_messages(char *field)
        int j, k;
        char *cp, **ap;
 
-       field = getcpy(field);
+       field = mh_xstrdup(field);
 
        /* copied from seq_read.c:seq_init */
        for (ap = brkstring(field, " ", "\n"); *ap; ap++) {
@@ -68,7 +70,7 @@ count_messages(char *field)
                }
        }
 
-       free(field);
+       mh_free0(&field);
 
        return total;
 }
@@ -96,7 +98,7 @@ static char *
 get_msgnums(char *folder, char *sequences[])
 {
        enum state state;
-       struct field f = free_field;
+       struct field f = {{0}};
        char *seqfile = concat(toabsdir(folder), "/", mh_seq, (void *)NULL);
        FILE *fp = fopen(seqfile, "r");
        char *msgnums = NULL, *this_msgnums, *old_msgnums;
@@ -108,6 +110,10 @@ get_msgnums(char *folder, char *sequences[])
 
        for (state = FLD2;;) {
                switch (state = m_getfld2(state, &f, fp)) {
+               case LENERR2:
+                       state = FLD2;
+                       /* FALL */
+
                case FLD2:
                        /*
                        ** if it's in a sequence we want,
@@ -121,9 +127,9 @@ get_msgnums(char *folder, char *sequences[])
                                        old_msgnums = msgnums;
                                        msgnums = concat(old_msgnums, " ",
                                                        this_msgnums,
-                                                       (void *)NULL);
-                                       free(old_msgnums);
-                                       free(this_msgnums);
+                                                       NULL);
+                                       mh_free0(&old_msgnums);
+                                       mh_free0(&this_msgnums);
                                }
                        }
                        continue;
@@ -158,9 +164,9 @@ check_folder(char *folder, size_t len, struct list_state *b)
 
        if (is_cur || msgnums != NULL) {
                if (*b->first == NULL) {
-                       *b->first = b->node = mh_xmalloc(sizeof(*b->node));
+                       *b->first = b->node = mh_xcalloc(1, sizeof(*b->node));
                } else {
-                       b->node->n_next = mh_xmalloc(sizeof(*b->node));
+                       b->node->n_next = mh_xcalloc(1, sizeof(*b->node));
                        b->node = b->node->n_next;
                }
                b->node->n_name = folder;
@@ -229,7 +235,7 @@ check_folders(struct node **first, struct node **last,
                while (vfgets(fp, &line) == OK) {
                        len = strlen(line) - 1;
                        line[len] = '\0';
-                       check_folder(getcpy(line), len, &b);
+                       check_folder(mh_xstrdup(line), len, &b);
                }
                fclose(fp);
        }
@@ -251,7 +257,7 @@ join_sequences(char *sequences[])
        for (i = 0; sequences[i] != NULL; i++) {
                len += strlen(sequences[i]) + 1;
        }
-       result = mh_xmalloc(len + 1);
+       result = mh_xcalloc(len + 1, sizeof(char));
 
        for (i = 0, cp = result; sequences[i] != NULL; i++, cp += len + 1) {
                len = strlen(sequences[i]);
@@ -485,7 +491,7 @@ main(int argc, char **argv)
                } else {
                        unseen = seq_unseen;  /* use default */
                }
-               dp = getcpy(unseen);
+               dp = mh_xstrdup(unseen);
                for (ap = brkstring(dp, " ", "\n"); *ap; ap++) {
                        sequences[i++] = *ap;
                }