diff --git a/src/zipr.cpp b/src/zipr.cpp index e33169961b4143fbc1b5d9448572797a4fd427a7..3207cfd5f479358132c5d560b9f7b1b696dae351 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 6c31a3b590f5323d084388c00e7519e50dc83a4d..47cd0e643482acc99d390c7ff1c81b76212d486c 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()) {