diff --git a/code/espurna/button.cpp b/code/espurna/button.cpp index 627a966c..d0ed8ec1 100644 --- a/code/espurna/button.cpp +++ b/code/espurna/button.cpp @@ -853,10 +853,6 @@ namespace terminal { namespace internal { void inject(String command) { - if (!command.endsWith("\r\n") && !command.endsWith("\n")) { - command.concat('\n'); - } - static EphemeralPrint output; PrintString error(64); diff --git a/code/espurna/ir.cpp b/code/espurna/ir.cpp index 1ac720a5..7d37a340 100644 --- a/code/espurna/ir.cpp +++ b/code/espurna/ir.cpp @@ -1522,10 +1522,6 @@ Preset preset() { namespace internal { void inject(String command) { - if (!command.endsWith("\r\n") && !command.endsWith("\n")) { - command.concat('\n'); - } - static EphemeralPrint output; PrintString error(64); if (!espurna::terminal::api_find_and_call(command, output, error)) { diff --git a/code/espurna/scheduler.cpp b/code/espurna/scheduler.cpp index 27f6a2fa..b6c59ed6 100644 --- a/code/espurna/scheduler.cpp +++ b/code/espurna/scheduler.cpp @@ -1685,10 +1685,6 @@ using terminal_stub::parse_action; #else void parse_action(String action) { - if (!action.endsWith("\r\n") && !action.endsWith("\n")) { - action.concat('\n'); - } - static EphemeralPrint output; PrintString error(64); diff --git a/code/espurna/terminal.cpp b/code/espurna/terminal.cpp index 9414fd6c..40e80a24 100644 --- a/code/espurna/terminal.cpp +++ b/code/espurna/terminal.cpp @@ -519,18 +519,14 @@ void setup() { return; } - auto line = payload.toString(); - if (!payload.endsWith("\r\n") && !payload.endsWith("\n")) { - line += '\n'; - } - // TODO: unlike http handler, we have only one output stream // and **must** have a fixed-size output buffer // (wishlist: MQTT client does some magic and we don't buffer twice) // TODO: or, at least, make it growable on-demand and cap at MSS? // TODO: PrintLine<...> instead of one giant blob? - auto ptr = std::make_shared(std::move(line)); + auto ptr = std::make_shared(payload.toString()); + espurnaRegisterOnce([ptr]() { PrintString out(TCP_MSS); api_find_and_call(*ptr, out); @@ -721,11 +717,6 @@ void setup() { return false; } - auto cmd = std::make_shared(line.toString()); - if (!line.endsWith("\r\n") && !line.endsWith("\n")) { - (*cmd) += '\n'; - } - api.handle([cmd](AsyncWebServerRequest* request) { espurna::web::print::scheduleFromRequest( request, @@ -766,12 +757,7 @@ void setup() { return true; } - if (!line.endsWith("\r\n") && !line.endsWith("\n")) { - line += '\n'; - } - auto cmd = std::make_shared(std::move(line)); - espurna::web::print::scheduleFromRequest( request, [cmd](Print& out) { diff --git a/code/espurna/terminal_commands.cpp b/code/espurna/terminal_commands.cpp index 23a0b6c6..0fa4c8a0 100644 --- a/code/espurna/terminal_commands.cpp +++ b/code/espurna/terminal_commands.cpp @@ -186,7 +186,7 @@ bool api_find_and_call(StringView cmd, Print& output, Print& error_output) { auto input = cmd; while (input.length()) { - auto result = parse_line(input); + auto result = parse_terminated(input); input = result.remaining; if (result.error != parser::Error::Ok) {