add outfile -F
authorAndrew Tridgell <tridge@samba.org>
Thu, 21 Aug 2008 22:30:29 +0000 (08:30 +1000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 21 Aug 2008 22:30:29 +0000 (08:30 +1000)
socklib/sock_sink.c

index 2acf3a3..715b9f5 100644 (file)
@@ -1,14 +1,19 @@
 #include "socklib.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
 
 
 static char *tcp_options="TCP_NODELAY IPTOS_THROUGHPUT";
 static int port=7001;
 static int bufsize=0x10000;
 static char *host="127.0.0.1";
+static const char *outfile;
 
 static void sender(void)
 {
-       int fd;
+       int fd, fd2 = -1;
        uint64_t total=0;
        char *buf;
        
@@ -29,9 +34,19 @@ static void sender(void)
 
        start_timer();
 
+       if (outfile) {
+               fd2 = open(outfile, O_WRONLY|O_CREAT|O_TRUNC, 0600);
+       }
+
        while (1) {
                int ret = read(fd, buf, bufsize);
                if (ret <= 0) break;
+               if (fd2 != -1) {
+                       if (write(fd2, buf, ret) != ret) {
+                               printf("Write error to %s\n", outfile);
+                               exit(1);
+                       }
+               }
                total += ret;
                if (end_timer() > 2.0) {
                        report_time(total);
@@ -44,7 +59,7 @@ static void sender(void)
 
 static void usage(void)
 {
-       printf("-p port\n-t socket options\n-H host\n-b bufsize\n\n");
+       printf("-p port\n-t socket options\n-H host\n-b bufsize [-F outfile]\n\n");
 }
 
 int main(int argc, char *argv[])
@@ -52,7 +67,7 @@ int main(int argc, char *argv[])
        int opt;
        extern char *optarg;
 
-       while ((opt = getopt (argc, argv, "p:t:H:b:h")) != EOF) {
+       while ((opt = getopt (argc, argv, "p:t:H:b:hF:")) != EOF) {
                switch (opt) {
                case 'p':
                        port = strtol(optarg, NULL, 0);
@@ -66,6 +81,9 @@ int main(int argc, char *argv[])
                case 'b':
                        bufsize = strtol(optarg, NULL, 0);
                        break;
+               case 'F':
+                       outfile = optarg;
+                       break;
 
                case 'h':
                default: