input/TextInputStream: return char*

Revert to the old API before commit e9e55b08, removing unnecessary
bloat.
This commit is contained in:
Max Kellermann
2014-08-07 00:06:02 +02:00
parent 08fee9a284
commit 69ae879c58
6 changed files with 27 additions and 34 deletions

View File

@@ -27,9 +27,10 @@
#include <assert.h>
#include <string.h>
bool TextInputStream::ReadLine(std::string &line)
char *
TextInputStream::ReadLine()
{
const char *src, *p;
char *src, *p;
do {
size_t nbytes;
@@ -46,33 +47,33 @@ bool TextInputStream::ReadLine(std::string &line)
buffer.Append(nbytes);
else if (error.IsDefined()) {
LogError(error);
return false;
return nullptr;
}
} else
nbytes = 0;
auto src_p = buffer.Read();
if (src_p.IsEmpty())
return false;
return nullptr;
src = src_p.data;
p = reinterpret_cast<const char*>(memchr(src, '\n', src_p.size));
p = reinterpret_cast<char*>(memchr(src, '\n', src_p.size));
if (p == nullptr && nbytes == 0) {
/* end of file (or line too long): terminate
the current line */
dest = buffer.Write();
assert(!dest.IsEmpty());
dest[0] = '\n';
buffer.Append(1);
dest[0] = 0;
buffer.Clear();
return src;
}
} while (p == nullptr);
size_t length = p - src + 1;
buffer.Consume(p - src + 1);
while (p > src && IsWhitespaceOrNull(p[-1]))
--p;
line = std::string(src, p - src);
buffer.Consume(length);
return true;
*p = 0;
return src;
}

View File

@@ -22,8 +22,6 @@
#include "util/StaticFifoBuffer.hxx"
#include <string>
class InputStream;
class TextInputStream {
@@ -46,11 +44,9 @@ public:
/**
* Reads the next line from the stream with newline character stripped.
*
* @param line a string to put result to
* @return true if line is read successfully, false on end of file
* or error
* @return a pointer to the line, or nullptr on end-of-file or error
*/
bool ReadLine(std::string &line);
char *ReadLine();
};
#endif