X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/64cc8937ff11ffd37736f27ceed5f4ff93161ca7..5b83e4c3cdafdcb5a4e8b6302314dca974a67092:/uip/pick.c diff --git a/uip/pick.c b/uip/pick.c index 66198ff2..740f6f0a 100644 --- a/uip/pick.c +++ b/uip/pick.c @@ -59,21 +59,16 @@ main (int argc, char **argv) int msgnum; char *maildir, *folder = NULL, buf[100]; char *cp, **argp, **arguments; - char *seqs[NUMATTRS + 1], *vec[MAXARGS]; + svector_t seqs = svector_create (0); + char *vec[MAXARGS]; struct msgs_array msgs = { 0, 0, NULL }; struct msgnum_array nums = { 0, 0, NULL }; struct msgs *mp, *mp2; register FILE *fp; - done=putzero_done; - -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex (argv[0], '/'); + if (nmh_init(argv[0], 1)) { return 1; } - /* read user profile/context */ - context_read(); + done=putzero_done; arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -133,14 +128,11 @@ main (int argc, char **argv) if (!(cp = *argp++) || *cp == '-') adios (NULL, "missing argument to %s", argp[-2]); - /* check if too many sequences specified */ - if (seqp >= NUMATTRS) - adios (NULL, "too many sequences (more than %d) specified", NUMATTRS); - if (!seq_nameok (cp)) done (1); - seqs[seqp++] = cp; + svector_push_back (seqs, cp); + seqp++; continue; case NSEQSW: seqp = 0; @@ -247,8 +239,6 @@ main (int argc, char **argv) if (nums.size >= mp->numsel) adios (NULL, "no messages match specification"); - seqs[seqp] = NULL; - /* * So, what's happening here? * @@ -280,9 +270,11 @@ main (int argc, char **argv) /* * Add the matching messages to sequences */ - for (seqp = 0; seqs[seqp]; seqp++) - if (!seq_addsel (mp2, seqs[seqp], publicsw, zerosw)) - done (1); + if (seqp > 0) { + for (seqp = 0; seqp < svector_size (seqs); seqp++) + if (!seq_addsel (mp2, svector_at (seqs, seqp), publicsw, zerosw)) + done (1); + } /* * Print total matched if not printing each matched message number. @@ -291,6 +283,7 @@ main (int argc, char **argv) printf ("%d hit%s\n", mp2->numsel, mp2->numsel == 1 ? "" : "s"); } + svector_free (seqs); context_replace (pfolder, folder); /* update current folder */ seq_save (mp2); /* synchronize message sequences */ context_save (); /* save the context file */