diff --git a/renderdoc/os/os_specific.h b/renderdoc/os/os_specific.h index 2ea5f238d..953c584a2 100644 --- a/renderdoc/os/os_specific.h +++ b/renderdoc/os/os_specific.h @@ -250,6 +250,7 @@ namespace FileIO { void GetDefaultFiles(const char *logBaseName, string &capture_filename, string &logging_filename, string &target); +string GetHomeFolderFilename(); string GetAppFolderFilename(const string &filename); string GetReplayAppFilename(); diff --git a/renderdoc/os/posix/posix_stringio.cpp b/renderdoc/os/posix/posix_stringio.cpp index 8ea3b6cb8..95f83ef5a 100644 --- a/renderdoc/os/posix/posix_stringio.cpp +++ b/renderdoc/os/posix/posix_stringio.cpp @@ -49,6 +49,14 @@ namespace FileIO // in posix/.../..._stringio.cpp const char *GetTempRootPath(); +string GetHomeFolderFilename() +{ + passwd *pw = getpwuid(getuid()); + const char *homedir = pw->pw_dir; + + return homedir; +} + void CreateParentDirectory(const string &filename) { string fn = dirname(filename); diff --git a/renderdoc/os/win32/win32_stringio.cpp b/renderdoc/os/win32/win32_stringio.cpp index c4ce34487..35dfb4794 100644 --- a/renderdoc/os/win32/win32_stringio.cpp +++ b/renderdoc/os/win32/win32_stringio.cpp @@ -285,6 +285,20 @@ void GetDefaultFiles(const char *logBaseName, string &capture_filename, string & logging_filename = StringFormat::Wide2UTF8(wstring(temp_filename)); } +string GetHomeFolderFilename() +{ + PWSTR docsPath; + SHGetKnownFolderPath(FOLDERID_Documents, KF_FLAG_SIMPLE_IDLIST | KF_FLAG_DONT_UNEXPAND, NULL, + &docsPath); + wstring documents = docsPath; + CoTaskMemFree(docsPath); + + if(documents[documents.size() - 1] == '/' || documents[documents.size() - 1] == '\\') + documents.pop_back(); + + return StringFormat::Wide2UTF8(documents); +} + string GetAppFolderFilename(const string &filename) { PWSTR appDataPath;