summaryrefslogtreecommitdiff
path: root/cpp/src/IcePack/ActivatorI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2003-08-15 20:54:40 +0000
committerBenoit Foucher <benoit@zeroc.com>2003-08-15 20:54:40 +0000
commit9d19d0cc9ae3d71d2bac4c858696499c3173331a (patch)
tree443faec1d53d2d085b55c429400ff67497f0946a /cpp/src/IcePack/ActivatorI.cpp
parentminor (diff)
downloadice-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.cpp48
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)
{