X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Frfc822%2Frfc822.h;h=e770115c5c6a03fb0e700542752e057ead80d76f;hp=1170c113e92a236f149e677d45024980574a8cdb;hb=6abc867fce8c3eba40eb26092d31e34b47dd9165;hpb=4be05500e605ccc0a68f1d3704c12ffd03cf2dfb;ds=sidebyside diff --git a/ccan/rfc822/rfc822.h b/ccan/rfc822/rfc822.h index 1170c113..e770115c 100644 --- a/ccan/rfc822/rfc822.h +++ b/ccan/rfc822/rfc822.h @@ -22,6 +22,9 @@ struct rfc822_msg; * callback is called with a string describing where the failure * occurred, which can be used to log a more useful error message. * + * Note that tal also has a default function which calls abort() on allocation + * failure: see tal_set_backend(). + * * Example: * static void my_handler(const char *str) * { @@ -53,15 +56,15 @@ static inline bool rfc822_iswsp(char c) * inconsistent, and the function will abort. If the state of the * structure is valid it returns it unchanged. * - * Returns the list head if the list is consistent, NULL if not (it - * can never return NULL if @abortstr is set). + * Returns the @msg if the message is consistent, NULL if not (it can + * never return NULL if @abortstr is set). */ struct rfc822_msg *rfc822_check(const struct rfc822_msg *msg, const char *abortstr); /** * rfc822_start - start parsing a new rfc822 message - * @ctx: talloc context to make allocations in + * @ctx: tal context to make allocations in (or talloc #ifdef TAL_USE_TALLOC) * @p: pointer to a buffer containing the message text * @len: length of the message text * @@ -168,4 +171,22 @@ struct bytestring rfc822_header_raw_value(struct rfc822_msg *msg, struct bytestring rfc822_header_unfolded_value(struct rfc822_msg *msg, struct rfc822_header *hdr); +/** + * rfc822_header_is - determine if a header is of a given name + * @msg: message + * @hdr: a header handle + * @name: header name + * + * This returns true if the header field @hdr has name @name (case + * insensitive), otherwise false. + */ +bool rfc822_header_is(struct rfc822_msg *msg, struct rfc822_header *hdr, + const char *name); + +struct rfc822_header *rfc822_first_header_of_name(struct rfc822_msg *msg, + const char *name); +struct rfc822_header *rfc822_next_header_of_name(struct rfc822_msg *msg, + struct rfc822_header *hdr, + const char *name); + #endif /* CCAN_RFC822_H_ */