1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-12-27 07:06:00 +00:00
Aquaria/ExternalLibs/ttvfs/VFSSystemPaths.cpp

85 lines
1.2 KiB
C++
Raw Normal View History

2014-04-06 17:19:33 +00:00
#include "VFSInternal.h"
#ifdef _WIN32
# include <shlobj.h>
#endif
#include "VFSSystemPaths.h"
#include "VFSTools.h"
2014-04-06 17:19:33 +00:00
VFS_NAMESPACE_START
std::string GetUserDir()
{
2014-04-06 17:19:33 +00:00
const char *user;
#ifdef _WIN32
TCHAR szPath[MAX_PATH];
2014-04-06 17:19:33 +00:00
if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PROFILE, NULL, 0, szPath)))
{
return szPath;
}
// Fallback
2014-04-06 17:19:33 +00:00
user = getenv("USERPROFILE");
if(user)
return user;
2014-04-06 17:19:33 +00:00
#endif
2014-04-06 17:19:33 +00:00
// Assume POSIX compliance
user = getenv("HOME");
if(user)
return user;
2014-04-06 17:19:33 +00:00
return "";
}
std::string GetAppDir(const char *appname)
{
std::string ret;
#ifdef _WIN32
TCHAR szPath[MAX_PATH];
if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, szPath)))
{
ret = szPath;
}
else
{
// Fallback
const char *user = getenv("APPDATA");
if(user)
ret = user;
else
ret = "."; // Seems we have no other choice
}
2014-04-06 17:19:33 +00:00
ret += '/';
#else // Assume POSIX compliance
const char *user = getenv("HOME");
if(user)
ret = user;
else
ret = ".";
2014-04-06 17:19:33 +00:00
ret += "/.";
#endif
2014-04-06 17:19:33 +00:00
ret += appname;
FixPath(ret);
return ret;
}
VFS_NAMESPACE_END