Update: createSystemFolder() ja crea la carpeta on toca en Linux

This commit is contained in:
2025-02-19 19:43:56 +01:00
parent c6d15bb96f
commit bd6807d655
2 changed files with 18 additions and 7 deletions

View File

@@ -421,10 +421,10 @@ bool Director::saveConfig()
}
// Crea la carpeta del sistema donde guardar datos
void Director::createSystemFolder(std::string folder)
void Director::createSystemFolder(const std::string &folder)
{
#ifdef _WIN32
systemFolder = std::string(getenv("APPDATA")) + "/" + folder;
system_folder_ = std::string(getenv("APPDATA")) + "/" + folder;
#elif __APPLE__
struct passwd *pw = getpwuid(getuid());
const char *homedir = pw->pw_dir;
@@ -432,17 +432,28 @@ void Director::createSystemFolder(std::string folder)
#elif __linux__
struct passwd *pw = getpwuid(getuid());
const char *homedir = pw->pw_dir;
systemFolder = std::string(homedir) + "/." + folder;
system_folder_ = std::string(homedir) + "/.config/" + folder;
{
// Intenta crear ".config", per si no existeix
std::string config_base_folder = std::string(homedir) + "/.config";
int ret = mkdir(config_base_folder.c_str(), S_IRWXU);
if (ret == -1 && errno != EEXIST)
{
printf("ERROR CREATING CONFIG BASE FOLDER.");
exit(EXIT_FAILURE);
}
}
#endif
struct stat st = {0};
if (stat(systemFolder.c_str(), &st) == -1)
if (stat(system_folder_.c_str(), &st) == -1)
{
errno = 0;
#ifdef _WIN32
int ret = mkdir(systemFolder.c_str());
int ret = mkdir(system_folder_.c_str());
#else
int ret = mkdir(systemFolder.c_str(), S_IRWXU);
int ret = mkdir(system_folder_.c_str(), S_IRWXU);
#endif
if (ret == -1)