summaryrefslogtreecommitdiffstats
path: root/include/inn/wire.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/inn/wire.h')
-rw-r--r--include/inn/wire.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/include/inn/wire.h b/include/inn/wire.h
new file mode 100644
index 0000000..bafae0b
--- /dev/null
+++ b/include/inn/wire.h
@@ -0,0 +1,46 @@
+/* $Id: wire.h 6028 2002-12-24 05:10:39Z rra $
+**
+** Wire format article utilities.
+**
+** Originally written by Alex Kiernan (alex.kiernan@thus.net)
+**
+** These routines manipulate wire format articles; in particular, they should
+** be safe in the presence of embedded NULs and UTF-8 characters.
+*/
+
+#ifndef INN_WIRE_H
+#define INN_WIRE_H 1
+
+#include <inn/defines.h>
+
+BEGIN_DECLS
+
+/* Given a pointer to the start of an article, locate the first octet
+ of the body (which may be the octet beyond the end of the buffer if
+ your article is bodyless). */
+char *wire_findbody(const char *, size_t);
+
+/* Given a pointer into an article and a pointer to the end of the article,
+ find the start of the next line or return NULL if there are no more lines
+ remaining in the article. */
+char *wire_nextline(const char *, const char *end);
+
+/* Given a pointer to the start of an article and the name of a header, find
+ the beginning of the value of the given header (the returned pointer will
+ be after the name of the header and any initial whitespace). Headers whose
+ only content is whitespace are ignored. If the header isn't found, returns
+ NULL.
+
+ WARNING: This function does not comply with RFC 2822's idea of header
+ content, particularly in its skipping of initial whitespace. */
+char *wire_findheader(const char *article, size_t, const char *header);
+
+/* Given a pointer inside a header's value and a pointer to the end of the
+ article, returns a pointer to the end of the header value (the \n at the
+ end of the terminating \r\n with folding taken into account), or NULL if no
+ such terminator was found before the end of the article. */
+char *wire_endheader(const char *header, const char *end);
+
+END_DECLS
+
+#endif /* INN_WIRE_H */