#if defined(_MSC_VER) #include "stdafx.h" #endif //_MSC_VER #include "log4rvcother.h" #include #include "env_deal.h" namespace cmb { env_deal::env_deal(const std::string& name):str_(name) { } bool env_deal::set(const std::string& value) { #if defined(_MSC_VER) DWORD dwResult = SetEnvironmentVariableA(str_.c_str(), value.c_str()); return (dwResult != 0); #else if (setenv(str_.c_str(), value.c_str(), 1) != 0) return false; return true; #endif //_MSC_VER } bool env_deal::get(std::string& value) { #if defined(_MSC_VER) bool res = false; DWORD dwSize; value.clear(); dwSize = GetEnvironmentVariableA(str_.c_str(), NULL, 0); if (dwSize > 0) { char* buf = new char[dwSize + 1]; if (buf == NULL) { return false; } memset(buf, '\0', sizeof(char) * (dwSize + 1)); dwSize = GetEnvironmentVariableA(str_.c_str(), buf, dwSize); if (dwSize > 0) { value = buf; res = true; } delete[] buf; } return res; #else bool res = false; value.clear(); char* var = getenv(str_.c_str()); if (var == NULL) return false; size_t len = strlen(var); if (len > 0) { char* buf = new char[len + 1]; if (buf == NULL) { return false; } memset(buf, '\0', sizeof(char) * (len + 1)); memcpy(buf, var, len); value = buf; res = true; delete[] buf; } return res; #endif //_MSC_VER } env_deal::~env_deal(void) { } bool env_log_config::retrieve_env_value() { env_deal("VENDOR_RECODE_TYPE").get(record_type); env_deal("VENDOR_RECODE_LEVEL").get(record_level); env_deal("VENDOR_DLL_NAME").get(module_name); env_deal("VENDOR_LOG_PATH").get(record_path); return true; } }