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
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 }