From: Richard Kettlewell Date: Sat, 22 Dec 2007 13:59:32 +0000 (+0000) Subject: comments X-Git-Tag: 3.0~181 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/commitdiff_plain/78d8e29d8ce116c875f9db946eb961aa58dcba98?hp=07969f9b91b62371ac714a64b87675706718b6c0 comments --- diff --git a/lib/base64.c b/lib/base64.c index 8015b1a..1a0dca2 100644 --- a/lib/base64.c +++ b/lib/base64.c @@ -38,6 +38,9 @@ static const char mime_base64_table[] = /** @brief Convert MIME base64 * @param s base64 data * @return Decoded data + * + * See RFC + * 2045 s6.8. */ char *mime_base64(const char *s, size_t *nsp) { struct dynstr d; @@ -76,6 +79,9 @@ char *mime_base64(const char *s, size_t *nsp) { * @return Encoded data * * This function does not attempt to split up lines. + * + * See RFC + * 2045 s6.8. */ char *mime_to_base64(const uint8_t *s, size_t ns) { struct dynstr d[1]; diff --git a/lib/mime.c b/lib/mime.c index 7575b7b..a97c4d1 100644 --- a/lib/mime.c +++ b/lib/mime.c @@ -209,6 +209,8 @@ static const char *parsetoken(const char *s, char **valuep, * @param parameternamep Where to store parameter name * @param parameternvaluep Wher to store parameter value * @return 0 on success, non-0 on error + * + * See RFC 2045 s5. */ int mime_content_type(const char *s, char **typep, @@ -254,7 +256,12 @@ int mime_content_type(const char *s, * @param s Start of message * @param callback Called for each header field * @param u Passed to callback - * @return Pointer to decoded body (might be in original string) + * @return Pointer to decoded body (might be in original string), or NULL on error + * + * This does an RFC 822-style parse and honors Content-Transfer-Encoding as + * described in RFC 2045 + * s6. @p callback is called for each header field encountered, in order, + * with ASCII characters in the header name forced to lower case. */ const char *mime_parse(const char *s, int (*callback)(const char *name, const char *value, @@ -291,6 +298,7 @@ const char *mime_parse(const char *s, return s; } +/** @brief Match the boundary string */ static int isboundary(const char *ptr, const char *boundary, size_t bl) { return (ptr[0] == '-' && ptr[1] == '-' @@ -301,6 +309,7 @@ static int isboundary(const char *ptr, const char *boundary, size_t bl) { && (iscrlf(ptr + bl + 4) || *(ptr + bl + 4) == 0)))); } +/** @brief Match the final boundary string */ static int isfinal(const char *ptr, const char *boundary, size_t bl) { return (ptr[0] == '-' && ptr[1] == '-' @@ -312,10 +321,14 @@ static int isfinal(const char *ptr, const char *boundary, size_t bl) { /** @brief Parse a multipart MIME body * @param s Start of message - * @param callback CAllback for each part + * @param callback Callback for each part * @param boundary Boundary string * @param u Passed to callback * @return 0 on success, non-0 on error + * + * See RFC 2046 + * s5.1. @p callback is called for each part (not yet decoded in any way) + * in succession; you should probably call mime_parse() for each part. */ int mime_multipart(const char *s, int (*callback)(const char *s, void *u), @@ -351,6 +364,9 @@ int mime_multipart(const char *s, * @param parameternamep Where to store parameter name * @param parameternvaluep Wher to store parameter value * @return 0 on success, non-0 on error + * + * See RFC 2388 s3 + * and RFC 2183. */ int mime_rfc2388_content_disposition(const char *s, char **dispositionp, @@ -389,6 +405,9 @@ int mime_rfc2388_content_disposition(const char *s, /** @brief Convert MIME quoted-printable * @param s Quoted-printable data * @return Decoded data + * + * See RFC 2045 + * s6.7. */ char *mime_qp(const char *s) { struct dynstr d;