From 01180021b4373233ed8eb2faf714fbf407ff9974 Mon Sep 17 00:00:00 2001 From: Brad Arant Date: Mon, 11 Nov 2024 15:58:58 -0800 Subject: [PATCH] Work on the IMFHeader and IMFMessage. --- IMFHeader.cpp | 6 +++++- IMFMessage.cpp | 4 ++-- IMFMessage.h | 4 ++-- ZString.cpp | 7 +++++++ ZString.h | 6 ++++++ 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/IMFHeader.cpp b/IMFHeader.cpp index 467ab3c..aff6421 100644 --- a/IMFHeader.cpp +++ b/IMFHeader.cpp @@ -1,16 +1,20 @@ #include "IMFHeader.h" #include "Exception.h" #include "Log.h" +#include namespace coreutils { IMFHeader::IMFHeader(ZString &in) : ZString(in) { + key = in.getTokenInclude("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_0123456789"); + std::cout << "key: [" << key << "]" << std::endl; if(key.getLength() != 0) { if(!in.ifNext(":")) throw coreutils::Exception("Invalid character in expected header token."); in.skipWhitespace(); - value = in.goeol(); + value = in.goeolwithContinuation(); + std::cout << "header: [" << value << "]" << std::endl; } else if(in.skipWhitespace() > 0) {} else if(in.str() == "") {} diff --git a/IMFMessage.cpp b/IMFMessage.cpp index 440ded2..fd3f0d7 100644 --- a/IMFMessage.cpp +++ b/IMFMessage.cpp @@ -9,8 +9,8 @@ namespace coreutils { IMFMessage::IMFMessage() : ZString() {} IMFMessage::IMFMessage(ZString &in) : ZString(in) { - - while (!in.ifNext("\r\n")) + + while (!in.ifNext("\r\n") && in.ifNext("\n")) headers.emplace_back(in); ZString type = getHeader("Content-Type"); diff --git a/IMFMessage.h b/IMFMessage.h index edb8da4..e7a7c95 100644 --- a/IMFMessage.h +++ b/IMFMessage.h @@ -20,8 +20,8 @@ namespace coreutils { public: IMFMessage(); IMFMessage(ZString &in); - virtual ~IMFMessage(); - + virtual ~IMFMessage(); + void output(std::stringstream &out); void addHeader(IMFHeader header); diff --git a/ZString.cpp b/ZString.cpp index 2ed5d41..b9a0e58 100644 --- a/ZString.cpp +++ b/ZString.cpp @@ -455,6 +455,13 @@ namespace coreutils { return ZString(temp, tempend - temp); } + ZString ZString::goeolwithContinuation() { + ZString temp = goeol(); + while(ifNextInclude(" \t")) + goeol(); + return temp; + } + ZString ZString::trim() { skipWhitespace(); return unparsed(); diff --git a/ZString.h b/ZString.h index 00a1892..c5b5c80 100644 --- a/ZString.h +++ b/ZString.h @@ -329,6 +329,12 @@ namespace coreutils { ZString goeol(); + /// + /// + /// + + ZString goeolwithContinuation(); + /// /// ///