]> git.notmuchmail.org Git - notmuch/blobdiff - test/smtp-dummy.c
test: handle filenames that have directories in them
[notmuch] / test / smtp-dummy.c
index e58d0ad68d7b606650b4e04c19a1c64bc6d57286..86d43162d9750e029b134477ff3ec1f05e101317 100644 (file)
@@ -37,7 +37,9 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <netinet/ip.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
 #include <netdb.h>
 #include <unistd.h>
 
@@ -71,7 +73,7 @@ static int
 process_command (FILE *peer, FILE *output, const char *command)
 {
        if (STRNCMP_LITERAL (command, "EHLO ") == 0) {
-               fprintf (peer, "502\r\n");
+               fprintf (peer, "502 not implemented\r\n");
                fflush (peer);
        } else if (STRNCMP_LITERAL (command, "HELO ") == 0) {
                fprintf (peer, "250 localhost\r\n");
@@ -99,9 +101,6 @@ process_command (FILE *peer, FILE *output, const char *command)
 static void
 do_smtp_to_file (FILE *peer, FILE *output)
 {
-       char buf[4096];
-       ssize_t bytes;
-       char greeting[] = "220 localhost smtp-dummy\r\n";
        char *line = NULL;
        size_t line_size;
        ssize_t line_len;
@@ -130,7 +129,7 @@ main (int argc, char *argv[])
 
        if (argc != 2) {
                fprintf (stderr, "Usage: %s <output-file>\n", argv[0]);
-               exit (1);
+               return 1;
        }
 
        output_filename = argv[1];
@@ -138,14 +137,14 @@ main (int argc, char *argv[])
        if (output == NULL) {
                fprintf (stderr, "Failed to open %s for writing: %s\n",
                         output_filename, strerror (errno));
-               exit (1);
+               return 1;
        }
 
        sock = socket (AF_INET, SOCK_STREAM, 0);
        if (sock == -1) {
                fprintf (stderr, "Error: socket() failed: %s\n",
                         strerror (errno));
-               exit (1);
+               return 1;
        }
 
        reuse = 1;
@@ -153,15 +152,16 @@ main (int argc, char *argv[])
        if (err) {
                fprintf (stderr, "Error: setsockopt() failed: %s\n",
                         strerror (errno));
-               exit (1);
+               return 1;
        }
 
        hostinfo = gethostbyname ("localhost");
        if (hostinfo == NULL) {
                fprintf (stderr, "Unknown host: localhost\n");
-               exit (1);
+               return 1;
        }
 
+       memset (&addr, 0, sizeof (addr));
        addr.sin_family = AF_INET;
        addr.sin_port = htons (25025);
        addr.sin_addr = *(struct in_addr *) hostinfo->h_addr;
@@ -170,7 +170,7 @@ main (int argc, char *argv[])
                fprintf (stderr, "Error: bind() failed: %s\n",
                         strerror (errno));
                close (sock);
-               exit (1);
+               return 1;
        }
 
        err = listen (sock, 1);
@@ -178,7 +178,7 @@ main (int argc, char *argv[])
                fprintf (stderr, "Error: listen() failed: %s\n",
                         strerror (errno));
                close (sock);
-               exit (1);
+               return 1;
        }
 
        peer_addr_len = sizeof (peer_addr);
@@ -186,14 +186,14 @@ main (int argc, char *argv[])
        if (peer == -1) {
                fprintf (stderr, "Error: accept() failed: %s\n",
                         strerror (errno));
-               exit (1);
+               return 1;
        }
 
        peer_file = fdopen (peer, "w+");
        if (peer_file == NULL) {
                fprintf (stderr, "Error: fdopen() failed: %s\n",
                         strerror (errno));
-               return;
+               return 1;
        }
 
        do_smtp_to_file (peer_file, output);