From 98b6177c5c191a037e1eab97157a36ba499be41b Mon Sep 17 00:00:00 2001 From: whh8b <whh8b@git.zephyr-software.com> Date: Thu, 22 Oct 2015 15:59:44 +0000 Subject: [PATCH] Parse() options with variable output configuration. --- src/zipr.cpp | 14 +++++++++++++- test/ZiprOptions.cpp | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/zipr.cpp b/src/zipr.cpp index e331699..3207cfd 100644 --- a/src/zipr.cpp +++ b/src/zipr.cpp @@ -72,10 +72,15 @@ void ZiprImpl_t::Init() bss_needed=0; use_stratafier_mode=false; + ostream *error = &cout, *warn = NULL; + m_zipr_options.AddNamespace(new ZiprOptionsNamespace_t("global")); m_zipr_options.AddNamespace(RegisterOptions(m_zipr_options.Namespace("global"))); - m_zipr_options.Parse(); + /* + * Parse once to read the global and zipr options. + */ + m_zipr_options.Parse(NULL, NULL); if (m_variant.RequirementMet()) { /* setup the interface to the sql server */ BaseObj_t::SetInterface(&m_pqxx_interface); @@ -106,6 +111,13 @@ void ZiprImpl_t::Init() } plugman = ZiprPluginManager_t(&memory_space, elfiop, m_firp, &m_zipr_options, &final_insn_locations); + /* + * Parse again now that the plugins registered something. + */ + if (m_verbose) + warn = &cout; + m_zipr_options.Parse(error, warn); + if (!m_zipr_options.RequirementsMet()) { m_zipr_options.PrintUsage(cout); m_error = true; diff --git a/test/ZiprOptions.cpp b/test/ZiprOptions.cpp index 6c31a3b..47cd0e6 100644 --- a/test/ZiprOptions.cpp +++ b/test/ZiprOptions.cpp @@ -80,7 +80,7 @@ int main(int argc, char *argv[]) options.AddNamespace(&global_ns); options.AddNamespace(&local_ns); - options.Parse(cout); + options.Parse(&cout); if (!options.RequirementsMet()) { -- GitLab