]> git.tdb.fi Git - libs/core.git/blobdiff - source/fs/windows/dir_location.cpp
Have get_user_data_dir return a proper location on Android
[libs/core.git] / source / fs / windows / dir_location.cpp
diff --git a/source/fs/windows/dir_location.cpp b/source/fs/windows/dir_location.cpp
new file mode 100644 (file)
index 0000000..ea542be
--- /dev/null
@@ -0,0 +1,28 @@
+#include <shlobj.h>
+#include "dir.h"
+
+using namespace std;
+
+namespace Msp {
+namespace FS {
+
+Path get_home_dir()
+{
+       char home[MAX_PATH];
+       if(SHGetFolderPath(0, CSIDL_PERSONAL, 0, 0, home)==S_OK)
+               return home;
+       return ".";
+}
+
+Path get_user_data_dir(const string &appname)
+{
+       if(appname.empty())
+               throw invalid_argument("get_user_data_dir");
+       char datadir[MAX_PATH];
+       if(SHGetFolderPath(0, CSIDL_LOCAL_APPDATA, 0, 0, datadir)==S_OK)
+               return Path(datadir)/appname;
+       return ".";
+}
+
+} // namespace FS
+} // namespace Msp