From 4f95b4591b1db0c9afc9b9cc3ae48332a4bd89a9 Mon Sep 17 00:00:00 2001 From: Brad Arant Date: Wed, 5 Aug 2020 11:57:35 -0700 Subject: [PATCH] sync. --- IMFHeader.cpp | 3 ++- IMFMessage.cpp | 13 ++++++++----- IMFMessage.h | 2 +- PString.cpp | 8 +++++--- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/IMFHeader.cpp b/IMFHeader.cpp index 0f092c9..9e486ca 100644 --- a/IMFHeader.cpp +++ b/IMFHeader.cpp @@ -8,10 +8,11 @@ namespace coreutils { } IMFHeader::IMFHeader(PString &in) { + printf("in='%s'\n", in.str().c_str()); key = in.getTokenInclude("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-"); if(key.length() != 0) { if(!in.ifNext(":")) { - printf("%02X\n", in.str()[0]); + printf("key=%s %02X\n", key.c_str(), in.str()[0]); throw coreutils::Exception("Invalid character in expected header token."); } in.skipWhitespace(); diff --git a/IMFMessage.cpp b/IMFMessage.cpp index bfbbce9..8d42032 100644 --- a/IMFMessage.cpp +++ b/IMFMessage.cpp @@ -12,14 +12,16 @@ namespace coreutils { parse(in); } - void IMFMessage::parse(PString &in) { + bool IMFMessage::parse(PString &in) { + coreutils::Log(coreutils::LOG_DEBUG_4) << "parse [" << in.str() << "]"; - if(in.size() == 0) - return; - - while(!in.ifNext("\r\n") && !in.eod()) { + + if(in.str() != "") { headers.emplace_back(in); + return true; } + + coreutils::Log(coreutils::LOG_DEBUG_2) << "End of header with Content Type = " << getHeader("Content-Type") << " for " << getHeader("Content-Length") << " bytes."; std::string type = getHeader("Content-Type"); @@ -32,6 +34,7 @@ namespace coreutils { body = new IMFPlainText(in); else body = new IMFBody(); + return false; } void IMFMessage::output(std::stringstream &out) { diff --git a/IMFMessage.h b/IMFMessage.h index 6f54d60..897b0ec 100644 --- a/IMFMessage.h +++ b/IMFMessage.h @@ -14,7 +14,7 @@ namespace coreutils { IMFMessage(); IMFMessage(PString &in); - void parse(PString &in); + bool parse(PString &in); void output(std::stringstream &out); IMFRequest *request; diff --git a/PString.cpp b/PString.cpp index f3f91aa..8513a90 100644 --- a/PString.cpp +++ b/PString.cpp @@ -77,9 +77,11 @@ namespace coreutils { } int PString::skipWhitespace() { - size_t found = pstring.find_first_not_of(" \t", cursor); - coreutils::Log(coreutils::LOG_DEBUG_2) << "Skipping whitespace for " << found << " spaces."; - return found; + size_t temp = cursor; + cursor = pstring.find_first_not_of(" \t", cursor); + cursor = cursor == -1 ? temp: cursor; + coreutils::Log(coreutils::LOG_DEBUG_2) << "Skipping whitespace for " << (cursor - temp) << " spaces."; + return cursor - temp; } int PString::size() {