diff options
author | Pixel <Pixel> | 2002-08-10 22:59:40 +0000 |
---|---|---|
committer | Pixel <Pixel> | 2002-08-10 22:59:40 +0000 |
commit | 89a43700b18c61d209ffb68db57e020f11a2daa9 (patch) | |
tree | 5a3fb40b511a85a5c4853dcea3edc23079d7f928 /generic | |
parent | 4b6d43a6a5146b0165d05a66c70b2a39ab8980f4 (diff) |
Nighty commit
Diffstat (limited to 'generic')
-rw-r--r-- | generic/Handle.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/generic/Handle.cpp b/generic/Handle.cpp index 8b7a278..d46fc22 100644 --- a/generic/Handle.cpp +++ b/generic/Handle.cpp @@ -10,7 +10,7 @@ #define _(x) x #endif -Handle::Handle(const Handle & nh) : h(nh.h >= 0 ? dup(nh.h) : nh.h), closed(nh.closed), nonblock(nh.closed), zfile(0), z(0) { +Handle::Handle(const Handle & nh) : h(nh.h >= 0 ? dup(nh.h) : nh.h), closed(nh.closed), nonblock(nh.closed), zfile(0), z(0), itell(0) { // cerr << "Duplication of handle " << nh.h << " to " << h << endl; if ((h >= 0) && (nh.z)) { SetZ(nh.z); @@ -232,6 +232,7 @@ void Handle::SetZ(int az) throw (GeneralException) { ssize_t Handle::uwrite(const void * buf, size_t count) throw (GeneralException) { if (z) { + itell += count; // cerr << "Performing gzwrite of " << count << " byte for handle " << h << endl; int err = gzwrite(zfile, buf, count); // cerr << "gzwrite returned " << err << endl; @@ -245,12 +246,13 @@ ssize_t Handle::uwrite(const void * buf, size_t count) throw (GeneralException) } return err; } else { - return ::write(h, buf, count); + itell += count = ::write(h, buf, count); } } ssize_t Handle::uread(void * buf, size_t count) { if (z) { + itell += count; // cerr << "Performing gzread of " << count << " byte for handle " << h << endl; int err = gzread(zfile, buf, count); // cerr << "gzwrite returned " << err << endl; @@ -264,6 +266,11 @@ ssize_t Handle::uread(void * buf, size_t count) { } return err; } else { - return ::read(h, buf, count); + itell += count = ::read(h, buf, count); + return count; } } + +off_t Handle::tell() { + return itell; +} |