00001 #include "Utilities/General/interface/envUtil.h" 00002 #include <cstdlib> 00003 #include <iostream> 00004 00005 envUtil::envUtil(const char * envName, const char * defaultValue) : 00006 envName_(envName), 00007 env_(::getenv(envName) ? ::getenv(envName) : "") { 00008 if (env_.length()==0) env_ = defaultValue; 00009 } 00010 00011 00012 envUtil::envUtil(const char * envName, const std::string & defaultValue) : 00013 envName_(envName), 00014 env_(::getenv(envName) ? ::getenv(envName) : "") { 00015 if (env_.length()==0) env_ = defaultValue; 00016 } 00017 00018 00019 // avoid mess, go for a leak.... 00020 void envUtil::setEnv() { 00021 if (envName_.empty()) return; 00022 std::string * mess = new std::string(envName_); 00023 *mess += "="; 00024 *mess += env_; 00025 ::putenv((char*)((*mess).c_str())); 00026 } 00027 00028 00029 void envUtil::setEnv(const std::string & nval) { 00030 env_=nval; 00031 setEnv(); 00032 } 00033 00034 const std::string & envUtil::getEnv(const char * envName, const char * defaultValue) { 00035 envName_ = envName; 00036 env_ = ::getenv(envName) ? ::getenv(envName) : ""; 00037 if (env_.length()==0) env_ = defaultValue; 00038 return env_; 00039 } 00040 00041 envSwitch::envSwitch(const char * envName) : envName_(envName), 00042 it(::getenv(envName)!=0) {} 00043 00044 00045 std::ostream & operator<<(std::ostream & co, const envUtil & eu) { 00046 return co << eu.getEnv(); 00047 } 00048 00049 std::istream & operator>>(std::istream & ci, envUtil & eu) { 00050 std::string m; 00051 ci >> m; 00052 eu.setEnv(m); 00053 return ci; 00054 }