int serve(const char *, const char *);
void putcrlf(int, char *);
+static void
+strip_cr(char *buf, ssize_t *len)
+{
+ ssize_t src, dst;
+ for (src = dst = 0; src < *len; src++) {
+ buf[dst] = buf[src];
+ if (buf[src] != '\r') {
+ dst++;
+ }
+ }
+ *len -= src - dst;
+}
+
static void
save_req(int conn, FILE *req)
{
}
if (r < 0) {
e = errno;
- fputs("\n", req); /* req body usually has no newline */
+ putc('\n', req); /* req body usually has no newline */
fclose(req);
if (e != EAGAIN && e != EWOULDBLOCK) {
fprintf(stderr, "Unable to read socket: %s\n", strerror(e));
* all done. */
return;
}
- /* make tests simpler by eliding carriage-returns? */
+ strip_cr(buf, &r);
fwrite(buf, 1, r, req);
}
}