aboutsummaryrefslogtreecommitdiffstats
path: root/fbench/src/util/filereader.cpp
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahoo-inc.com>2017-05-05 14:38:10 +0200
committerArne H Juul <arnej@yahoo-inc.com>2017-05-08 10:38:23 +0200
commite81817db16aa9ef5470cacb2a760ff78f62532de (patch)
tree5c70750fe2dd8bc2befbcf00f20ad633549ff867 /fbench/src/util/filereader.cpp
parent7c4e89e0a4f39f715933eb0794c078d1b50406f8 (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.cpp9
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;
}