X-Git-Url: http://winboard.nl/cgi-bin?p=polyglot.git;a=blobdiff_plain;f=io.c;h=ff795d9df1d0638cfbbf7f57082cd6a836305d5f;hp=478f731d8a6ee1c40ce3663a73741b8db041a7df;hb=HEAD;hpb=aaf072500213db1bed274a2dd8ebe711f21ab898 diff --git a/io.c b/io.c index 478f731..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) { @@ -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()