]> diplodocus.org Git - nmh/blobdiff - test/fakehttp.c
new.c: Order two return statements to match comment.
[nmh] / test / fakehttp.c
index f773a73d53454f735dff42beb71571f0924e560b..b18eb23050492fdb4ee4b1833cb4ed6263696259 100644 (file)
 #include <string.h>
 #include <unistd.h>
 
 #include <string.h>
 #include <unistd.h>
 
-#define LINESIZE 1024
 #define PIDFN "/tmp/fakehttp.pid"
 
 int serve(const char *, const char *);
 void putcrlf(int, char *);
 
 #define PIDFN "/tmp/fakehttp.pid"
 
 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)
 {
 static void
 save_req(int conn, FILE *req)
 {
@@ -55,7 +67,7 @@ save_req(int conn, FILE *req)
         }
         if (r < 0) {
             e = errno;
         }
         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));
             fclose(req);
             if (e != EAGAIN && e != EWOULDBLOCK) {
                 fprintf(stderr, "Unable to read socket: %s\n", strerror(e));
@@ -66,7 +78,7 @@ save_req(int conn, FILE *req)
              * all done. */
             return;
         }
              * all done. */
             return;
         }
-        /* make tests simpler by eliding carriage-returns? */
+        strip_cr(buf, &r);
         fwrite(buf, 1, r, req);
     }
 }
         fwrite(buf, 1, r, req);
     }
 }