#include <errno.h>
#include <ctype.h>
#include <stdio.h>
+#include <fcntl.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
{
char *p;
- if(buf->d > 0) {
- for(p = buf->b; (p - buf->b < buf->d) && isspace(*p); p++);
- memmove(buf->b, p, buf->d -= (p - buf->b));
+ for(p = buf->b; (p - buf->b < buf->d) && isspace(*p); p++);
+ memmove(buf->b, p, buf->d -= (p - buf->b));
+ if(buf->d > 0)
for(p = buf->b + buf->d - 1; (p > buf->b) && isspace(*p); p--, buf->d--);
- }
}
int parseheaders(struct hthead *head, FILE *in)
head->headers[i][1] = sstrdup(val);
}
+void headrmheader(struct hthead *head, const char *name)
+{
+ int i;
+
+ for(i = 0; i < head->noheaders; i++) {
+ if(!strcasecmp(head->headers[i][0], name)) {
+ free(head->headers[i][0]);
+ free(head->headers[i][1]);
+ free(head->headers[i]);
+ memmove(head->headers + i, head->headers + i + 1, sizeof(head->headers) * (--head->noheaders - i));
+ return;
+ }
+ }
+}
+
int writeresp(FILE *out, struct hthead *resp)
{
int i;
if((fd = recvfd(sock, &buf.b, &buf.d)) < 0) {
return(-1);
}
+ fcntl(fd, F_SETFD, FD_CLOEXEC);
buf.s = buf.d;
p = buf.b;
l = buf.d;