X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/6b4bc4a25eaac2eddd1bef51e3f00c21f98ed32d..8206fbf:/uip/mhshow.c?ds=sidebyside diff --git a/uip/mhshow.c b/uip/mhshow.c index 76a0d022..98cab9d1 100644 --- a/uip/mhshow.c +++ b/uip/mhshow.c @@ -11,8 +11,6 @@ #include #include #include -#include -#include #include #include #include @@ -23,14 +21,17 @@ #define MHSHOW_SWITCHES \ X("check", 0, CHECKSW) \ X("nocheck", 0, NCHECKSW) \ - X("pause", 0, PAUSESW) \ - X("nopause", 0, NPAUSESW) \ - X("serialonly", 0, SERIALSW) \ - X("noserialonly", 0, NSERIALSW) \ X("verbose", 0, VERBSW) \ X("noverbose", 0, NVERBSW) \ + X("concat", 0, CONCATSW) \ + X("noconcat", 0, NCONCATSW) \ + X("textonly", 0, TEXTONLYSW) \ + X("notextonly", 0, NTEXTONLYSW) \ + X("inlineonly", 0, INLINESW) \ + X("noinlineonly", 0, NINLINESW) \ X("file file", 0, FILESW) \ X("form formfile", 0, FORMSW) \ + X("markform formfile", 0, MARKFORMSW) \ X("part number", 0, PARTSW) \ X("type content", 0, TYPESW) \ X("rcache policy", 0, RCACHESW) \ @@ -58,9 +59,6 @@ DEFINE_SWITCH_ARRAY(MHSHOW, switches); #undef X -/* mhparse.c */ -extern char *tmp; /* directory to place temp files */ - /* mhcachesbr.c */ extern int rcachesw; extern int wcachesw; @@ -68,10 +66,7 @@ extern char *cache_public; extern char *cache_private; /* mhshowsbr.c */ -extern int pausesw; -extern int serialsw; extern char *progsw; -extern int nolist; extern int nomore; /* flags for moreproc/header display */ extern char *formsw; @@ -95,9 +90,6 @@ int part_ok (CT, int); int type_ok (CT, int); void flush_errors (void); -/* mhshowsbr.c */ -void show_all_messages (CT *); - /* mhfree.c */ extern CT *cts; void freects_done (int) NORETURN; @@ -111,8 +103,8 @@ static void pipeser (int); int main (int argc, char **argv) { - int msgnum, *icachesw; - char *cp, *file = NULL, *folder = NULL; + int msgnum, *icachesw, concatsw = -1, textonly = -1, inlineonly = -1; + char *cp, *file = NULL, *folder = NULL, *markform = NULL; char *maildir, buf[100], **argp; char **arguments; struct msgs_array msgs = { 0, 0, NULL }; @@ -120,15 +112,9 @@ main (int argc, char **argv) CT ct, *ctp; FILE *fp; - done=freects_done; - -#ifdef LOCALE - setlocale(LC_ALL, ""); -#endif - invo_name = r1bindex (argv[0], '/'); + if (nmh_init(argv[0], 1)) { return 1; } - /* read user profile/context */ - context_read(); + done=freects_done; arguments = getarguments (invo_name, argc, argv, 1); argp = arguments; @@ -180,18 +166,23 @@ do_cache: checksw = 0; continue; - case PAUSESW: - pausesw = 1; + case CONCATSW: + concatsw = 1; continue; - case NPAUSESW: - pausesw = 0; + case NCONCATSW: + concatsw = 0; continue; - - case SERIALSW: - serialsw = 1; + case TEXTONLYSW: + textonly = 1; + continue; + case NTEXTONLYSW: + textonly = 0; continue; - case NSERIALSW: - serialsw = 0; + case INLINESW: + inlineonly = 1; + continue; + case NINLINESW: + inlineonly = 0; continue; case PARTSW: @@ -226,6 +217,11 @@ do_cache: formsw = getcpy (etcpath (cp)); continue; + case MARKFORMSW: + if (!(markform = *argp++) || *markform == '-') + adios (NULL, "missing argument to %s", argp[-2]); + continue; + /* * Switches for moreproc/mhlproc */ @@ -267,6 +263,18 @@ do_cache: parts[npart] = NULL; types[ntype] = NULL; + /* + * If we had any specific parts or types specified, turn off text only + * content. + */ + + if (npart > 0 || ntype > 0) { + if (textonly == -1) + textonly = 0; + if (inlineonly == -1) + inlineonly = 0; + } + /* * Check if we've specified an additional profile */ @@ -296,16 +304,6 @@ do_cache: cache_private = ".cache"; cache_private = getcpy (m_maildir (cache_private)); - /* - * Check for storage directory. If specified, - * then store temporary files there. Else we - * store them in standard nmh directory. - */ - if ((cp = context_find (nmhstorage)) && *cp) - tmp = concat (cp, "/", invo_name, NULL); - else - tmp = add (m_maildir (invo_name), NULL); - if (!context_find ("path")) free (path ("./", TFOLDER)); @@ -408,10 +406,13 @@ do_cache: context_save (); /* save the context file */ } + if (concatsw) + m_popen(moreproc, 0); + /* * Show the message content */ - show_all_messages (cts); + show_all_messages (cts, concatsw, textonly, inlineonly, markform); /* Now free all the structures for the content */ for (ctp = cts; *ctp; ctp++) @@ -420,6 +421,9 @@ do_cache: free ((char *) cts); cts = NULL; + if (concatsw) + m_pclose(); + done (0); return 1; }