X-Git-Url: http://winboard.nl/cgi-bin?p=polyglot.git;a=blobdiff_plain;f=io.c;h=ff795d9df1d0638cfbbf7f57082cd6a836305d5f;hp=92d15181cdc77bdaaf99c36ef6bf3cd44252984e;hb=HEAD;hpb=a0f731f21d6aa26dbf7246039a1c66c2ade0533f diff --git a/io.c b/io.c index 92d1518..ff795d9 100644 --- a/io.c +++ b/io.c @@ -11,6 +11,7 @@ #include #include +#include #include #include "io.h" @@ -21,8 +22,6 @@ static const bool UseDebug = FALSE; static const bool UseCR = FALSE; -static const int StringSize = 4096; - static const char LF = '\n'; static const char CR = '\r'; @@ -63,6 +62,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 +91,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)); @@ -97,7 +117,14 @@ void io_get_update(io_t * io) { pos = io->in_size; size = BufferSize - pos; - if (size <= 0) my_fatal("io_get_update(): buffer overflow\n"); + + + if (size <= 0){ + // io->in_buffer[FormatBufferSize-20]='\0'; + // my_log("%s","io_get_update(): buffer too small; content starts with:\n"); + // my_log("[%s...]\n",io->in_buffer); + my_fatal("io_get_update(): buffer overflow\n"); + } // read as many data as possible n = my_read(io->in_fd,&io->in_buffer[pos],size); @@ -118,6 +145,7 @@ void io_get_update(io_t * io) { io->in_eof = TRUE; } + } // io_line_ready()