X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/de4636bb664106d9932ae7acb517e471b848f1f3..2d8a2d23b4c17ffb277d008f4e011fcc2bb2fa7e:/uip/new.c diff --git a/uip/new.c b/uip/new.c index e88a0dd7..5efdf74c 100644 --- a/uip/new.c +++ b/uip/new.c @@ -99,6 +99,7 @@ get_msgnums(char *folder, char *sequences[]) char name[NAMESZ], field[BUFSIZ]; char *cp; char *msgnums = NULL, *this_msgnums, *old_msgnums; + m_getfld_state_t gstate = 0; /* no sequences file -> no messages */ if (fp == NULL) { @@ -106,16 +107,16 @@ get_msgnums(char *folder, char *sequences[]) } /* copied from seq_read.c:seq_public */ - for (state = FLD;;) { - switch (state = m_getfld (state, name, field, sizeof(field), fp)) { + for (;;) { + int fieldsz = sizeof field; + switch (state = m_getfld (&gstate, name, field, &fieldsz, fp)) { case FLD: case FLDPLUS: - case FLDEOF: if (state == FLDPLUS) { cp = getcpy (field); while (state == FLDPLUS) { - state = m_getfld (state, name, field, - sizeof(field), fp); + fieldsz = sizeof field; + state = m_getfld (&gstate, name, field, &fieldsz, fp); cp = add (field, cp); } @@ -150,12 +151,9 @@ get_msgnums(char *folder, char *sequences[]) } } - if (state == FLDEOF) - break; continue; case BODY: - case BODYEOF: adios (NULL, "no blank lines are permitted in %s", seqfile); /* fall */ @@ -167,6 +165,7 @@ get_msgnums(char *folder, char *sequences[]) } break; /* break from for loop */ } + m_getfld_state_destroy (&gstate); fclose(fp); @@ -405,14 +404,11 @@ main(int argc, char **argv) char **ap, *cp, **argp, **arguments; char help[BUFSIZ]; char *folders = NULL; - char *sequences[NUMATTRS + 1]; + svector_t sequences = svector_create (0); int i = 0; char *unseen; struct node *folder; - sequences[0] = NULL; - sequences[1] = NULL; - #ifdef LOCALE setlocale(LC_ALL, ""); #endif @@ -457,9 +453,9 @@ main(int argc, char **argv) } } /* have a sequence argument */ - if (!seq_in_list(cp, sequences)) { - sequences[i++] = cp; - sequences[i] = NULL; + if (!seq_in_list(cp, svector_strs (sequences))) { + svector_push_back (sequences, cp); + ++i; } } @@ -486,12 +482,12 @@ main(int argc, char **argv) adios(NULL, "must specify sequences or set %s", usequence); } for (ap = brkstring(unseen, " ", "\n"); *ap; ap++) { - sequences[i++] = *ap; + svector_push_back (sequences, *ap); + ++i; } } - sequences[i] = NULL; - folder = doit(context_find(pfolder), folders, sequences); + folder = doit(context_find(pfolder), folders, svector_strs (sequences)); if (folder == NULL) { done(0); return 1; @@ -515,6 +511,7 @@ main(int argc, char **argv) context_save(); + svector_free (sequences); done (0); return 1; }