static void copychunk(struct pipe_params *p)
static void copychunk(struct connection *p)
static void copychunk(struct pipe_params *p){	size_t room;	size_t bytestocopy;	char chunkbuf[16];	size_t chunkheaderlen;	if (p->nocontent) {		p->script_input.start = p->script_input.end = p->script_input.floor;		return;	}	room = p->client_output.ceiling - p->client_output.end;	bytestocopy = p->script_input.end - p->script_input.start;	if (bytestocopy > room)		bytestocopy = room;	if (bytestocopy && p->chunkit) {		chunkheaderlen = sprintf(chunkbuf, "%lx\r\n", (unsigned long) bytestocopy);		if (chunkheaderlen + 2 >= room)			bytestocopy = 0;		else {			if (bytestocopy + chunkheaderlen + 2 > room) {				bytestocopy -= chunkheaderlen + 2;				chunkheaderlen = sprintf(chunkbuf, "%lx\r\n", (unsigned long) bytestocopy);			}			memcpy(p->client_output.end, chunkbuf, chunkheaderlen);			p->client_output.end += chunkheaderlen;		}	}	if (bytestocopy) {		memcpy(p->client_output.end, p->script_input.start, bytestocopy);		p->client_output.end += bytestocopy;		p->script_input.start += bytestocopy;		if (p->script_input.start == p->script_input.end)			p->script_input.start = p->script_input.end = p->script_input.floor;		if (p->chunkit) {			memcpy(p->client_output.end, "\r\n", 2);			p->client_output.end += 2;		}	}}