Avoid recursion when processing residual inbuf data.
[shim.git] / headers.h
blob1019d616a409a402ee2bf8ad7dd1b289c1194f0a
1 #ifndef _HEADERS_H_
2 #define _HEADERS_H_
4 #include <sys/queue.h>
6 /* Use a list of strings to preserve any folding. */
7 struct val_line {
8 TAILQ_ENTRY(val_line) next;
9 size_t len;
10 char str[0];
12 TAILQ_HEAD(val_line_list, val_line);
14 struct header {
15 TAILQ_ENTRY(header) next;
16 size_t val_len;
17 struct val_line_list val;
18 char key[0];
20 TAILQ_HEAD(header_list, header);
22 struct evbuffer;
24 void headers_add_key(struct header_list *headers, const char *key, size_t n);
25 void headers_add_val(struct header_list *headers, const char *val, size_t n);
26 void headers_add_key_val(struct header_list *headers, const char *key,
27 const char *val);
28 void headers_dump(struct header_list *headers, struct evbuffer *buf);
29 int headers_load(struct header_list *headers, struct evbuffer *buf);
30 int headers_has_key(struct header_list *headers, const char *key);
31 char *headers_find(struct header_list *headers, const char *key);
32 int headers_remove(struct header_list *headers, const char *key);
33 void headers_clear(struct header_list *headers);
35 #endif