X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/00d760f7506c2d5c32ab5abf9f11b3066999f08a..248c3a452003bc95088d9a1c4dec988696be2d7d:/uip/folder.c diff --git a/uip/folder.c b/uip/folder.c index 2be44264..8ab6528b 100644 --- a/uip/folder.c +++ b/uip/folder.c @@ -7,10 +7,33 @@ * complete copyright information. */ -#include -#include +#include "h/mh.h" +#include "sbr/getarguments.h" +#include "sbr/concat.h" +#include "sbr/seq_setprev.h" +#include "sbr/seq_setcur.h" +#include "sbr/seq_save.h" +#include "sbr/smatch.h" +#include "sbr/ssequal.h" +#include "sbr/getcpy.h" +#include "sbr/m_convert.h" +#include "sbr/getfolder.h" +#include "sbr/folder_read.h" +#include "sbr/folder_pack.h" +#include "sbr/folder_free.h" +#include "sbr/context_save.h" +#include "sbr/context_replace.h" +#include "sbr/context_del.h" +#include "sbr/context_find.h" +#include "sbr/brkstring.h" +#include "sbr/ambigsw.h" +#include "sbr/path.h" +#include "sbr/print_version.h" +#include "sbr/print_help.h" +#include "sbr/error.h" +#include "sbr/crawl_folders.h" #include "h/done.h" -#include +#include "h/utils.h" #include "sbr/m_maildir.h" #define FOLDER_SWITCHES \ @@ -47,14 +70,14 @@ DEFINE_SWITCH_ENUM(FOLDER); DEFINE_SWITCH_ARRAY(FOLDER, switches); #undef X -static int fshort = 0; /* output only folder names */ +static bool fshort; /* output only folder names */ static int fcreat = 0; /* should we ask to create new folders? */ -static int fpack = 0; /* are we packing the folder? */ -static int fverb = 0; /* print actions taken while packing folder */ +static bool fpack; /* are we packing the folder? */ +static bool fverb; /* print actions taken while packing folder */ static int fheader = 0; /* should we output a header? */ -static int frecurse = 0; /* recurse through subfolders */ +static bool frecurse; /* 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 */ @@ -96,9 +119,9 @@ static void readonly_folders (void); * Function for printing error message if folder does not exist with * -nocreate. */ -static -void -nonexistent_folder (int status) { +static void +nonexistent_folder (int status) +{ NMH_UNUSED (status); die("folder %s does not exist", folder); } @@ -107,12 +130,14 @@ nonexistent_folder (int status) { int main (int argc, char **argv) { - int printsw = 0, listsw = 0; - int pushsw = 0, popsw = 0; + int printsw = -1; + 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 @@ -142,11 +167,11 @@ main (int argc, char **argv) done (0); case ALLSW: - all = 1; + all = true; continue; case NALLSW: - all = 0; + all = false; continue; case CREATSW: @@ -157,10 +182,10 @@ main (int argc, char **argv) continue; case FASTSW: - fshort++; + fshort = true; continue; case NFASTSW: - fshort = 0; + fshort = false; continue; case HDRSW: @@ -171,24 +196,24 @@ main (int argc, char **argv) continue; case PACKSW: - fpack++; + fpack = true; continue; case NPACKSW: - fpack = 0; + fpack = false; continue; case VERBSW: - fverb++; + fverb = true; continue; case NVERBSW: - fverb = 0; + fverb = false; continue; case RECURSW: - frecurse++; + frecurse = true; continue; case NRECRSW: - frecurse = 0; + frecurse = false; continue; case TOTALSW: @@ -206,21 +231,21 @@ main (int argc, char **argv) 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; } } @@ -240,11 +265,13 @@ main (int argc, char **argv) nmhdir = concat (m_maildir (""), "/", NULL); /* - * If we aren't working with the folder stack - * (-push, -pop, -list) then the default is to print. + * If not directed via -print/-noprint, we print folder summary + * info unless if we're working with the folder stack (i.e., + * -push, -pop, or -list). */ - if (pushsw == 0 && popsw == 0 && listsw == 0) - printsw++; + if (printsw == -1) { + printsw = !(pushsw || popsw || listsw); + } /* Pushing a folder onto the folder stack */ if (pushsw) { @@ -369,7 +396,8 @@ main (int argc, char **argv) /* * Print out folder information */ - print_folders(); + if (printsw) + print_folders(); context_save (); /* save the context file */ done (0); @@ -474,7 +502,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; @@ -518,7 +548,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); @@ -562,7 +592,7 @@ 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", @@ -574,7 +604,7 @@ print_folders (void) 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); } }