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) \
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)
* If program was invoked with name ending
* in `s', then add switch `-all'.
*/
- if (argv[0][strlen (argv[0]) - 1] == 's')
- all = 1;
+ all = has_suffix_c(argv[0], 's');
arguments = getarguments (invo_name, argc, argv, 1);
argp = arguments;
/* 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 {
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 {
/* Listing the folder stack */
if (listsw) {
- printf ("%s", argfolder ? argfolder : getfolder (1));
+ fputs(argfolder ? argfolder : getfolder (1), stdout);
if ((cp = context_find (stack))) {
- dp = getcpy (cp);
+ dp = mh_xstrdup(cp);
for (ap = brkstring (dp, " ", "\n"); *ap; ap++)
printf (" %s", *ap);
free (dp);
}
- printf ("\n");
+ putchar('\n');
if (!printsw)
done (0);
* 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 */
/*
* 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;
}
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 */
}
if (all || fshort || ftotal < 1) {
for (i = 0; i < total_folders; i++) {
if (fshort) {
- printf ("%s\n", fi[i].name);
+ puts(fi[i].name);
continue;
}
if (fi[i].others)
printf (";%*s (others)", curprinted ? 0 : curmsgdigits + 6, "");
- printf (".\n");
+ puts(".");
}
}
*/
if (ftotal > 0 || (all && !fshort && ftotal >= 0)) {
if (all)
- printf ("\n");
+ putchar('\n');
printf ("TOTAL = %d message%c in %d folder%s.\n",
total_msgs, total_msgs != 1 ? 's' : ' ',
total_folders, total_folders != 1 ? "s" : "");
{
int atrlen;
char atrcur[BUFSIZ];
- register struct node *np;
+ struct node *np;
snprintf (atrcur, sizeof(atrcur), "atr-%s-", current);
atrlen = strlen (atrcur);