diff options
author | Arne H Juul <arnej@yahoo-inc.com> | 2017-05-05 14:38:10 +0200 |
---|---|---|
committer | Arne H Juul <arnej@yahoo-inc.com> | 2017-05-08 10:38:23 +0200 |
commit | e81817db16aa9ef5470cacb2a760ff78f62532de (patch) | |
tree | 5c70750fe2dd8bc2befbcf00f20ad633549ff867 /fbench/src/util/filereader.cpp | |
parent | 7c4e89e0a4f39f715933eb0794c078d1b50406f8 (diff) |
super ugly add post mode
* also, fix some logic with byte offsets and -r option
Diffstat (limited to 'fbench/src/util/filereader.cpp')
-rw-r--r-- | fbench/src/util/filereader.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/fbench/src/util/filereader.cpp b/fbench/src/util/filereader.cpp index b1eebbcb2f0..30469e18e0c 100644 --- a/fbench/src/util/filereader.cpp +++ b/fbench/src/util/filereader.cpp @@ -20,6 +20,8 @@ FileReader::FileReader() _file(&std::cin), _bufsize(1024*1024), _buf(_bufsize), + _lastReadPos(0), + _nextReadPos(0), _bufused(0), _bufpos(0) { @@ -49,6 +51,7 @@ FileReader::Reset() { _file->clear(); _file->seekg(0); + _nextReadPos = 0; return bool(*_file); } @@ -57,6 +60,7 @@ FileReader::SetFilePos(int64_t pos) { _bufpos = 0; _file->seekg(pos); + _nextReadPos = pos; return bool(*_file); } @@ -81,8 +85,11 @@ FileReader::FindNewline(int64_t pos) void FileReader::FillBuffer() { + _lastReadPos = _nextReadPos; _file->read(&_buf[0], _bufsize); - _bufused = _file->gcount(); // may be -1 + auto wasRead = _file->gcount(); // may be -1 + _nextReadPos += wasRead; + _bufused = wasRead; _bufpos = 0; } |