add a few more tools. most useful: round.c
[tools.git] / tools / writeonlynet.c
diff --git a/tools/writeonlynet.c b/tools/writeonlynet.c
new file mode 100644 (file)
index 0000000..3bef9f9
--- /dev/null
@@ -0,0 +1,27 @@
+#include <jh.h>
+#include <unistd.h>
+
+int main(int argc, char **argv) {
+  if (argc != 3) xperror("invocation: <host> <port>", 0);
+  int s = netopen(argv[1], argv[2], JH_TCP_HINTS);
+  if (s < 0) {
+    fprintf(stderr, "unable to connect: %s\n", gai_strerror(s));
+    exit(1);
+  }
+  while (1) {
+    char buf[4096];
+    fprintf(stderr, "reading...\n");
+    ssize_t count = fail_on_neg(read(0, buf, sizeof(buf)), "read failed", 1);
+    if (count == 0) return 0;
+    fprintf(stderr, "read %zd chars, writing...\n", count);
+    ssize_t wcount = fail_on_neg(write(s, buf, count), "write failed", 1);
+    if (wcount == 0) {
+      fprintf(stderr, "zero write! ending.\n");
+      return 1;
+    }
+    if (wcount != count) {
+      fprintf(stderr, "wrong write size! ending.\n");
+      return 1;
+    }
+  }
+}