X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/a5a1425258ffb1f72e853b6adc6ff0ae58c636bd..8c6e995a43e71e012ae133ff8ebea5719d9117fe:/uip/folder.c diff --git a/uip/folder.c b/uip/folder.c index 423ef7b3..2141f32d 100644 --- a/uip/folder.c +++ b/uip/folder.c @@ -1,6 +1,4 @@ - -/* - * folder(s).c -- set/list the current message and/or folder +/* folder.c -- set/list the current message and/or folder * -- push/pop a folder onto/from the folder stack * -- list the folder stack * @@ -11,7 +9,9 @@ #include #include +#include "h/done.h" #include +#include "sbr/m_maildir.h" #define FOLDER_SWITCHES \ X("all", 0, ALLSW) \ @@ -54,7 +54,7 @@ static int fverb = 0; /* print actions taken while packing folder */ static int fheader = 0; /* should we output a header? */ static int frecurse = 0; /* recurse through subfolders */ static int ftotal = 0; /* should we output the totals? */ -static int all = 0; /* should we output all folders */ +static bool all; /* should we output all folders */ static int total_folders = 0; /* total number of folders */ @@ -100,25 +100,27 @@ static void nonexistent_folder (int status) { NMH_UNUSED (status); - adios (NULL, "folder %s does not exist", folder); + die("folder %s does not exist", folder); } int main (int argc, char **argv) { - int printsw = 0, listsw = 0; - int pushsw = 0, popsw = 0; + bool printsw = false; + bool listsw = false; + bool pushsw = false; + bool popsw = false; char *cp, *dp, *msg = NULL, *argfolder = NULL; char **ap, **argp, buf[BUFSIZ], **arguments; - if (nmh_init(argv[0], 1)) { return 1; } + if (nmh_init(argv[0], true, true)) { return 1; } /* * If program was invoked with name ending * in `s', then add switch `-all'. */ - all = HasSuffixC(argv[0], 's'); + all = has_suffix_c(argv[0], 's'); arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -130,7 +132,7 @@ main (int argc, char **argv) ambigsw (cp, switches); done (1); case UNKWNSW: - adios (NULL, "-%s unknown", cp); + die("-%s unknown", cp); case HELPSW: snprintf (buf, sizeof(buf), "%s [+folder] [msg] [switches]", @@ -142,11 +144,11 @@ main (int argc, char **argv) done (0); case ALLSW: - all = 1; + all = true; continue; case NALLSW: - all = 0; + all = false; continue; case CREATSW: @@ -199,41 +201,39 @@ main (int argc, char **argv) continue; case PRNTSW: - printsw = 1; + printsw = true; continue; case NPRNTSW: - printsw = 0; + printsw = false; continue; case LISTSW: - listsw = 1; + listsw = true; continue; case NLISTSW: - listsw = 0; + listsw = false; continue; case PUSHSW: - pushsw = 1; - listsw = 1; - popsw = 0; + pushsw = true; + listsw = true; + popsw = false; continue; case POPSW: - popsw = 1; - listsw = 1; - pushsw = 0; + popsw = true; + listsw = true; + pushsw = false; continue; } } if (*cp == '+' || *cp == '@') { if (argfolder) - adios (NULL, "only one folder at a time!"); - else - argfolder = pluspath (cp); + die("only one folder at a time!"); + argfolder = pluspath (cp); } else { if (msg) - adios (NULL, "only one (current) message at a time!"); - else - msg = cp; + die("only one (current) message at a time!"); + msg = cp; } } @@ -245,8 +245,8 @@ main (int argc, char **argv) * If we aren't working with the folder stack * (-push, -pop, -list) then the default is to print. */ - if (pushsw == 0 && popsw == 0 && listsw == 0) - printsw++; + if (!pushsw && !popsw && !listsw) + printsw = true; /* Pushing a folder onto the folder stack */ if (pushsw) { @@ -258,9 +258,9 @@ main (int argc, char **argv) ap = brkstring (dp, " ", "\n"); argfolder = getcpy(*ap++); } else { - adios (NULL, "no other folder"); + die("no other folder"); } - for (cp = getcpy (getfolder (1)); *ap; ap++) + for (cp = mh_xstrdup(getfolder(1)); *ap; ap++) cp = add (*ap, add (" ", cp)); free (dp); context_replace (stack, cp); /* update folder stack */ @@ -269,20 +269,20 @@ main (int argc, char **argv) context_replace (stack, (cp = context_find (stack)) ? concat (getfolder (1), " ", cp, NULL) - : getcpy (getfolder (1))); + : mh_xstrdup(getfolder(1))); } } /* Popping a folder off of the folder stack */ if (popsw) { if (argfolder) - adios (NULL, "sorry, no folders allowed with -pop"); + die("sorry, no folders allowed with -pop"); if ((cp = context_find (stack))) { dp = mh_xstrdup(cp); ap = brkstring (dp, " ", "\n"); argfolder = getcpy(*ap++); } else { - adios (NULL, "folder stack empty"); + die("folder stack empty"); } if (*ap) { /* if there's anything left in the stack */ @@ -306,7 +306,7 @@ main (int argc, char **argv) /* Listing the folder stack */ if (listsw) { - printf ("%s", argfolder ? argfolder : getfolder (1)); + fputs(argfolder ? argfolder : getfolder (1), stdout); if ((cp = context_find (stack))) { dp = mh_xstrdup(cp); for (ap = brkstring (dp, " ", "\n"); *ap; ap++) @@ -335,9 +335,10 @@ main (int argc, char **argv) */ if (!argfolder) { if (msg) - admonish (NULL, "no folder given for message %s", msg); + inform("no folder given for message %s, continuing...", msg); readonly_folders (); /* do any readonly folders */ - strncpy (folder, (cp = context_find (pfolder)) ? cp : "", sizeof(folder)); + cp = context_find(pfolder); + strncpy (folder, FENDNULL(cp), sizeof(folder)); crawl_folders (".", get_folder_info_callback, NULL); } else { strncpy (folder, argfolder, sizeof(folder)); @@ -378,7 +379,7 @@ main (int argc, char **argv) } static int -get_folder_info_body (char *fold, char *msg, boolean *crawl_children) +get_folder_info_body (char *fold, char *msg, bool *crawl_children) { int i, retval = 1; struct msgs *mp = NULL; @@ -407,8 +408,8 @@ get_folder_info_body (char *fold, char *msg, boolean *crawl_children) * create message structure and get folder info */ if (!(mp = folder_read (fold, fpack))) { - admonish (NULL, "unable to read folder %s", fold); - *crawl_children = FALSE; + inform("unable to read folder %s, continuing...", fold); + *crawl_children = false; return 0; } @@ -418,7 +419,7 @@ get_folder_info_body (char *fold, char *msg, boolean *crawl_children) if (fpack) { if (folder_pack (&mp, fverb) == -1) { - *crawl_children = FALSE; /* to please clang static analyzer */ + *crawl_children = false; /* to please clang static analyzer */ done (1); } seq_save (mp); /* synchronize the sequences */ @@ -442,10 +443,10 @@ get_folder_info_body (char *fold, char *msg, boolean *crawl_children) return retval; } -static boolean +static bool get_folder_info_callback (char *fold, void *baton) { - boolean crawl_children; + bool crawl_children; NMH_UNUSED (baton); get_folder_info_body (fold, NULL, &crawl_children); @@ -456,7 +457,7 @@ get_folder_info_callback (char *fold, void *baton) static int get_folder_info (char *fold, char *msg) { - boolean crawl_children; + bool crawl_children; int retval; retval = get_folder_info_body (fold, msg, &crawl_children); @@ -475,7 +476,9 @@ get_folder_info (char *fold, char *msg) static void print_folders (void) { - int i, len, hasempty = 0, curprinted; + int i, len; + bool hasempty = false; + bool curprinted; int maxlen = 0, maxnummsg = 0, maxlowmsg = 0; int maxhghmsg = 0, maxcurmsg = 0, total_msgs = 0; int nummsgdigits, lowmsgdigits; @@ -519,7 +522,7 @@ print_folders (void) /* check for empty folders */ if (fi[i].nummsg == 0) - hasempty = 1; + hasempty = true; } nummsgdigits = num_digits (maxnummsg); lowmsgdigits = num_digits (maxlowmsg); @@ -546,7 +549,7 @@ print_folders (void) 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; } @@ -563,19 +566,19 @@ print_folders (void) printf ("%-*s ", maxlen+1, tmpname); - curprinted = 0; /* remember if we print cur */ + curprinted = false; /* remember if we print cur */ if (fi[i].nummsg == 0) { printf ("has %*s messages%*s", nummsgdigits, "no", fi[i].others ? lowmsgdigits + hghmsgdigits + 5 : 0, ""); } else { - printf ("has %*d message%s (%*d-%*d)", + printf ("has %*d message%1s (%*d-%*d)", nummsgdigits, fi[i].nummsg, - (fi[i].nummsg == 1) ? " " : "s", + PLURALS(fi[i].nummsg), lowmsgdigits, fi[i].lowmsg, hghmsgdigits, fi[i].hghmsg); if (fi[i].curmsg >= fi[i].lowmsg && fi[i].curmsg <= fi[i].hghmsg) { - curprinted = 1; + curprinted = true; printf ("; cur=%*d", curmsgdigits, fi[i].curmsg); } } @@ -592,16 +595,16 @@ print_folders (void) if (ftotal > 0 || (all && !fshort && ftotal >= 0)) { if (all) putchar('\n'); - printf ("TOTAL = %d message%c in %d folder%s.\n", - total_msgs, total_msgs != 1 ? 's' : ' ', - total_folders, total_folders != 1 ? "s" : ""); + printf ("TOTAL = %d message%s in %d folder%s.\n", + total_msgs, PLURALS(total_msgs), + total_folders, PLURALS(total_folders)); } fflush (stdout); } /* - * Set the current message and sychronize sequences + * Set the current message and synchronize sequences */ static int @@ -612,7 +615,7 @@ sfold (struct msgs *mp, char *msg) return 0; if (mp->numsel > 1) { - admonish (NULL, "only one message at a time!"); + inform("only one message at a time!, continuing..."); return 0; } seq_setprev (mp); /* set the previous-sequence */