Renamed -version switch to -Version to remove the conflict with -verbose.
[mmh] / uip / new.c
index c4026ba..de3c0be 100644 (file)
--- a/uip/new.c
+++ b/uip/new.c
@@ -26,7 +26,7 @@ static struct swit switches[] = {
 #define FOLDERSSW 1
        { "folders", 1 },
 #define VERSIONSW 2
-       { "version", 1 },
+       { "Version", 1 },
 #define HELPSW 3
        { "help", 1 },
        { NULL, 0 }
@@ -110,66 +110,65 @@ get_msgnums(char *folder, char *sequences[])
        for (state = FLD;;) {
                switch (state = m_getfld(state, name, field, sizeof(field),
                                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);
-                                               cp = add(field, cp);
-                                       }
+               case FLD:
+               case FLDPLUS:
+               case FLDEOF:
+                       if (state == FLDPLUS) {
+                               cp = getcpy(field);
+                               while (state == FLDPLUS) {
+                                       state = m_getfld(state, name, field,
+                                                       sizeof(field), fp);
+                                       cp = add(field, cp);
+                               }
 
-                                       /*
-                                       ** Here's where we differ from
-                                       ** seq_public: if it's in a
-                                       ** sequence we want, save the list
-                                       ** of messages.
-                                       */
-                                       if (seq_in_list(name, sequences)) {
-                                               this_msgnums = trimcpy(cp);
-                                               if (msgnums == NULL) {
-                                                       msgnums = this_msgnums;
-                                               } else {
-                                                       old_msgnums = msgnums;
-                                                       msgnums = concat(old_msgnums, " ", this_msgnums, (void *)NULL);
-                                                       free(old_msgnums);
-                                                       free(this_msgnums);
-                                               }
+                               /*
+                               ** Here's where we differ from
+                               ** seq_public: if it's in a
+                               ** sequence we want, save the list
+                               ** of messages.
+                               */
+                               if (seq_in_list(name, sequences)) {
+                                       this_msgnums = trimcpy(cp);
+                                       if (msgnums == NULL) {
+                                               msgnums = this_msgnums;
+                                       } else {
+                                               old_msgnums = msgnums;
+                                               msgnums = concat(old_msgnums, " ", this_msgnums, (void *)NULL);
+                                               free(old_msgnums);
+                                               free(this_msgnums);
                                        }
-                                       free(cp);
-                               } else {
-                                       /* and here */
-                                       if (seq_in_list(name, sequences)) {
-                                               this_msgnums = trimcpy(field);
-                                               if (msgnums == NULL) {
-                                                       msgnums = this_msgnums;
-                                               } else {
-                                                       old_msgnums = msgnums;
-                                                       msgnums = concat(old_msgnums, " ", this_msgnums, (void *)NULL);
-                                                       free(old_msgnums);
-                                                       free(this_msgnums);
-                                               }
+                               }
+                               free(cp);
+                       } else {
+                               /* and here */
+                               if (seq_in_list(name, sequences)) {
+                                       this_msgnums = trimcpy(field);
+                                       if (msgnums == NULL) {
+                                               msgnums = this_msgnums;
+                                       } else {
+                                               old_msgnums = msgnums;
+                                               msgnums = concat(old_msgnums, " ", this_msgnums, (void *)NULL);
+                                               free(old_msgnums);
+                                               free(this_msgnums);
                                        }
                                }
+                       }
 
-                               if (state == FLDEOF)
-                                       break;
-                               continue;
+                       if (state == FLDEOF)
+                               break;
+                       continue;
 
-                       case BODY:
-                       case BODYEOF:
-                               adios(NULL, "no blank lines are permitted in %s", seqfile);
-                               /* fall */
+               case BODY:
+               case BODYEOF:
+                       adios(NULL, "no blank lines are permitted in %s",
+                                       seqfile);
+                       /* fall */
 
-                       case FILEEOF:
-                               break;
+               case FILEEOF:
+                       break;
 
-                       default:
-                               adios(NULL, "%s is poorly formatted", seqfile);
+               default:
+                       adios(NULL, "%s is poorly formatted", seqfile);
                }
                break;  /* break from for loop */
        }
@@ -309,7 +308,7 @@ join_sequences(char *sequences[])
 static struct node *
 doit(char *cur, char *folders, char *sequences[])
 {
-       struct node *first, *cur_node, *node, *last, *prev;
+       struct node *first, *cur_node, *node, *last = NULL, *prev;
        size_t folder_len;
        int count, total = 0;
        char *command = NULL, *sequences_s = NULL;
@@ -433,6 +432,9 @@ main(int argc, char **argv)
        char *unseen;
        struct node *folder;
 
+       sequences[0] = NULL;
+       sequences[1] = NULL;
+
 #ifdef LOCALE
        setlocale(LC_ALL, "");
 #endif
@@ -482,6 +484,7 @@ main(int argc, char **argv)
                /* have a sequence argument */
                if (!seq_in_list(cp, sequences)) {
                        sequences[i++] = cp;
+                       sequences[i] = NULL;
                }
        }
 
@@ -502,12 +505,17 @@ main(int argc, char **argv)
        }
 
        if (i == 0) {
+               char *dp;
                /* no sequence arguments; use unseen */
-               unseen = context_find(usequence);
-               if (unseen == NULL || unseen[0] == '\0') {
-                       adios(NULL, "must specify sequences or set %s", usequence);
+               if ((unseen = context_find(usequence))) {
+                       if (!*unseen) {
+                               adios(NULL, "profile entry %s set, but empty, and no sequences given", usequence);
+                       }
+               } else {
+                       unseen = seq_unseen;  /* use default */
                }
-               for (ap = brkstring(unseen, " ", "\n"); *ap; ap++) {
+               dp = getcpy(unseen);
+               for (ap = brkstring(dp, " ", "\n"); *ap; ap++) {
                        sequences[i++] = *ap;
                }
        }