view src/core/filesystem.cpp @ 9:5c0397762b53

INCOMPLETE: megacommit :)
author Paper <mrpapersonic@gmail.com>
date Sun, 10 Sep 2023 03:59:16 -0400
parents src/filesystem.cpp@07a9095eaeed
children fc1bf97c528b
line wrap: on
line source

#ifdef WIN32
#include <shlobj.h>
#elif defined(MACOSX)
#include "sys/osx/filesystem.h"
#elif defined(__linux__)
#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>
#endif
#include "core/config.h"
#include "core/filesystem.h"
#include "core/strings.h"
#include <QMessageBox>
#include <filesystem>
#include <limits.h>

std::filesystem::path get_config_path(void) {
	std::filesystem::path cfg_path;
#ifdef WIN32
	char buf[PATH_MAX + 1];
	if (SHGetFolderPathAndSubDir(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, 0, CONFIG_DIR, buf) == S_OK)
		cfg_path = std::filesystem::path(buf) / CONFIG_NAME;
#elif defined(MACOSX)
	/* pass all of our problems to */
	cfg_path = std::filesystem::path(osx::GetApplicationSupportDirectory()) / CONFIG_DIR / CONFIG_NAME;
#else // just assume POSIX
	if (getenv("HOME") != NULL)
		cfg_path = std::filesystem::path(getenv("HOME")) / ".config" / CONFIG_DIR / CONFIG_NAME;
#ifdef __linux__
	else
		cfg_path = std::filesystem::path(getpwuid(getuid())->pw_dir) / ".config" / CONFIG_DIR / CONFIG_NAME;
#endif // __linux__
#endif // !WIN32 && !MACOSX
	return cfg_path;
}