Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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
}