about summary refs log tree commit diff
path: root/libevent/test/test-eof.c
diff options
context:
space:
mode:
authorRichard Nyberg <rnyberg@murmeldjur.se>2006-11-07 09:40:25 +0000
committerRichard Nyberg <rnyberg@murmeldjur.se>2006-11-07 09:40:25 +0000
commit5ccf414cbff49636a365a6bce2d2641be90ea412 (patch)
treea4305df50e7893cecb60822d6e1b50403e45e8be /libevent/test/test-eof.c
parent568d1163350f81be1f71b6c8b2c7b59fc4a4db86 (diff)
downloadbtpd-5ccf414cbff49636a365a6bce2d2641be90ea412.tar.gz
btpd-5ccf414cbff49636a365a6bce2d2641be90ea412.zip
Include libevent 1.2 in btpd.
Diffstat (limited to 'libevent/test/test-eof.c')
-rw-r--r--libevent/test/test-eof.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/libevent/test/test-eof.c b/libevent/test/test-eof.c
new file mode 100644
index 0000000..020c661
--- /dev/null
+++ b/libevent/test/test-eof.c
@@ -0,0 +1,68 @@
+/*
+ * Compile with:
+ * cc -I/usr/local/include -o time-test time-test.c -L/usr/local/lib -levent
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/socket.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include <event.h>
+
+int test_okay = 1;
+int called = 0;
+
+void
+read_cb(int fd, short event, void *arg)
+{
+	char buf[256];
+	int len;
+
+	len = read(fd, buf, sizeof(buf));
+
+	printf("%s: read %d%s\n", __func__,
+	    len, len ? "" : " - means EOF");
+
+	if (len) {
+		if (!called)
+			event_add(arg, NULL);
+	} else if (called == 1)
+		test_okay = 0;
+
+	called++;
+}
+
+int
+main (int argc, char **argv)
+{
+	struct event ev;
+	char *test = "test string";
+	int pair[2];
+
+	if (socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
+		return (1);
+
+	
+	write(pair[0], test, strlen(test)+1);
+	shutdown(pair[0], SHUT_WR);
+
+	/* Initalize the event library */
+	event_init();
+
+	/* Initalize one event */
+	event_set(&ev, pair[1], EV_READ, read_cb, &ev);
+
+	event_add(&ev, NULL);
+
+	event_dispatch();
+
+	return (test_okay);
+}
+