X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=h%2Fprototypes.h;h=e6e7dc14b1e71d57113876e2ae5b4281a00f4b75;hb=3cbdaea22c94d1c1d13e11b1ea6e55d3d9408771;hp=848115fdb842bfd54ed659cde1575dc392cb55f0;hpb=33516e5b74bb4bb5c626d4ee42bd3a7a9faaabef;p=mmh diff --git a/h/prototypes.h b/h/prototypes.h index 848115f..e6e7dc1 100644 --- a/h/prototypes.h +++ b/h/prototypes.h @@ -112,6 +112,23 @@ int uprf(char *, char *); int vfgets(FILE *, char **); char *write_charset_8bit(void); +/* + * Remove quotes and quoted-pair sequences from RFC-5322 atoms. + * + * Currently the actual algorithm is simpler than it technically should + * be: any quotes are simply eaten, unless they're preceded by the escape + * character (\). This seems to be sufficient for our needs for now. + * + * Arguments: + * + * input - The input string + * output - The output string; is assumed to have at least as much + * room as the input string. At worst the output string will + * be the same size as the input string; it might be smaller. + * + */ +void unquote_string(const char *input, char *output); + int mh_strcasecmp(const char *s1, const char *s2); @@ -160,3 +177,20 @@ int is_readonly(struct msgs *); void set_readonly(struct msgs *); int other_files(struct msgs *); void set_other_files(struct msgs *); + +/* + * Encode a message header using RFC 2047 encoding. If the message contains + * no non-ASCII characters, then leave the header as-is. + * + * Arguments include: + * + * name - Message header name + * value - Message header content; must point to allocated memory + * (may be changed if encoding is necessary) + * charset - Charset used for encoding. If NULL, obtain from system + * locale. + * + * Returns 0 on success, any other value on failure. + */ + +int encode_rfc2047(const char *name, char **value, const char *charset);