summaryrefslogtreecommitdiff
path: root/cpp/src/IcePack/ActivatorI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2003-04-12 00:45:49 +0000
committerBenoit Foucher <benoit@zeroc.com>2003-04-12 00:45:49 +0000
commit663438ef42029c60cb3e601fe45170a29f9b10ad (patch)
treef14949a35fd8c82df1b3796b838387204a63c491 /cpp/src/IcePack/ActivatorI.cpp
parentfixing topic destruction bugs (diff)
downloadice-663438ef42029c60cb3e601fe45170a29f9b10ad.tar.bz2
ice-663438ef42029c60cb3e601fe45170a29f9b10ad.tar.xz
ice-663438ef42029c60cb3e601fe45170a29f9b10ad.zip
Added support for setting environment variables
Diffstat (limited to 'cpp/src/IcePack/ActivatorI.cpp')
-rw-r--r--cpp/src/IcePack/ActivatorI.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/cpp/src/IcePack/ActivatorI.cpp b/cpp/src/IcePack/ActivatorI.cpp
index a7ed12912b4..e6a07121167 100644
--- a/cpp/src/IcePack/ActivatorI.cpp
+++ b/cpp/src/IcePack/ActivatorI.cpp
@@ -184,8 +184,8 @@ IcePack::ActivatorI::activate(const ServerPtr& server)
string locatorArg = "--Ice.Default.Locator=" + _properties->getProperty("Ice.Default.Locator");
argv[argc - 2] = strdup(locatorArg.c_str());
- argv[argc - 1] = 0;
-
+ argv[argc - 1] = 0;
+
if(_traceLevels->activator > 1)
{
Ice::Trace out(_traceLevels->logger, _traceLevels->activatorCat);
@@ -239,6 +239,20 @@ IcePack::ActivatorI::activate(const ServerPtr& server)
}
}
+ for(q = server->description.envs.begin(); q != server->description.envs.end(); ++q)
+ {
+ if(putenv(strdup(q->c_str())) != 0)
+ {
+ SyscallException ex(__FILE__, __LINE__);
+ ex.error = getSystemErrno();
+ ostringstream s;
+ s << "can't set environment variable: " << *q << "':\n" << ex;
+ write(fds[1], s.str().c_str(), s.str().length());
+ close(fds[1]);
+ exit(EXIT_FAILURE);
+ }
+ }
+
//
// Redirect the standard error output to the write side of the
// pipe.