X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=io.c;h=6e9dde76808518e4abd6c1adcc3134ccb9b529c9;hb=de010509fa0e57ba955da6512c714fbff8606af3;hp=88eb04544b65fcb378d6fffb71eebeb21f6ad212;hpb=e15efca6667b2673b4c1a5879a6917eab6800e58;p=polyglot.git diff --git a/io.c b/io.c index 88eb045..6e9dde7 100644 --- a/io.c +++ b/io.c @@ -11,6 +11,7 @@ #include #include +#include #include #include "io.h" @@ -63,6 +64,27 @@ void io_init(io_t * io) { ASSERT(io_is_ok(io)); } +// io_peek() + +bool io_peek(io_t * io){ + fd_set set[1]; + int fd_max; + int ret; + struct timeval tv; + tv.tv_sec=0; + tv.tv_usec=0; + + FD_ZERO(set); + FD_SET(io->in_fd,set); + fd_max=io->in_fd; + ret=select(fd_max+1,set,NULL,NULL,&tv); + if(ret>0){ + return TRUE; + }else{ + return FALSE; + } +} + // io_close() void io_close(io_t * io) { @@ -71,7 +93,7 @@ void io_close(io_t * io) { ASSERT(io->out_fd>=0); - my_log("Adapter>%s: EOF\n",io->name); + my_log("Adapter->%s: EOF\n",io->name); if (close(io->out_fd) == -1) { my_fatal("io_close(): close(): %s\n",strerror(errno)); @@ -196,8 +218,7 @@ bool io_get_line(io_t * io, char string[], int size) { void io_send(io_t * io, const char format[], ...) { - va_list arg_list; - char string[StringSize]; + char string[FormatBufferSize]; int len; ASSERT(io_is_ok(io)); @@ -207,9 +228,7 @@ void io_send(io_t * io, const char format[], ...) { // format - va_start(arg_list,format); - vsprintf(string,format,arg_list); - va_end(arg_list); + CONSTRUCT_ARG_STRING(format,string); // append string to buffer @@ -245,8 +264,7 @@ void io_send(io_t * io, const char format[], ...) { void io_send_queue(io_t * io, const char format[], ...) { - va_list arg_list; - char string[StringSize]; + char string[FormatBufferSize]; int len; ASSERT(io_is_ok(io)); @@ -256,9 +274,7 @@ void io_send_queue(io_t * io, const char format[], ...) { // format - va_start(arg_list,format); - vsprintf(string,format,arg_list); - va_end(arg_list); + CONSTRUCT_ARG_STRING(format,string); // append string to buffer