]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libhttpd/gethead.c
upas/Mail: avoid showing empty To: and CC: lines in compose windows
[plan9front.git] / sys / src / libhttpd / gethead.c
1 #include <u.h>
2 #include <libc.h>
3 #include <bin.h>
4 #include <httpd.h>
5
6 /*
7  * read in some header lines, either one or all of them.
8  * copy results into header log buffer.
9  */
10 int
11 hgethead(HConnect *c, int many)
12 {
13         Hio *hin;
14         char *s, *p, *pp;
15         int n;
16
17         hin = &c->hin;
18         for(;;){
19                 s = (char*)hin->pos;
20                 pp = s;
21                 while(p = memchr(pp, '\n', (char*)hin->stop - pp)){
22                         if(!many || p == pp || (p == pp + 1 && *pp == '\r')){
23                                 pp = p + 1;
24                                 break;
25                         }
26                         pp = p + 1;
27                 }
28                 hin->pos = (uchar*)pp;
29                 n = pp - s;
30                 if(c->hstop + n > &c->header[HBufSize])
31                         return -1;
32                 memmove(c->hstop, s, n);
33                 c->hstop += n;
34                 *c->hstop = '\0';
35                 if(p != nil)
36                         return 0;
37                 if(hreadbuf(hin, hin->pos) == nil || hin->state == Hend)
38                         return -1;
39         }
40 }