aboutsummaryrefslogtreecommitdiffstats
path: root/input-recv.c
diff options
context:
space:
mode:
authorkraxel <kraxel>2004-04-21 11:55:44 +0000
committerkraxel <kraxel>2004-04-21 11:55:44 +0000
commitc4d7dacb41039e087d20b8889a4d13bd4c9928f2 (patch)
tree0aef1f53f2e8cd55c4db8915d9d9a1265dd97adc /input-recv.c
downloadinput-c4d7dacb41039e087d20b8889a4d13bd4c9928f2.tar.gz
Initial revision
Diffstat (limited to 'input-recv.c')
-rw-r--r--input-recv.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/input-recv.c b/input-recv.c
new file mode 100644
index 0000000..4a59f3c
--- /dev/null
+++ b/input-recv.c
@@ -0,0 +1,87 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+#include "input.h"
+#include "tcp.h"
+
+/* ------------------------------------------------------------------ */
+
+static int usage(char *prog, int error)
+{
+ fprintf(error ? stderr : stdout,
+ "usage: %s"
+ "\n",
+ prog);
+ exit(error);
+}
+
+int main(int argc, char *argv[])
+{
+ char *addr = NULL;
+ char *port = NULL;
+ char *host = "localhost";
+ char *serv = "1234";
+ struct addrinfo ask;
+ int c,sock;
+
+ memset(&ask,0,sizeof(ask));
+ ask.ai_family = PF_UNSPEC;
+ ask.ai_socktype = SOCK_STREAM;
+
+ for (;;) {
+ if (-1 == (c = getopt(argc, argv, "h")))
+ break;
+ switch (c) {
+ case 'h':
+ usage(argv[0],0);
+ default:
+ usage(argv[0],1);
+ }
+ }
+
+ tcp_verbose = 1;
+ sock = tcp_connect(&ask,addr,port,host,serv);
+ if (-1 == sock)
+ exit(1);
+
+ for (;;) {
+ struct input_event ev;
+ fd_set set;
+ int rc;
+
+ FD_ZERO(&set);
+ FD_SET(sock,&set);
+ rc = select(sock+1,&set,NULL,NULL,NULL);
+ if (1 != rc) {
+ perror("select");
+ exit(1);
+ }
+
+ rc = read(sock,&ev,sizeof(ev));
+ if (rc != sizeof(ev)) {
+ fprintf(stderr,"read ret=%d (expected %d), errno=%s\n",
+ rc,(int)sizeof(ev),strerror(errno));
+ exit(1);
+ }
+
+ /* convert from network byte order ... */
+ ev.time.tv_sec = ntohl(ev.time.tv_sec);
+ ev.time.tv_usec = ntohl(ev.time.tv_usec);
+ ev.type = ntohs(ev.type);
+ ev.code = ntohs(ev.code);
+ ev.value = ntohl(ev.value);
+
+ print_event(&ev);
+ }
+
+ return 0;
+}
+
+/* ---------------------------------------------------------------------
+ * Local variables:
+ * c-basic-offset: 8
+ * End:
+ */