diff options
author | Benoit Foucher <benoit@zeroc.com> | 2003-08-15 20:54:40 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2003-08-15 20:54:40 +0000 |
commit | 9d19d0cc9ae3d71d2bac4c858696499c3173331a (patch) | |
tree | 443faec1d53d2d085b55c429400ff67497f0946a /cpp/src/IcePack/ActivatorI.cpp | |
parent | minor (diff) | |
download | ice-9d19d0cc9ae3d71d2bac4c858696499c3173331a.tar.bz2 ice-9d19d0cc9ae3d71d2bac4c858696499c3173331a.tar.xz ice-9d19d0cc9ae3d71d2bac4c858696499c3173331a.zip |
Merged R1_1_branch.
Diffstat (limited to 'cpp/src/IcePack/ActivatorI.cpp')
-rw-r--r-- | cpp/src/IcePack/ActivatorI.cpp | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/cpp/src/IcePack/ActivatorI.cpp b/cpp/src/IcePack/ActivatorI.cpp index f10c16b8f77..94059ecb7c1 100644 --- a/cpp/src/IcePack/ActivatorI.cpp +++ b/cpp/src/IcePack/ActivatorI.cpp @@ -166,27 +166,13 @@ IcePack::ActivatorI::activate(const ServerPtr& server) } // - // Compute arguments. + // Setup arguments. // - int argc = static_cast<int>(server->description.args.size() + _propertiesOverride.size() + 3); - char** argv = static_cast<char**>(malloc(argc * sizeof(char*))); - argv[0] = strdup(path.c_str()); - - unsigned int i = 0; - vector<string>::const_iterator q; - - for(q = server->description.args.begin(); q != server->description.args.end(); ++q, ++i) - { - argv[i + 1] = strdup(q->c_str()); - } - for(q = _propertiesOverride.begin(); q != _propertiesOverride.end(); ++q, ++i) - { - argv[i + 1] = strdup(q->c_str()); - } - - string locatorArg = "--Ice.Default.Locator=" + _properties->getProperty("Ice.Default.Locator"); - argv[argc - 2] = strdup(locatorArg.c_str()); - argv[argc - 1] = 0; + StringSeq args; + args.push_back(path); + args.insert(args.end(), server->description.args.begin(), server->description.args.end()); + args.insert(args.end(), _propertiesOverride.begin(), _propertiesOverride.end()); + args.push_back("--Ice.Default.Locator=" + _properties->getProperty("Ice.Default.Locator")); if(_traceLevels->activator > 1) { @@ -199,11 +185,9 @@ IcePack::ActivatorI::activate(const ServerPtr& server) out << "pwd = " << pwd << "\n"; out << "args = "; - char **args = argv; - while(*args) + for(StringSeq::const_iterator p = ++args.begin(); p != args.end(); ++p) { - out << " " << *args; - args++; + out << " " << *p; } } } @@ -249,7 +233,21 @@ IcePack::ActivatorI::activate(const ServerPtr& server) } } - for(q = server->description.envs.begin(); q != server->description.envs.end(); ++q) + // + // Convert to standard argc/argv. + // + int argc = static_cast<int>(args.size()); + char** argv = static_cast<char**>(malloc((argc + 1) * sizeof(char*))); + int i = 0; + for(StringSeq::const_iterator p = args.begin(); p != args.end(); ++p, ++i) + { + assert(i < argc); + argv[i] = strdup(p->c_str()); + } + assert(i == argc); + argv[argc] = 0; + + for(StringSeq::const_iterator q = server->description.envs.begin(); q != server->description.envs.end(); ++q) { if(putenv(strdup(q->c_str())) != 0) { |