Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/appdir.c
| Show First 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
| static char btempdir_session[FILE_MAX] = ""; /* volatile temporary directory */ | static char btempdir_session[FILE_MAX] = ""; /* volatile temporary directory */ | ||||
| /* This is now only used to really get the user's default document folder */ | /* This is now only used to really get the user's default document folder */ | ||||
| /* On Windows I chose the 'Users/<MyUserName>/Documents' since it's used | /* On Windows I chose the 'Users/<MyUserName>/Documents' since it's used | ||||
| * as default location to save documents */ | * as default location to save documents */ | ||||
| const char *BKE_appdir_folder_default(void) | const char *BKE_appdir_folder_default(void) | ||||
| { | { | ||||
| #ifndef WIN32 | #ifndef WIN32 | ||||
| const char *const xdg_documents_dir = BLI_getenv("XDG_DOCUMENTS_DIR"); | static char documentfolder[FILE_MAX]; | ||||
| if (xdg_documents_dir) { | const char * env_dir_default = BLI_getenv("XDG_DOCUMENTS_DIR"); | ||||
| return xdg_documents_dir; | if (env_dir_default) { | ||||
| BLI_strncpy(documentfolder, env_dir_default, sizeof(documentfolder)); | |||||
| BLI_path_normalize_dir(NULL, documentfolder); | |||||
| return documentfolder; | |||||
| } | } | ||||
| return BLI_getenv("HOME"); | env_dir_default = BLI_getenv("HOME"); | ||||
| if (env_dir_default) { | |||||
| BLI_strncpy(documentfolder, env_dir_default, sizeof(documentfolder)); | |||||
| BLI_path_normalize_dir(NULL, documentfolder); | |||||
| return documentfolder; | |||||
| } | |||||
| return NULL; | |||||
| #else /* Windows */ | #else /* Windows */ | ||||
| static char documentfolder[MAXPATHLEN]; | static char documentfolder[MAXPATHLEN]; | ||||
| HRESULT hResult; | HRESULT hResult; | ||||
| /* Check for %HOME% env var */ | /* Check for %HOME% env var */ | ||||
| if (uput_getenv("HOME", documentfolder, MAXPATHLEN)) { | if (uput_getenv("HOME", documentfolder, MAXPATHLEN)) { | ||||
| if (BLI_is_dir(documentfolder)) { | if (BLI_is_dir(documentfolder)) { | ||||
| BLI_path_normalize_dir(NULL, documentfolder); | |||||
| return documentfolder; | return documentfolder; | ||||
| } | } | ||||
| } | } | ||||
| /* add user profile support for WIN 2K / NT. | /* add user profile support for WIN 2K / NT. | ||||
| * This is %APPDATA%, which translates to either | * This is %APPDATA%, which translates to either | ||||
| * %USERPROFILE%\Application Data or since Vista | * %USERPROFILE%\Application Data or since Vista | ||||
| * to %USERPROFILE%\AppData\Roaming | * to %USERPROFILE%\AppData\Roaming | ||||
| */ | */ | ||||
| hResult = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, documentfolder); | hResult = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, documentfolder); | ||||
| if (hResult == S_OK) { | if (hResult == S_OK) { | ||||
| if (BLI_is_dir(documentfolder)) { | if (BLI_is_dir(documentfolder)) { | ||||
| BLI_path_normalize_dir(NULL, documentfolder); | |||||
| return documentfolder; | return documentfolder; | ||||
| } | } | ||||
| } | } | ||||
| return NULL; | return NULL; | ||||
| #endif /* WIN32 */ | #endif /* WIN32 */ | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 934 Lines • Show Last 20 Lines | |||||