X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fpick.c;h=8cdfa58070d18555c02c6059a3ac12fc5a9df482;hp=65a9091ee1e46073efa3545176f9ccd41f8d893c;hb=008837e090c008e3afe7a9c8667070bafa091e62;hpb=6c42153ad9362cc676ea66563bf400d7511b3b68 diff --git a/uip/pick.c b/uip/pick.c index 65a9091..8cdfa58 100644 --- a/uip/pick.c +++ b/uip/pick.c @@ -12,6 +12,7 @@ #include #include #include +#include /* * We allocate space for messages (msgs array) @@ -72,7 +73,7 @@ static struct swit switches[] = { { NULL, 0 } }; -static int listsw = 0; +static int listsw = -1; int @@ -103,8 +104,7 @@ main (int argc, char **argv) */ nummsgs = 0; maxmsgs = MAXMSGS; - if (!(msgs = (char **) malloc ((size_t) (maxmsgs * sizeof(*msgs))))) - adios (NULL, "unable to allocate storage"); + msgs = (char **) mh_xmalloc ((size_t) (maxmsgs * sizeof(*msgs))); while ((cp = *argp++)) { if (*cp == '-') { @@ -115,6 +115,7 @@ main (int argc, char **argv) switch (smatch (cp, switches)) { case AMBIGSW: ambigsw (cp, switches); + listsw = 0; /* HACK */ done (1); case UNKWNSW: adios (NULL, "-%s unknown", cp); @@ -127,6 +128,7 @@ main (int argc, char **argv) done (1); case VERSIONSW: print_version(invo_name); + listsw = 0; /* HACK */ done (1); case CCSW: @@ -163,7 +165,6 @@ main (int argc, char **argv) if (seqp >= NUMATTRS) adios (NULL, "too many sequences (more than %d) specified", NUMATTRS); seqs[seqp++] = cp; - listsw = 0; continue; case PUBLSW: publicsw = 1; @@ -179,7 +180,7 @@ main (int argc, char **argv) continue; case LISTSW: - listsw++; + listsw = 1; continue; case NLISTSW: listsw = 0; @@ -198,9 +199,8 @@ main (int argc, char **argv) */ if (nummsgs >= maxmsgs) { maxmsgs += MAXMSGS; - if (!(msgs = (char **) realloc (msgs, - (size_t) (maxmsgs * sizeof(*msgs))))) - adios (NULL, "unable to reallocate msgs storage"); + msgs = (char **) mh_xrealloc (msgs, + (size_t) (maxmsgs * sizeof(*msgs))); } msgs[nummsgs++] = cp; } @@ -240,10 +240,10 @@ main (int argc, char **argv) /* * If we aren't saving the results to a sequence, - * we need to list the results. + * we default to list the results. */ - if (seqp == 0) - listsw++; + if (listsw == -1) + listsw = !seqp; if (publicsw == 1 && is_readonly(mp)) adios (NULL, "folder %s is read-only, so -public not allowed", folder);