#include "LineParser.h" namespace coreutils { LineParser::LineParser(StreamReader &reader) : Parser(reader) {} Parser::Status LineParser::parse() { MString &buffer = reader.getBuffer(); char *lineStart = buffer.getCursor(); ZString term("\n"); int pos = buffer.find(term); if (pos < 0) return Status::INCOMPLETE; char *lineEnd = buffer.getCursor(); if (lineEnd > lineStart && *(lineEnd - 1) == '\r') --lineEnd; line = ZString(lineStart, lineEnd - lineStart); buffer.setCursor(buffer.getCursor() + 1); return Status::COMPLETE; } ZString LineParser::getLine() { return line; } }