env_deal.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #if defined(_MSC_VER)
  2. #include "stdafx.h"
  3. #endif //_MSC_VER
  4. #include "log4rvcother.h"
  5. #include <string.h>
  6. #include "env_deal.h"
  7. namespace cmb {
  8. env_deal::env_deal(const std::string& name):str_(name)
  9. {
  10. }
  11. bool env_deal::set(const std::string& value)
  12. {
  13. #if defined(_MSC_VER)
  14. DWORD dwResult = SetEnvironmentVariableA(str_.c_str(), value.c_str());
  15. return (dwResult != 0);
  16. #else
  17. if (setenv(str_.c_str(), value.c_str(), 1) != 0)
  18. return false;
  19. return true;
  20. #endif //_MSC_VER
  21. }
  22. bool env_deal::get(std::string& value)
  23. {
  24. #if defined(_MSC_VER)
  25. bool res = false;
  26. DWORD dwSize;
  27. value.clear();
  28. dwSize = GetEnvironmentVariableA(str_.c_str(), NULL, 0);
  29. if (dwSize > 0) {
  30. char* buf = new char[dwSize + 1];
  31. if (buf == NULL) {
  32. return false;
  33. }
  34. memset(buf, '\0', sizeof(char) * (dwSize + 1));
  35. dwSize = GetEnvironmentVariableA(str_.c_str(), buf, dwSize);
  36. if (dwSize > 0) {
  37. value = buf;
  38. res = true;
  39. }
  40. delete[] buf;
  41. }
  42. return res;
  43. #else
  44. bool res = false;
  45. value.clear();
  46. char* var = getenv(str_.c_str());
  47. if (var == NULL)
  48. return false;
  49. size_t len = strlen(var);
  50. if (len > 0) {
  51. char* buf = new char[len + 1];
  52. if (buf == NULL) {
  53. return false;
  54. }
  55. memset(buf, '\0', sizeof(char) * (len + 1));
  56. memcpy(buf, var, len);
  57. value = buf;
  58. res = true;
  59. delete[] buf;
  60. }
  61. return res;
  62. #endif //_MSC_VER
  63. }
  64. env_deal::~env_deal(void)
  65. {
  66. }
  67. bool env_log_config::retrieve_env_value()
  68. {
  69. env_deal("VENDOR_RECODE_TYPE").get(record_type);
  70. env_deal("VENDOR_RECODE_LEVEL").get(record_level);
  71. env_deal("VENDOR_DLL_NAME").get(module_name);
  72. env_deal("VENDOR_LOG_PATH").get(record_path);
  73. return true;
  74. }
  75. }