Aws::String FileSystemUtils::GetHomeDirectory() { static const char* HOME_DIR_ENV_VAR = "HOME"; AWS_LOGSTREAM_TRACE(FILE_SYSTEM_UTILS_LOG_TAG, "Checking " << HOME_DIR_ENV_VAR << " for the home directory."); const char* homeEnvDir = std::getenv(HOME_DIR_ENV_VAR); Aws::String homeDir(homeEnvDir ? homeEnvDir : ""); AWS_LOGSTREAM_DEBUG(FILE_SYSTEM_UTILS_LOG_TAG, "Environment value for variable " << HOME_DIR_ENV_VAR << " is " << homeDir); if(homeDir.empty()) { AWS_LOG_WARN(FILE_SYSTEM_UTILS_LOG_TAG, "Home dir not stored in environment, trying to fetch manually from the OS."); passwd pw; passwd *p_pw = nullptr; char pw_buffer[4096]; getpwuid_r(getuid(), &pw, pw_buffer, sizeof(pw_buffer), &p_pw); if(p_pw && p_pw->pw_dir) { homeDir = p_pw->pw_dir; } AWS_LOGSTREAM_INFO(FILE_SYSTEM_UTILS_LOG_TAG, "Pulled " << homeDir << " as home directory from the OS."); } Aws::String retVal = homeDir.size() > 0 ? StringUtils::Trim(homeDir.c_str()) : ""; if(!retVal.empty()) { if(retVal.at(retVal.length() - 1) != PATH_DELIM) { AWS_LOGSTREAM_DEBUG(FILE_SYSTEM_UTILS_LOG_TAG, "Home directory is missing the final " << PATH_DELIM << " appending one to normalize"); retVal += PATH_DELIM; } } AWS_LOGSTREAM_DEBUG(FILE_SYSTEM_UTILS_LOG_TAG, "Final Home Directory is " << retVal); return retVal; }
Aws::String GetHomeDirectory() { static const char* HOME_DIR_ENV_VAR = "USERPROFILE"; AWS_LOGSTREAM_TRACE(FILE_SYSTEM_UTILS_LOG_TAG, "Checking " << HOME_DIR_ENV_VAR << " for the home directory."); Aws::String homeDir = Aws::Environment::GetEnv(HOME_DIR_ENV_VAR); AWS_LOGSTREAM_DEBUG(FILE_SYSTEM_UTILS_LOG_TAG, "Environment value for variable " << HOME_DIR_ENV_VAR << " is " << homeDir); if(homeDir.empty()) { AWS_LOGSTREAM_WARN(FILE_SYSTEM_UTILS_LOG_TAG, "Home dir not stored in environment, trying to fetch manually from the OS."); HANDLE hToken; if (OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &hToken)) { DWORD len = MAX_PATH; WCHAR path[MAX_PATH]; if (GetUserProfileDirectoryW(hToken, path, &len)) { homeDir = Aws::Utils::StringUtils::FromWString(path); } CloseHandle(hToken); } AWS_LOGSTREAM_INFO(FILE_SYSTEM_UTILS_LOG_TAG, "Pulled " << homeDir << " as home directory from the OS."); } Aws::String retVal = (homeDir.size() > 0) ? Aws::Utils::StringUtils::Trim(homeDir.c_str()) : ""; if (!retVal.empty()) { if (retVal.at(retVal.length() - 1) != Aws::FileSystem::PATH_DELIM) { retVal += Aws::FileSystem::PATH_DELIM; } } return retVal; }