Fix runtest-read1.
authorJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 27 Nov 2011 21:07:50 +0000 (22:07 +0100)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 27 Nov 2011 21:07:50 +0000 (22:07 +0100)
bin/expect-read1 [new file with mode: 0755]
src/read1.c [new file with mode: 0644]

diff --git a/bin/expect-read1 b/bin/expect-read1
new file mode 100755 (executable)
index 0000000..574bf59
--- /dev/null
@@ -0,0 +1,3 @@
+#! /bin/sh
+export LD_PRELOAD=$HOME/redhat/src/read1.so
+exec /usr/bin/expect "$@"
diff --git a/src/read1.c b/src/read1.c
new file mode 100644 (file)
index 0000000..47ba4b7
--- /dev/null
@@ -0,0 +1,22 @@
+#define _GNU_SOURCE 1
+#include <dlfcn.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <stdlib.h>
+
+ssize_t
+read (int fd, void *buf, size_t count)
+{
+  static ssize_t (*read2) (int fd, void *buf, size_t count) = NULL;
+
+  if (read2 == NULL)
+    {
+      unsetenv ("LD_PRELOAD");
+      read2 = dlsym (RTLD_NEXT, "read");
+    }
+
+  if (count > 0 && isatty (fd) >= 1)
+    count = 1;
+
+  return read2 (fd, buf, count);
+}