CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch1/src/Utilities/General/src/envUtil.cc

Go to the documentation of this file.
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 }