From fc7a460c493751cb25a2cac4ca7c14872c277bf6 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Tue, 18 Aug 2020 22:51:05 +0200 Subject: [PATCH] Added ability to set debug level for MistProc* binaries, added support for global debug level for same. --- src/input/input_buffer.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/input/input_buffer.cpp b/src/input/input_buffer.cpp index 1e889781..57c316f1 100644 --- a/src/input/input_buffer.cpp +++ b/src/input/input_buffer.cpp @@ -686,7 +686,7 @@ namespace Mist{ // used for building args int err = fileno(stderr); - char *argarr[3]; + char *argarr[5]; // Convert to strings jsonForEachConst(procs, it){ @@ -740,15 +740,27 @@ namespace Mist{ } } + std::string debugLvl; // start up new/changed connectors while (newProcs.size() && config->is_active){ - std::string config = (*newProcs.begin()); + const std::string & config = (*newProcs.begin()); + JSON::Value args = JSON::fromString(config); if (!runningProcs.count(config) || !Util::Procs::isActive(runningProcs[config])){ std::string procname = Util::getMyPath() + "MistProc" + JSON::fromString(config)["process"].asString(); argarr[0] = (char *)procname.c_str(); argarr[1] = (char *)config.c_str(); argarr[2] = 0; + if (Util::Config::printDebugLevel != DEBUG || args.isMember("debug")){ + if (args.isMember("debug")){ + debugLvl = args["debug"].asString(); + }else{ + debugLvl = JSON::Value(Util::Config::printDebugLevel).asString(); + } + argarr[2] = (char*)"--debug"; + argarr[3] = (char*)debugLvl.c_str();; + argarr[4] = 0; + } INFO_MSG("Starting process: %s %s", argarr[0], argarr[1]); runningProcs[*newProcs.begin()] = Util::Procs::StartPiped(argarr, 0, 0, &err); }