diff options
Diffstat (limited to 'cpp/src/IceBox/ServiceManagerI.cpp')
-rw-r--r-- | cpp/src/IceBox/ServiceManagerI.cpp | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/cpp/src/IceBox/ServiceManagerI.cpp b/cpp/src/IceBox/ServiceManagerI.cpp index 49e5c4eef34..28c6c47dd1c 100644 --- a/cpp/src/IceBox/ServiceManagerI.cpp +++ b/cpp/src/IceBox/ServiceManagerI.cpp @@ -196,46 +196,33 @@ IceBox::ServiceManagerI::init(const string& service, const string& exec, const S // // We'll compose an array of arguments in the above order. // - vector<string> l; + StringSeq serviceArgs; StringSeq::size_type j; for (j = 0; j < _options.size(); j++) { if (_options[j].find("--" + service + ".") == 0) { - l.push_back(_options[j]); + serviceArgs.push_back(_options[j]); } } for (j = 0; j < args.size(); j++) { - l.push_back(args[j]); + serviceArgs.push_back(args[j]); } for (j = 0; j < _argv.size(); j++) { if (_argv[j].find("--" + service + ".") == 0) { - l.push_back(_argv[j]); + serviceArgs.push_back(_argv[j]); } } // // Create the service property set. // - addArgumentPrefix(service); - int serviceArgc = static_cast<int>(l.size() + 1); - char** serviceArgv = new char*[serviceArgc + 1]; - serviceArgv[0] = const_cast<char*>(_progName.c_str()); - int k; - for (k = 1; k < serviceArgc; k++) - { - serviceArgv[k] = const_cast<char*>(l[k - 1].c_str()); - } - PropertiesPtr serviceProperties = createProperties(serviceArgc, serviceArgv); - StringSeq serviceArgs; - for (k = 1; k < serviceArgc; k++) - { - serviceArgs.push_back(serviceArgv[k]); - } - delete[] serviceArgv; + PropertiesPtr serviceProperties = createProperties(); + serviceArgs = serviceProperties->parseCommandLineOptions("Ice", serviceArgs); + serviceArgs = serviceProperties->parseCommandLineOptions(service, serviceArgs); // // Load the dynamic library. |