X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/d1797eb2b2d5f3aa1b653e6a2562bf79c559eeb2..394a751fd883d2bbfc769fed7e254e008a2ef45e:/uip/mhlist.c?ds=inline diff --git a/uip/mhlist.c b/uip/mhlist.c index 0dc142a3..b3bba8ba 100644 --- a/uip/mhlist.c +++ b/uip/mhlist.c @@ -5,16 +5,37 @@ * complete copyright information. */ -#include +#include "h/mh.h" +#include "sbr/m_name.h" +#include "sbr/m_gmprot.h" +#include "sbr/getarguments.h" +#include "sbr/seq_setprev.h" +#include "sbr/seq_setcur.h" +#include "sbr/seq_save.h" +#include "sbr/smatch.h" +#include "sbr/m_convert.h" +#include "sbr/getfolder.h" +#include "sbr/folder_read.h" +#include "sbr/context_save.h" +#include "sbr/context_replace.h" +#include "sbr/context_find.h" +#include "sbr/ambigsw.h" +#include "sbr/path.h" +#include "sbr/print_version.h" +#include "sbr/print_help.h" +#include "sbr/error.h" #include -#include -#include -#include -#include -#include -#include -#include -#include +#include "h/signals.h" +#include "h/md5.h" +#include "h/mts.h" +#include "h/tws.h" +#include "h/mime.h" +#include "h/mhparse.h" +#include "h/mhcachesbr.h" +#include "h/done.h" +#include "h/utils.h" +#include "mhmisc.h" +#include "sbr/m_maildir.h" #include "mhfree.h" #define MHLIST_SWITCHES \ @@ -32,6 +53,7 @@ X("part number", 0, PARTSW) \ X("type content", 0, TYPESW) \ X("prefer content", 0, PREFERSW) \ + X("noprefer", 0, NPREFERSW) \ X("rcache policy", 0, RCACHESW) \ X("wcache policy", 0, WCACHESW) \ X("changecur", 0, CHGSW) \ @@ -48,25 +70,6 @@ DEFINE_SWITCH_ENUM(MHLIST); DEFINE_SWITCH_ARRAY(MHLIST, switches); #undef X - -/* mhcachesbr.c */ -extern int rcachesw; -extern int wcachesw; -extern char *cache_public; -extern char *cache_private; - -/* mhmisc.c */ -extern int npart; -extern int ntype; -extern char *parts[NPARTS + 1]; -extern char *types[NTYPES + 1]; -extern int userrs; - -/* mhparse.c */ -extern char *preferred_types[]; -extern char *preferred_subtypes[]; -extern int npreferred; - /* * This is currently needed to keep mhparse happy. * This needs to be changed. @@ -75,14 +78,6 @@ int debugsw = 0; #define quitser pipeser -/* mhparse.c */ -CT parse_mime (char *); - -/* mhmisc.c */ -int part_ok (CT); -int type_ok (CT, int); -void flush_errors (void); - /* * static prototypes */ @@ -92,7 +87,11 @@ static void pipeser (int); int main (int argc, char **argv) { - int sizesw = 1, headsw = 1, chgflag = 1, verbosw = 0, dispo = 0; + bool sizesw = true; + bool headsw = true; + bool chgflag = true; + bool verbosw = false; + bool dispo = false; int msgnum, *icachesw; char *cp, *file = NULL, *folder = NULL; char *maildir, buf[100], **argp; @@ -101,9 +100,9 @@ main (int argc, char **argv) struct msgs *mp = NULL; CT ct, *ctp; - if (nmh_init(argv[0], 1)) { return 1; } + if (nmh_init(argv[0], true, true)) { return 1; } - done=freects_done; + set_done(freects_done); arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -118,7 +117,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] [msgs] [switches]", @@ -136,13 +135,13 @@ main (int argc, char **argv) icachesw = &wcachesw; do_cache: if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); - switch (*icachesw = smatch (cp, caches)) { + die("missing argument to %s", argp[-2]); + switch (*icachesw = smatch (cp, cache_policy)) { case AMBIGSW: - ambigsw (cp, caches); + ambigsw (cp, cache_policy); done (1); case UNKWNSW: - adios (NULL, "%s unknown", cp); + die("%s unknown", cp); default: break; } @@ -156,73 +155,77 @@ do_cache: continue; case HEADSW: - headsw = 1; + headsw = true; continue; case NHEADSW: - headsw = 0; + headsw = false; continue; case SIZESW: - sizesw = 1; + sizesw = true; continue; case NSIZESW: - sizesw = 0; + sizesw = false; continue; case PARTSW: if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); if (npart >= NPARTS) - adios (NULL, "too many parts (starting with %s), %d max", + die("too many parts (starting with %s), %d max", cp, NPARTS); parts[npart++] = cp; continue; case TYPESW: if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); if (ntype >= NTYPES) - adios (NULL, "too many types (starting with %s), %d max", + die("too many types (starting with %s), %d max", cp, NTYPES); types[ntype++] = cp; continue; case PREFERSW: if (!(cp = *argp++) || *cp == '-') - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); if (npreferred >= NPREFS) - adios (NULL, "too many preferred types (starting with %s), %d max", + die("too many preferred types (starting with %s), %d max", cp, NPREFS); - preferred_types[npreferred] = cp; + mime_preference[npreferred].type = cp; cp = strchr(cp, '/'); if (cp) *cp++ = '\0'; - preferred_subtypes[npreferred++] = cp; + mime_preference[npreferred++].subtype = cp; + continue; + + case NPREFERSW: + npreferred = 0; continue; case FILESW: if (!(cp = *argp++) || (*cp == '-' && cp[1])) - adios (NULL, "missing argument to %s", argp[-2]); + die("missing argument to %s", argp[-2]); file = *cp == '-' ? cp : path (cp, TFILE); continue; case CHGSW: - chgflag++; + chgflag = true; continue; case NCHGSW: - chgflag = 0; + chgflag = false; continue; case VERBSW: - verbosw = 1; + verbosw = true; continue; case NVERBSW: - verbosw = 0; + verbosw = false; continue; case DISPOSW: - dispo = 1; + dispo = true; continue; case NDISPOSW: - dispo = 0; + dispo = false; continue; case DEBUGSW: debugsw = 1; @@ -231,9 +234,8 @@ do_cache: } if (*cp == '+' || *cp == '@') { if (folder) - adios (NULL, "only one folder at a time!"); - else - folder = pluspath (cp); + die("only one folder at a time!"); + folder = pluspath (cp); } else app_msgarg(&msgs, cp); } @@ -249,13 +251,13 @@ do_cache: /* Check for private cache location */ if (!(cache_private = context_find (nmhprivcache))) cache_private = ".cache"; - cache_private = getcpy (m_maildir (cache_private)); + cache_private = mh_xstrdup(m_maildir(cache_private)); if (!context_find ("path")) free (path ("./", TFOLDER)); if (file && msgs.size) - adios (NULL, "cannot specify msg and file at same time!"); + die("cannot specify msg and file at same time!"); /* * check if message is coming from file @@ -281,11 +283,11 @@ do_cache: /* read folder and create message structure */ if (!(mp = folder_read (folder, 0))) - adios (NULL, "unable to read folder %s", folder); + die("unable to read folder %s", folder); /* check for empty folder */ if (mp->nummsg == 0) - adios (NULL, "no messages in %s", folder); + die("no messages in %s", folder); /* parse all the message ranges/sequences and set SELECTED */ for (msgnum = 0; msgnum < msgs.size; msgnum++) @@ -310,7 +312,7 @@ do_cache: if (!*cts) done (1); - userrs = 1; + userrs = true; SIGNAL (SIGQUIT, quitser); SIGNAL (SIGPIPE, pipeser);