X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/859d1e1a78f6c61a062bfb534652f5ce3ffb672f..03b8e51a39f9c4c4c2182512602eb22736751a0c:/h/mhparse.h diff --git a/h/mhparse.h b/h/mhparse.h index e8e7be88..72188c6d 100644 --- a/h/mhparse.h +++ b/h/mhparse.h @@ -68,6 +68,16 @@ struct cefile { /* * Primary structure for handling Content (Entity) + * + * Some more explanation of this: + * + * This structure recursively describes a complete MIME message. + * At the top level, the c_first_hf list has a list of all message + * headers. If the content-type is multipart (c_type == CT_MULTIPART) + * then c_ctparams will contain a pointer to a struct multipart. + * A struct multipart contains (among other trhings) a linked list + * of struct part elements, and THOSE contain a pointer to the sub-part's + * Content structure. */ struct Content { /* source (read) file */ @@ -99,6 +109,7 @@ struct Content { /* Content-Transfer-Encoding info (decoded contents) */ struct cefile c_cefile; /* structure holding decoded content */ int c_encoding; /* internal flag for encoding type */ + int c_reqencoding; /* Requested encoding (by mhbuild) */ /* Content-MD5 info */ int c_digested; /* have we seen this header before? */ @@ -275,6 +286,35 @@ extern struct str2init str2methods[]; */ int pidcheck (int); CT parse_mime (char *); + +/* + * Translate a composition file into a MIME data structure. Arguments are: + * + * infile - Name of input filename + * autobuild - A flag to indicate if the composition file parser is + * being run in automatic mode or not. In auto mode, + * if a MIME-Version header is encountered it is assumed + * that the composition file is already in MIME format + * and will not be processed further. Otherwise, an + * error is generated. + * dist - A flag to indicate if we are being run by "dist". In + * that case, add no MIME headers to the message. Existing + * headers will still be encoded by RFC 2047. + * directives - A flag to control whether or not build directives are + * processed by default. + * encoding - The default encoding to use when doing RFC 2047 header + * encoding. Must be one of CE_UNKNOWN, CE_BASE64, or + * CE_QUOTED. + * maxunencoded - The maximum line length before the default encoding for + * text parts is quoted-printable. + * + * Returns a CT structure describing the resulting MIME message. If the + * -auto flag is set and a MIME-Version header is encountered, the return + * value is NULL. + */ +CT build_mime (char *infile, int autobuild, int dist, int directives, + int encoding, size_t maxunencoded); + int add_header (CT, char *, char *); int get_ctinfo (char *, CT, int); int params_external (CT, int); @@ -286,5 +326,9 @@ char *ct_subtype_str (int, int); const struct str2init *get_ct_init (int); const char *ce_str (int); const struct str2init *get_ce_method (const char *); +int parse_header_attrs (const char *, int, char **, CI, int *); +char *update_attr (char *, const char *, const char *e); +char *content_charset (CT); +int convert_charset (CT, char *, int *); extern int checksw; /* Add Content-MD5 field */