diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-06-08 12:38:15 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2005-06-08 12:38:15 +0000 |
| commit | 62b8a649fcae500c983215fac2e5202916c0195f (patch) | |
| tree | 09cda62e0d1be6d3b1db4f3761ac418ad01c50b6 /lib/base/buffer.cpp | |
| parent | 94284f21b07f1756120e8b6f5dd53e485a9ff66d (diff) | |
| download | enigma2-62b8a649fcae500c983215fac2e5202916c0195f.tar.gz enigma2-62b8a649fcae500c983215fac2e5202916c0195f.zip | |
merge some code with enigma code
Diffstat (limited to 'lib/base/buffer.cpp')
| -rw-r--r-- | lib/base/buffer.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/lib/base/buffer.cpp b/lib/base/buffer.cpp index 07e9d7f1..9839b3e8 100644 --- a/lib/base/buffer.cpp +++ b/lib/base/buffer.cpp @@ -120,23 +120,22 @@ int eIOBuffer::fromfile(int fd, int len) while (len) { int tc=len; - int r; + int r=0; if (buffer.empty() || (allocationsize == buffer.back().len)) addblock(); if (tc > allocationsize-buffer.back().len) tc=allocationsize-buffer.back().len; r=::read(fd, buffer.back().data+buffer.back().len, tc); buffer.back().len+=r; - len-=r; - if (r < 0) + if (r < 0 && errno != EWOULDBLOCK ) + eDebug("couldn't read: %m"); + else { - if (errno != EWOULDBLOCK) - eDebug("read: %m"); - r=0; + len-=r; + re+=r; + if (r != tc) + break; } - re+=r; - if (r != tc) - break; } return re; } |
