39 static string system_path = string(
static_path) +
"/blender/" + versionstr;
40 return system_path.c_str();
51 const char *home_dir = getenv(
"HOME");
52 if (home_dir ==
nullptr) {
53 if (
const passwd *pwuser = getpwuid(getuid())) {
54 home_dir = pwuser->pw_dir;
62 static string user_path;
63 static int last_version = 0;
68 if (user_path.empty() || last_version != version) {
71 last_version = version;
74 user_path = string(home) +
"/.blender/" + versionstr;
80 return user_path.c_str();
82 if (user_path.empty() || last_version != version) {
83 const char *home = getenv(
"XDG_CONFIG_HOME");
85 last_version = version;
88 user_path = string(home) +
"/blender/" + versionstr;
93 user_path = string(home) +
"/.config/blender/" + versionstr;
101 return user_path.c_str();
107 const char *type_str;
111 type_str =
"DESKTOP";
114 type_str =
"DOCUMENTS";
117 type_str =
"DOWNLOAD";
123 type_str =
"PICTURES";
129 const char *cache_dir = getenv(
"XDG_CACHE_HOME");
136 if (home_dir ==
nullptr) {
139 return string(home_dir) +
"/.cache";
144 "GHOST_SystemPathsUnix::getUserSpecialDir(): Invalid enum value for type parameter");
149 string command = string(
"xdg-user-dir ") + type_str +
" 2> /dev/null";
151 FILE *fstream = popen(command.c_str(),
"r");
152 if (fstream ==
nullptr) {
155 std::stringstream path_stream;
156 while (!feof(fstream)) {
157 char c = fgetc(fstream);
164 if (pclose(fstream) == -1) {
165 perror(
"GHOST_SystemPathsUnix::getUserSpecialDir failed at pclose()");
169 std::string path = path_stream.str();
170 return path[0] ? std::optional(path) : std::nullopt;
#define GHOST_ASSERT(x, info)
static const char * static_path
static const char * home_dir_get()
GHOST_TUserSpecialDirTypes
@ GHOST_kUserSpecialDirDesktop
@ GHOST_kUserSpecialDirMusic
@ GHOST_kUserSpecialDirPictures
@ GHOST_kUserSpecialDirVideos
@ GHOST_kUserSpecialDirDownloads
@ GHOST_kUserSpecialDirCaches
@ GHOST_kUserSpecialDirDocuments
const char * getBinaryDir() const override
const char * getUserDir(int version, const char *versionstr) const override
std::optional< std::string > getUserSpecialDir(GHOST_TUserSpecialDirTypes type) const override
~GHOST_SystemPathsUnix() override
void addToSystemRecentFiles(const char *filepath) const override
const char * getSystemDir(int version, const char *versionstr) const override