X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/61ccf1dbeea93978803303d2cd43efa5da2cc7d1..a53bce89b61471cfb7725435aa879226624eed8f:/uip/folder.c diff --git a/uip/folder.c b/uip/folder.c index 9fa29840..c077f7c2 100644 --- a/uip/folder.c +++ b/uip/folder.c @@ -33,7 +33,7 @@ X("list", 0, LISTSW) \ X("nolist", 0, NLISTSW) \ X("print", 0, PRNTSW) \ - X("noprint", -4, NPRNTSW) \ + X("noprint", 0, NPRNTSW) \ X("push", 0, PUSHSW) \ X("pop", 0, POPSW) \ X("version", 0, VERSIONSW) \ @@ -92,6 +92,17 @@ static void print_folders (void); static int sfold (struct msgs *, char *); static void readonly_folders (void); +/* + * Function for printing error message if folder does not exist with + * -nocreate. + */ +static +void +nonexistent_folder (int status) { + NMH_UNUSED (status); + adios (NULL, "folder %s does not exist", folder); +} + int main (int argc, char **argv) @@ -101,13 +112,7 @@ main (int argc, char **argv) char *cp, *dp, *msg = NULL, *argfolder = NULL; char **ap, **argp, buf[BUFSIZ], **arguments; -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex (argv[0], '/'); - - /* read user profile/context */ - context_read(); + if (nmh_init(argv[0], 1)) { return 1; } /* * If program was invoked with name ending @@ -250,7 +255,7 @@ main (int argc, char **argv) /* If no folder is given, the current folder and */ /* the top of the folder stack are swapped. */ if ((cp = context_find (stack))) { - dp = getcpy (cp); + dp = mh_xstrdup(cp); ap = brkstring (dp, " ", "\n"); argfolder = getcpy(*ap++); } else { @@ -274,7 +279,7 @@ main (int argc, char **argv) if (argfolder) adios (NULL, "sorry, no folders allowed with -pop"); if ((cp = context_find (stack))) { - dp = getcpy (cp); + dp = mh_xstrdup(cp); ap = brkstring (dp, " ", "\n"); argfolder = getcpy(*ap++); } else { @@ -304,7 +309,7 @@ main (int argc, char **argv) if (listsw) { printf ("%s", argfolder ? argfolder : getfolder (1)); if ((cp = context_find (stack))) { - dp = getcpy (cp); + dp = mh_xstrdup(cp); for (ap = brkstring (dp, " ", "\n"); *ap; ap++) printf (" %s", *ap); free (dp); @@ -355,7 +360,7 @@ main (int argc, char **argv) * Check if folder exists. If not, then see if * we should create it, or just exit. */ - create_folder (m_maildir (folder), fcreat, done); + create_folder (m_maildir (folder), fcreat, nonexistent_folder); if (get_folder_info (folder, msg) && argfolder) { /* update current folder */ @@ -402,8 +407,9 @@ get_folder_info_body (char *fold, char *msg, boolean *crawl_children) /* * create message structure and get folder info */ - if (!(mp = folder_read (fold, 1))) { + if (!(mp = folder_read (fold, fpack))) { admonish (NULL, "unable to read folder %s", fold); + *crawl_children = FALSE; return 0; } @@ -412,8 +418,10 @@ get_folder_info_body (char *fold, char *msg, boolean *crawl_children) retval = 0; if (fpack) { - if (folder_pack (&mp, fverb) == -1) + if (folder_pack (&mp, fverb) == -1) { + *crawl_children = FALSE; /* to please clang static analyzer */ done (1); + } seq_save (mp); /* synchronize the sequences */ context_save (); /* save the context file */ } @@ -626,7 +634,7 @@ readonly_folders (void) { int atrlen; char atrcur[BUFSIZ]; - register struct node *np; + struct node *np; snprintf (atrcur, sizeof(atrcur), "atr-%s-", current); atrlen = strlen (atrcur);