X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/942561da2455ee50a1eb82c8c4f2bdb5e25133d1..cf57870921b26703aad420c6741c524b33736ff1:/h/mhparse.h diff --git a/h/mhparse.h b/h/mhparse.h index 08dd77c1..3641f7a6 100644 --- a/h/mhparse.h +++ b/h/mhparse.h @@ -87,9 +87,29 @@ struct cefile { * 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 + * A struct multipart contains (among other things) a linked list * of struct part elements, and THOSE contain a pointer to the sub-part's * Content structure. + * + * An extra note for message/external-body parts. The enclosing + * content structure is marked as a message/external-body; the c_ctparams + * contains a pointer to a struct exbody, which contains a pointer to + * (among other things) the "real" content (e.g., application/octet-stream). + * The "real" content structure has the c_ctexbody pointer back to the + * same struct exbody sees in the enclosing content structure (the struct + * exbody contains parent pointers if you need to traverse up the content + * structure). Hopefully this makes it clearer: + * + * Enclosing content: + * Type: message/external-body + * c_ctparams: pointer to "struct exbody" + * c_ctexbody: NULL + * + * "Real" content: + * Type: application/octet-stream (or whatever) + * c_ctparams: NULL + * c_ctexbody: pointer to "struct exbody" + * */ struct Content { /* source (read) file */ @@ -427,6 +447,21 @@ int list_switch(CT ct, int toplevel, int realsize, int verbose, int debug, char *output_params(size_t initialwidth, PM params, int *offsetout, int external); +/* + * Encode a parameter value using RFC 2231 encode. + * + * Arguments are: + * + * pm - PM containing the parameter value and related info. + * output - Output buffer. + * len - Size, in octets, of output buffer. + * valuelen - Number of characters in the value + * valueoff - Offset into value field (pm->pm_value). + * index - If 0, output character set and language tag. + */ +size_t encode_param(PM pm, char *output, size_t len, size_t valuelen, + size_t valueoff, int index); + /* * Add a parameter to the parameter linked list. *