From e0efe0475bed89b6d60a04ce63dbc061e553bd59 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Thu, 15 Sep 2016 22:06:02 +0300 Subject: Move print_process() to butl::process::print() --- bpkg/diagnostics.cxx | 49 +++++++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/bpkg/diagnostics.cxx b/bpkg/diagnostics.cxx index 41f08b4..9d1f96d 100644 --- a/bpkg/diagnostics.cxx +++ b/bpkg/diagnostics.cxx @@ -9,7 +9,10 @@ #include +#include + using namespace std; +using namespace butl; namespace bpkg { @@ -22,41 +25,23 @@ namespace bpkg print_process (r, args, n); } - void - print_process (diag_record& r, const char* const args[], size_t n) + struct process_args { - size_t m (0); - const char* const* p (args); - do - { - if (m != 0) - r << " |"; // Trailing space will be added inside the loop. - - for (m++; *p != nullptr; p++, m++) - { - if (p != args) - r << ' '; - - // Quote if empty or contains spaces. - // - bool q (**p == '\0' || strchr (*p, ' ') != nullptr); - - if (q) - r << '"'; + const char* const* a; + size_t n; + }; - r << *p; - - if (q) - r << '"'; - } - - if (m < n) // Can we examine the next element? - { - p++; - m++; - } + inline static ostream& + operator<< (ostream& o, const process_args& p) + { + process::print (o, p.a, p.n); + return o; + } - } while (*p != nullptr); + void + print_process (diag_record& r, const char* const args[], size_t n) + { + r << process_args {args, n}; } // Diagnostics verbosity level. -- cgit v1.1