diff --git a/UtilityApps/src/plugin_runner.cpp b/UtilityApps/src/plugin_runner.cpp index 29a864873de19049dc058a1889bdfff2698cacfb..698f8f99ac924ebf88b876627a2eda0e354fd4c5 100644 --- a/UtilityApps/src/plugin_runner.cpp +++ b/UtilityApps/src/plugin_runner.cpp @@ -28,28 +28,19 @@ namespace { //______________________________________________________________________________ int main(int argc,char** argv) { - char plugin_runner[64] = "plugin_runner"; - string plugin; Args arguments; - vector<const char*> options; - options.push_back(plugin_runner); for(int i=1; i<argc;++i) { if ( argv[i][0]=='-' ) { if ( arguments.handle(i,argc,argv) ) continue; - else if ( strncmp(argv[i],"-plugin",2)==0 ) - plugin = argv[++i]; - else - options.push_back(argv[i]); } else { usage(); } } - if ( plugin.empty() ) + if ( arguments.plugins.empty() ) usage(); - options.push_back(0); LCDD& lcdd = dd4hep_instance(); // Load compact files if required by plugin if ( !arguments.geo_files.empty() ) { @@ -61,7 +52,11 @@ int main(int argc,char** argv) { // Create volume manager and populate it required if ( arguments.volmgr ) run_plugin(lcdd,"DD4hepVolumeManager",0,0); // Execute plugin - run_plugin(lcdd,plugin.c_str(),(int)(options.size()-1),(char**)&options[0]); + for(size_t i=0; i<arguments.plugins.size(); ++i) { + std::vector<const char*>& plug = arguments.plugins[i]; + int num_arg = int(plug.size())-2; + run_plugin(lcdd,plug[0], num_arg,(char**)&plug[1]); + } if ( arguments.destroy ) delete &lcdd; return 0; } diff --git a/UtilityApps/src/run_plugin.h b/UtilityApps/src/run_plugin.h index 03c32a783aa80d60673d1a486bfca41b7fbbfab8..ca1dd82d46f1a614b97813ea0a8ebc9bdb7447f5 100644 --- a/UtilityApps/src/run_plugin.h +++ b/UtilityApps/src/run_plugin.h @@ -147,10 +147,11 @@ namespace { // Need to interprete plugin args here locally..... plugins.push_back(std::vector<const char*>()); plugins.back().push_back(argv[++i]); - for(; i<argc; ++i) { + for( ++i; i < argc; ++i ) { if ( argv[i][0]=='-' ) { --i; break; } plugins.back().push_back(argv[i]); } + plugins.back().push_back(0); } else return 0;