From 0161280405fe5aa256dc9df6a56106dd3a1a6f38 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 29 Dec 2016 11:20:18 +0100 Subject: ensure generation of valid EDSP error stanzas The crude way of preparing a message to be a multiline value failed at generation valid deb822 in case the error message ended with a new line like the resolving errors from apt do. apt itself can parse these, but other tools like grep-dctrl choke on it, so be nice and print valid. Reported-By: Johannes 'josch' Schauer on IRC --- apt-pkg/edsp.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'apt-pkg') diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index b80b9a456..a2520441b 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -931,14 +931,18 @@ bool EDSP::WriteProgress(unsigned short const percent, const char* const message } /*}}}*/ // EDSP::WriteError - format an error message to be send to file descriptor /*{{{*/ +static std::string formatMessage(std::string const &msg) +{ + return SubstVar(SubstVar(APT::String::Strip(msg), "\n\n", "\n.\n"), "\n", "\n "); +} bool EDSP::WriteError(char const * const uuid, std::string const &message, FILE* output) { fprintf(output, "Error: %s\n", uuid); - fprintf(output, "Message: %s\n\n", SubstVar(SubstVar(message, "\n\n", "\n.\n"), "\n", "\n ").c_str()); + fprintf(output, "Message: %s\n\n", formatMessage(message).c_str()); return true; } bool EDSP::WriteError(char const * const uuid, std::string const &message, FileFd &output) { return WriteOkay(output, "Error: ", uuid, "\n", - "Message: ", SubstVar(SubstVar(message, "\n\n", "\n.\n"), "\n", "\n "), + "Message: ", formatMessage(message), "\n\n"); } /*}}}*/ -- cgit v1.2.3