macOS: add tilde-based path expander
Replaces `HOME` environment variable usage for user directories like in D12802. Reviewed By: #platform_macos, brecht Differential Revision: https://developer.blender.org/D13212
This commit is contained in:
parent
23be5fd449
commit
9df13fba69
Notes:
blender-bot
2023-02-14 00:44:02 +01:00
Referenced by issue #94795, Wrong linux ~ tilde home path handling
|
@ -175,10 +175,12 @@ const char *BKE_appdir_folder_default_or_root(void)
|
|||
|
||||
const char *BKE_appdir_folder_home(void)
|
||||
{
|
||||
#ifndef WIN32
|
||||
return BLI_getenv("HOME");
|
||||
#else /* Windows */
|
||||
#ifdef WIN32
|
||||
return BLI_getenv("userprofile");
|
||||
#elif defined(__APPLE__)
|
||||
return BLI_expand_tilde("~/");
|
||||
#else
|
||||
return BLI_getenv("HOME");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -248,10 +250,8 @@ bool BKE_appdir_font_folder_default(char *dir)
|
|||
BLI_strncpy_wchar_as_utf8(test_dir, wpath, sizeof(test_dir));
|
||||
}
|
||||
#elif defined(__APPLE__)
|
||||
const char *home = BLI_getenv("HOME");
|
||||
if (home) {
|
||||
BLI_path_join(test_dir, sizeof(test_dir), home, "Library", "Fonts", NULL);
|
||||
}
|
||||
STRNCPY(test_dir, BLI_expand_tilde("~/Library/Fonts/"));
|
||||
BLI_path_slash_ensure(test_dir);
|
||||
#else
|
||||
STRNCPY(test_dir, "/usr/share/fonts");
|
||||
#endif
|
||||
|
|
|
@ -322,6 +322,14 @@ void *BLI_file_read_binary_as_mem(const char *filepath, size_t pad_bytes, size_t
|
|||
*/
|
||||
void BLI_file_free_lines(struct LinkNode *lines);
|
||||
|
||||
#ifdef __APPLE__
|
||||
/**
|
||||
* Expand the leading `~` in the given path to `/Users/$USER`.
|
||||
* This doesn't preserve the trailing path separator.
|
||||
* Giving a path without leading `~` is not an error.
|
||||
*/
|
||||
const char *BLI_expand_tilde(const char *path_with_tilde);
|
||||
#endif
|
||||
/* This weirdo pops up in two places. */
|
||||
#if !defined(WIN32)
|
||||
# ifndef O_BINARY
|
||||
|
|
|
@ -184,3 +184,20 @@ eFileAttributes BLI_file_attributes(const char *path)
|
|||
|
||||
return (eFileAttributes)ret;
|
||||
}
|
||||
|
||||
const char *BLI_expand_tilde(const char *path_with_tilde)
|
||||
{
|
||||
static char path_expanded[FILE_MAX];
|
||||
@autoreleasepool {
|
||||
const NSString *const str_with_tilde = [[NSString alloc] initWithCString:path_with_tilde
|
||||
encoding:NSUTF8StringEncoding];
|
||||
if (!str_with_tilde) {
|
||||
return nullptr;
|
||||
}
|
||||
const NSString *const str_expanded = [str_with_tilde stringByExpandingTildeInPath];
|
||||
[str_expanded getCString:path_expanded
|
||||
maxLength:sizeof(path_expanded)
|
||||
encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
return path_expanded;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue