HylaFAX The world's most advanced open source fax server |
On Feb 6, 2008 9:04 PM, Lee Howard <faxguy@xxxxxxxxxxxxxxxx> wrote:
Riccardo Magliocchetti wrote:
This is very interesting. Does this mean that there will be a way to filterIs this something that you want?
the stuff that has not "content-disposition: attachment"?
Sort of. These feature would let me remove the html body while keeping html attachments. Useful especially when the html body is empty.
diff -Nru hylafax.orig/faxmail/faxmail.c++ hylafax/faxmail/faxmail.c++ --- hylafax.orig/faxmail/faxmail.c++ 2008-02-02 22:51:05.000000000 -0800 +++ hylafax/faxmail/faxmail.c++ 2008-02-07 10:12:06.572701104 -0800 @@ -707,13 +707,31 @@ bool faxMailApp::runConverter(const fxStr& app, const fxStr& tmp, MIMEState& mime) { - const char* av[3]; + const char* av[6]; av[0] = strrchr(app, '/'); if (av[0] == NULL) av[0] = app; // XXX should probably pass in MIME state like charset - av[1] = tmp; - av[2] = NULL; + u_int i = 1; + av[i++] = tmp; + fxStr label; + if (mime.getDescription() != "") { + label = "description:"; + label.append(mime.getDescription()); + av[i++] = (const char*) label; + } + if (mime.getContentID() != "") { + label = "id:"; + label.append(mime.getContentID()); + av[i++] = (const char*) label; + } + if (mime.getDisposition() != "") { + label = "disposition:"; + label.append(mime.getDisposition()); + av[i++] = (const char*) label; + } + av[i++] = NULL; + pid_t pid = fork(); switch (pid) { case -1: // error diff -Nru hylafax.orig/faxmail/MIMEState.c++ hylafax/faxmail/MIMEState.c++ --- hylafax.orig/faxmail/MIMEState.c++ 2008-02-02 22:51:05.000000000 -0800 +++ hylafax/faxmail/MIMEState.c++ 2008-02-07 09:43:05.726349976 -0800 @@ -159,6 +159,9 @@ s = msg.findHeader("Content-ID"); if (s) cid = *s; + s = msg.findHeader("Content-Disposition"); + if (s) + disp = *s; return (true); } diff -Nru hylafax.orig/faxmail/MIMEState.h hylafax/faxmail/MIMEState.h --- hylafax.orig/faxmail/MIMEState.h 2008-02-02 22:51:05.000000000 -0800 +++ hylafax/faxmail/MIMEState.h 2008-02-07 09:45:50.539294600 -0800 @@ -62,6 +62,7 @@ fxStr subtype; // content subtype fxStr desc; // content description fxStr cid; // content ID + fxStr disp; // content disposition fxStr boundary; // multipart boundary marker u_int blen; // adjusted boundary length bool lastPart; // true if last multipart boundary seen @@ -93,6 +94,7 @@ bool isParent(const char* type, const char* subtype) const; const fxStr& getDescription(void) const; const fxStr& getContentID(void) const; + const fxStr& getDisposition(void) const; virtual void setEncoding(const char*); Encoding getEncoding(void) const; @@ -118,4 +120,5 @@ inline const fxStr& MIMEState::getSubType(void) const { return subtype; } inline const fxStr& MIMEState::getDescription(void) const { return desc; } inline const fxStr& MIMEState::getContentID(void) const { return cid; } +inline const fxStr& MIMEState::getDisposition(void) const { return disp; } #endif /* _MIMEState_ */ diff -Nru hylafax.orig/man/faxmail.1 hylafax/man/faxmail.1 --- hylafax.orig/man/faxmail.1 2008-02-02 22:51:05.000000000 -0800 +++ hylafax/man/faxmail.1 2008-02-07 10:19:34.325632312 -0800 @@ -598,7 +598,10 @@ body parts. The default pathname is ${LIBDATA}/faxmail. \*(Fx comes with default converter scripts for TIFF and PDF, and they can be found in that path and used as a -reference for constructing other converters. +reference for constructing other converters. The script is passed the +filename of the body part for conversion as the first parameters. Subsequent +parameters are the MIME Content-Description, Content-ID, and Content-Disposition +information prefixed with ``description:'', ``id:'', and ``disposition:'' respectively. .TP 15 .B Orientation Control whether pages are oriented horizontally (``landscape'') diff -Nru hylafax.orig/man/hylafax-config.4f hylafax/man/hylafax-config.4f