#include <shlobj.h>
+#include <msp/core/application.h>
+#include <msp/core/except.h>
#include "dir.h"
using namespace std;
Path get_home_dir()
{
char home[MAX_PATH];
- if(SHGetFolderPath(0, CSIDL_PERSONAL, 0, 0, home)==S_OK)
+ if(SHGetFolderPath(nullptr, CSIDL_PERSONAL, nullptr, 0, home)==S_OK)
return home;
return ".";
}
-Path get_user_data_dir(const string &appname)
+Path get_user_data_dir()
{
+ const string &appname = Application::get_name();
if(appname.empty())
- throw invalid_argument("get_user_data_dir");
+ throw invalid_state("no application name");
+
char datadir[MAX_PATH];
- if(SHGetFolderPath(0, CSIDL_LOCAL_APPDATA, 0, 0, datadir)==S_OK)
+ if(SHGetFolderPath(nullptr, CSIDL_LOCAL_APPDATA, nullptr, 0, datadir)==S_OK)
return Path(datadir)/appname;
return ".";
}