diff options
author | kraxel <kraxel> | 2004-04-21 11:55:44 +0000 |
---|---|---|
committer | kraxel <kraxel> | 2004-04-21 11:55:44 +0000 |
commit | c4d7dacb41039e087d20b8889a4d13bd4c9928f2 (patch) | |
tree | 0aef1f53f2e8cd55c4db8915d9d9a1265dd97adc /input-recv.c | |
download | input-c4d7dacb41039e087d20b8889a4d13bd4c9928f2.tar.gz |
Initial revision
Diffstat (limited to 'input-recv.c')
-rw-r--r-- | input-recv.c | 87 |
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: + */ |