fix handling of "-list" and "-seq" options, so behavior is orthoganal.
authorGlenn Burkhardt <glenn@aoi.ultranet.com>
Tue, 30 Sep 2003 14:19:20 +0000 (14:19 +0000)
committerGlenn Burkhardt <glenn@aoi.ultranet.com>
Tue, 30 Sep 2003 14:19:20 +0000 (14:19 +0000)
Previously, "pick -list -seq seqname" meant "pick -nolist -seq seqname".
Now "pick -list -seq seqname" and "pick -seq seqname -list" do the same thing.
Thanks to Robert Elz.

man/pick.man
uip/pick.c

index cb40ccb..a9171f4 100644 (file)
@@ -244,9 +244,7 @@ the folder argument to
 .B scan
 as well.
 .PP
-Regardless of the operation of the
-.B \-list
-switch, the
+The
 .B \-sequence
 .I name
 switch may be given once for each sequence the user wishes to define.
@@ -262,15 +260,6 @@ pick\0\-from\0frated\0\-seq\0fred
 defines a new message sequence for the current folder called
 \*(lqfred\*(rq which contains exactly those messages that were selected.
 .PP
-Note that whenever
-.B pick
-processes a
-.B \-sequence
-.I name
-switch, it
-sets
-.BR \-nolist .
-.PP
 By default,
 .B pick
 will zero the sequence before adding it.  This
index 65a9091..9f4bf0f 100644 (file)
@@ -72,7 +72,7 @@ static struct swit switches[] = {
     { NULL, 0 }
 };
 
-static int listsw = 0;
+static int listsw = -1;
 
 
 int
@@ -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;
@@ -240,10 +241,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);