]> diplodocus.org Git - nmh/commitdiff
Interpret a full path argument to mhfixmsg as a filename, not
authorDavid Levine <levinedl@acm.org>
Sun, 27 Oct 2013 13:57:55 +0000 (08:57 -0500)
committerDavid Levine <levinedl@acm.org>
Sun, 27 Oct 2013 13:57:55 +0000 (08:57 -0500)
a message.

Makefile.am
man/mhfixmsg.man
test/mhfixmsg/test-mhfixmsg
uip/mhfixmsg.c

index 78cce559d46bf13ed64fb3472309c2fbe558f941..67423f00898e378a955cf74d2d8159d6d4c54f98 100644 (file)
@@ -579,6 +579,7 @@ man/man.sed: Makefile
        @echo 's,%nmhwarning%,THIS FILE HAS BEEN AUTOMATICALLY GENERATED.  DO NOT EDIT.,g' > $@
        @echo 's,%nmhversion%,nmh-$(VERSION),g' >> $@
        @echo 's,%bindir%,$(bindir),g' >> $@
        @echo 's,%nmhwarning%,THIS FILE HAS BEEN AUTOMATICALLY GENERATED.  DO NOT EDIT.,g' > $@
        @echo 's,%nmhversion%,nmh-$(VERSION),g' >> $@
        @echo 's,%bindir%,$(bindir),g' >> $@
+       @echo 's,%docdir%,$(docdir),g' >> $@
        @echo 's,%etcdir%,$(sysconfdir),g' >> $@
        @echo 's,%libdir%,$(libdir),g' >> $@
        @echo 's,%mandir%,$(mandir),g' >> $@
        @echo 's,%etcdir%,$(sysconfdir),g' >> $@
        @echo 's,%libdir%,$(libdir),g' >> $@
        @echo 's,%mandir%,$(mandir),g' >> $@
index fcc6dca70f21129a97cf1ac7c8b5004db1096447..f45447b4d40a703087e451d8cdbb8160aa77bcbd 100644 (file)
@@ -1,4 +1,4 @@
-.TH MHFIXMSG %manext1% "May 4, 2013" "%nmhversion%"
+.TH MHFIXMSG %manext1% "October 27, 2013" "%nmhversion%"
 .\"
 .\" %nmhwarning%
 .\"
 .\"
 .\" %nmhwarning%
 .\"
@@ -9,7 +9,10 @@ mhfixmsg \- rewrite MIME messages with various transformations
 .na
 .B mhfixmsg
 .RI [ +folder ]
 .na
 .B mhfixmsg
 .RI [ +folder ]
-.RI [ msgs ]
+.RI [ msgs " | "
+.IR "absolute pathname" " | "
+.RB \-file
+.IR file ]
 .RB [ \-decodetext
 8bit/7bit |
 .BR \-nodecodetext ]
 .RB [ \-decodetext
 8bit/7bit |
 .BR \-nodecodetext ]
@@ -20,8 +23,6 @@ mhfixmsg \- rewrite MIME messages with various transformations
 .RB [ \-replacetextplain " | " \-noreplacetextplain ]
 .RB [ \-fixboundary " | " \-nofixboundary ]
 .RB [ \-fixcte " | " \-nofixcte ]
 .RB [ \-replacetextplain " | " \-noreplacetextplain ]
 .RB [ \-fixboundary " | " \-nofixboundary ]
 .RB [ \-fixcte " | " \-nofixcte ]
-.RB [ \-file
-.IR file ]
 .RB [ \-outfile
 .IR outfile ]
 .RB [ \-rmmproc
 .RB [ \-outfile
 .IR outfile ]
 .RB [ \-rmmproc
@@ -155,7 +156,12 @@ switch directs
 .B mhfixmsg
 to use the specified
 file as the source message, rather than a message from a folder.
 .B mhfixmsg
 to use the specified
 file as the source message, rather than a message from a folder.
-If this file is \*(lq-\*(rq, then
+Only one file argument may be provided.  The
+.B \-file
+switch is implied if
+.I file
+is an absolute pathname.
+If the file is \*(lq-\*(rq, then
 .B mhfixmsg
 accepts the source message on the standard input stream.  If
 the
 .B mhfixmsg
 accepts the source message on the standard input stream.  If
 the
@@ -238,6 +244,24 @@ profile component and negates all prior
 .B \-rmmproc
 switches.
 .PP
 .B \-rmmproc
 switches.
 .PP
+.SS "Integration with inc"
+.B mhfixmsg
+can be used as an add-hook, as described in %docdir%/README-HOOKS.
+Note that add-hooks are called from all
+.B nmh
+programs that add a message to a folder, not just
+.BR inc .
+Alternatively, a simple shell alias or function can be used to
+call
+.B mhfixmsg
+immediately after a successful invocation of
+.BR inc .
+For example, with bash:
+.PP
+.RS 5
+alias inc='inc && mhfixmsg'
+.RE
+.PP
 .SS "Integration with procmail"
 By way of example, here is an excerpt from a procmailrc file
 that filters messages through
 .SS "Integration with procmail"
 By way of example, here is an excerpt from a procmailrc file
 that filters messages through
@@ -296,6 +320,7 @@ is checked.
 ^rmmproc:~^Program to delete original messages or files
 .fi
 .SH "SEE ALSO"
 ^rmmproc:~^Program to delete original messages or files
 .fi
 .SH "SEE ALSO"
+.IR inc (1),
 .IR mh-profile (5),
 .IR mhbuild (1),
 .IR mhlist (1),
 .IR mh-profile (5),
 .IR mhbuild (1),
 .IR mhlist (1),
@@ -322,4 +347,5 @@ If a folder is given, it will become the current folder.  The last
 message selected from a folder will become the current message.  If
 the
 .B \-file
 message selected from a folder will become the current message.  If
 the
 .B \-file
-switch is used, the context will not be modified.
+switch or an absolute pathname is used, the context will not be
+modified.
index ac013234f077710072a772e30e3cb383f20112c9..9c2df415bd76eaca867c84524db8351283990761 100755 (executable)
@@ -249,6 +249,10 @@ else
 fi
 
 
 fi
 
 
+# check implicit -file with absolute pathname
+run_test "mhfixmsg `mhpath last` -outfile /dev/null" ''
+
+
 # check handling of boundary string that appears in message body
 #
 cat >"$expected" <<EOF
 # check handling of boundary string that appears in message body
 #
 cat >"$expected" <<EOF
index 829697c74f8af8a0552c29aa0f193e5fe9fb4d35..20bb28356fd23683789b40aeb9d61520f145f4a5 100644 (file)
@@ -215,19 +215,16 @@ main (int argc, char **argv) {
             case NREPLACETEXTPLAINSW:
                 fx.replacetextplain = 0;
                 continue;
             case NREPLACETEXTPLAINSW:
                 fx.replacetextplain = 0;
                 continue;
-
             case FILESW:
                 if (! (cp = *argp++) || (*cp == '-' && cp[1]))
                     adios (NULL, "missing argument to %s", argp[-2]);
                 file = *cp == '-'  ?  add (cp, NULL)  :  path (cp, TFILE);
                 continue;
             case FILESW:
                 if (! (cp = *argp++) || (*cp == '-' && cp[1]))
                     adios (NULL, "missing argument to %s", argp[-2]);
                 file = *cp == '-'  ?  add (cp, NULL)  :  path (cp, TFILE);
                 continue;
-
             case OUTFILESW:
                 if (! (cp = *argp++) || (*cp == '-' && cp[1]))
                     adios (NULL, "missing argument to %s", argp[-2]);
                 outfile = *cp == '-'  ?  add (cp, NULL)  :  path (cp, TFILE);
                 continue;
             case OUTFILESW:
                 if (! (cp = *argp++) || (*cp == '-' && cp[1]))
                     adios (NULL, "missing argument to %s", argp[-2]);
                 outfile = *cp == '-'  ?  add (cp, NULL)  :  path (cp, TFILE);
                 continue;
-
             case RPROCSW:
                 if (!(rmmproc = *argp++) || *rmmproc == '-')
                     adios (NULL, "missing argument to %s", argp[-2]);
             case RPROCSW:
                 if (!(rmmproc = *argp++) || *rmmproc == '-')
                     adios (NULL, "missing argument to %s", argp[-2]);
@@ -235,7 +232,6 @@ main (int argc, char **argv) {
             case NRPRCSW:
                 rmmproc = NULL;
                 continue;
             case NRPRCSW:
                 rmmproc = NULL;
                 continue;
-
             case VERBSW:
                 verbosw = 1;
                 continue;
             case VERBSW:
                 verbosw = 1;
                 continue;
@@ -249,8 +245,14 @@ main (int argc, char **argv) {
                 adios (NULL, "only one folder at a time!");
             else
                 folder = pluspath (cp);
                 adios (NULL, "only one folder at a time!");
             else
                 folder = pluspath (cp);
-        } else
-                app_msgarg(&msgs, cp);
+        } else {
+            if (*cp == '/') {
+                /* Interpret a full path as a filename, not a message. */
+                file = add (cp, NULL);
+            } else {
+                app_msgarg (&msgs, cp);
+            }
+        }
     }
 
     SIGNAL (SIGQUIT, quitser);
     }
 
     SIGNAL (SIGQUIT, quitser);