Blender V4.3
storage_apple.mm File Reference
import <Foundation/Foundation.h>
#include <string>
#include <sys/xattr.h>
#include "BLI_fileops.h"
#include "BLI_path_utils.hh"
#include "BLI_string.h"

Go to the source code of this file.

Functions

bool BLI_file_alias_target (const char *filepath, char r_targetpath[FILE_MAXDIR])
 
static bool find_attribute (const std::string &attributes, const char *search_attribute)
 
static bool test_onedrive_file_is_placeholder (const char *path)
 
static bool test_file_is_offline (const char *path)
 
eFileAttributes BLI_file_attributes (const char *path)
 
const char * BLI_expand_tilde (const char *path_with_tilde)
 
char * BLI_current_working_dir (char *dir, const size_t maxncpy)
 
bool BLI_change_working_dir (const char *dir)
 

Variables

static const char * ONEDRIVE_RECALLONOPEN_ATTRIBUTE = "com.microsoft.OneDrive.RecallOnOpen"
 

Detailed Description

macOS specific implementations for storage.c.

Definition in file storage_apple.mm.

Function Documentation

◆ BLI_change_working_dir()

bool BLI_change_working_dir ( const char * dir)

Changes the current working directory to the provided path.

Usage of this function is strongly discouraged as it is not thread safe. It will likely cause issues if there is an operation on another thread that does not expect the current working directory to change. This has been added to support USDZ export, which has a problematic "feature" described in this issue #99807. It will be removed if it is possible to resolve that issue upstream in the USD library.

Returns
true on success, false otherwise.

Definition at line 208 of file storage_apple.mm.

References ARRAY_SIZE, BLI_assert, BLI_is_dir(), BLI_setenv(), BLI_thread_is_main(), conv_utf_8_to_16(), and FILE_MAX.

Referenced by blender::io::usd::perform_usdz_conversion(), and blender::tests::TEST_F().

◆ BLI_current_working_dir()

char * BLI_current_working_dir ( char * dir,
size_t maxncpy )

Copies the current working directory into *dir (max size maxncpy), and returns a pointer to same.

Note
can return NULL when the size is not big enough

Definition at line 195 of file storage_apple.mm.

References BLI_getenv(), BLI_strncpy(), BLI_strncpy_wchar_as_utf8(), BLI_strnlen(), NULL, and PATH_MAX.

Referenced by BLI_path_abs_from_cwd(), blender::io::usd::perform_usdz_conversion(), blender::io::usd::TEST_F(), and blender::tests::TEST_F().

◆ BLI_expand_tilde()

const char * BLI_expand_tilde ( const char * path_with_tilde)

Definition at line 178 of file storage_apple.mm.

References FILE_MAX.

Referenced by BKE_appdir_folder_home(), and BKE_appdir_font_folder_default().

◆ BLI_file_alias_target()

bool BLI_file_alias_target ( const char * filepath,
char r_targetpath[FILE_MAXDIR] )
Parameters
r_targetpathBuffer for the target path an alias points to.
Returns
Whether the file at the input path is an alias.

Definition at line 28 of file storage_apple.mm.

References error(), FILE_MAXDIR, and options.

◆ BLI_file_attributes()

◆ find_attribute()

static bool find_attribute ( const std::string & attributes,
const char * search_attribute )
static

Checks if the given string of listxattr() attributes contains a specific attribute.

Parameters
attributesa string of null-terminated listxattr() attributes.
search_attributethe attribute to search for.
Returns
'true' when the attribute is found, otherwise 'false'.

Definition at line 71 of file storage_apple.mm.

References STREQ.

Referenced by OSLRenderServices::get_attribute(), osl_get_attribute(), primitive_motion_vector(), primitive_ptex(), primitive_tangent(), primitive_uv(), svm_node_attr_init(), svm_node_closure_bsdf(), svm_node_enter_bump_eval(), svm_node_normal_map(), svm_node_principled_volume(), svm_node_tangent(), svm_node_vector_displacement(), svm_node_vertex_color(), svm_node_vertex_color_bump_dx(), svm_node_vertex_color_bump_dy(), and test_onedrive_file_is_placeholder().

◆ test_file_is_offline()

static bool test_file_is_offline ( const char * path)
static

Checks if the file is marked as offline and not immediately available.

Parameters
paththe path of the file.
Returns
'true' when the file is a placeholder, otherwise 'false'.

Definition at line 119 of file storage_apple.mm.

References test_onedrive_file_is_placeholder().

Referenced by BLI_file_attributes().

◆ test_onedrive_file_is_placeholder()

static bool test_onedrive_file_is_placeholder ( const char * path)
static

Checks if the file is merely a placeholder for a OneDrive file that hasn't yet been downloaded.

Parameters
paththe path of the file.
Returns
'true' when the file is a OneDrive placeholder, otherwise 'false'.

Definition at line 90 of file storage_apple.mm.

References find_attribute(), and ONEDRIVE_RECALLONOPEN_ATTRIBUTE.

Referenced by test_file_is_offline().

Variable Documentation

◆ ONEDRIVE_RECALLONOPEN_ATTRIBUTE

const char* ONEDRIVE_RECALLONOPEN_ATTRIBUTE = "com.microsoft.OneDrive.RecallOnOpen"
static

Definition at line 20 of file storage_apple.mm.

Referenced by test_onedrive_file_is_placeholder().