diff options
author | Benoit Foucher <benoit@zeroc.com> | 2003-04-12 00:45:49 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2003-04-12 00:45:49 +0000 |
commit | 663438ef42029c60cb3e601fe45170a29f9b10ad (patch) | |
tree | f14949a35fd8c82df1b3796b838387204a63c491 /cpp/src/IcePack/ActivatorI.cpp | |
parent | fixing topic destruction bugs (diff) | |
download | ice-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.cpp | 18 |
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. |