Blender V5.0
path.cpp File Reference
#include "util/path.h"
#include "util/algorithm.h"
#include "util/map.h"
#include "util/md5.h"
#include "util/set.h"
#include "util/string.h"
#include "util/vector.h"
#include <OpenImageIO/filesystem.h>
#include <OpenImageIO/strutil.h>
#include <OpenImageIO/sysutil.h>
#include <cstdio>
#include <sys/stat.h>
#include <zstd.h>
#include <dirent.h>
#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>

Go to the source code of this file.

Classes

struct  SourceReplaceState

Macros

#define DIR_SEP   '/'

Typedefs

using path_stat_t = struct stat

Functions

static char * path_specials (const string &sub)
void path_init (const string &path, const string &user_path)
string path_get (const string &sub)
string path_user_get (const string &sub)
string path_cache_get (const string &sub)
string path_filename (const string &path)
string path_dirname (const string &path)
string path_join (const string &dir, const string &file)
string path_escape (const string &path)
bool path_is_relative (const string &path)
static int path_stat (const string &path, path_stat_t *st)
size_t path_file_size (const string &path)
bool path_exists (const string &path)
bool path_is_directory (const string &path)
static void path_files_md5_hash_recursive (MD5Hash &hash, const string &dir)
string path_files_md5_hash (const string &dir)
static bool create_directories_recursivey (const string &path)
void path_create_directories (const string &filepath)
bool path_write_binary (const string &path, const vector< uint8_t > &binary)
bool path_write_text (const string &path, string &text)
bool path_read_binary (const string &path, vector< uint8_t > &binary)
bool path_read_compressed_binary (const string &path, vector< uint8_t > &binary)
bool path_read_text (const string &path, string &text)
bool path_read_compressed_text (const string &path, string &text)
uint64_t path_modified_time (const string &path)
bool path_remove (const string &path)
static string path_source_replace_includes_recursive (const string &source, const string &source_filepath, SourceReplaceState *state)
static string line_directive (const SourceReplaceState &state, const string &path, const size_t line_number)
static string path_source_handle_preprocessor (const string &preprocessor_line, const string &source_filepath, const size_t line_number, SourceReplaceState *state)
string path_source_replace_includes (const string &source, const string &path)
FILE * path_fopen (const string &path, const string &mode)
static void path_cache_kernel_mark_used (const string &path)
bool path_cache_kernel_exists_and_mark_used (const string &path)
void path_cache_kernel_mark_added_and_clear_old (const string &new_path, const size_t max_old_kernel_of_same_type)

Variables

static string cached_path
static string cached_user_path
static string cached_xdg_cache_path

Macro Definition Documentation

◆ DIR_SEP

#define DIR_SEP   '/'

Definition at line 28 of file path.cpp.

Referenced by path_dirname(), path_filename(), path_is_relative(), and path_join().

Typedef Documentation

◆ path_stat_t

using path_stat_t = struct stat

Definition at line 57 of file path.cpp.

Function Documentation

◆ create_directories_recursivey()

bool create_directories_recursivey ( const string & path)
static

◆ line_directive()

string line_directive ( const SourceReplaceState & state,
const string & path,
const size_t line_number )
static

Definition at line 797 of file path.cpp.

References i, length(), path_filename(), state, and string_startswith().

Referenced by path_source_handle_preprocessor().

◆ path_cache_get()

string path_cache_get ( const string & sub)

Definition at line 360 of file path.cpp.

References cached_xdg_cache_path, path_join(), path_user_get(), and result.

◆ path_cache_kernel_exists_and_mark_used()

bool path_cache_kernel_exists_and_mark_used ( const string & path)

Definition at line 994 of file path.cpp.

References path_cache_kernel_mark_used(), and path_exists().

◆ path_cache_kernel_mark_added_and_clear_old()

void path_cache_kernel_mark_added_and_clear_old ( const string & new_path,
const size_t max_old_kernel_of_same_type )

◆ path_cache_kernel_mark_used()

void path_cache_kernel_mark_used ( const string & path)
static

◆ path_create_directories()

void path_create_directories ( const string & filepath)

Definition at line 647 of file path.cpp.

References create_directories_recursivey(), and path_dirname().

Referenced by path_write_binary().

◆ path_dirname()

◆ path_escape()

string path_escape ( const string & path)

Definition at line 437 of file path.cpp.

References result, and string_replace().

Referenced by TEST(), TEST(), TEST(), TEST(), and TEST().

◆ path_exists()

◆ path_file_size()

size_t path_file_size ( const string & path)

Definition at line 554 of file path.cpp.

References path_stat().

Referenced by TileManager::finish_write_tiles(), and path_read_binary().

◆ path_filename()

string path_filename ( const string & path)

Definition at line 378 of file path.cpp.

References DIR_SEP.

Referenced by line_directive(), main(), OIIOImageLoader::name(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and xml_read_file().

◆ path_files_md5_hash()

string path_files_md5_hash ( const string & dir)

Definition at line 611 of file path.cpp.

References hash, and path_files_md5_hash_recursive().

◆ path_files_md5_hash_recursive()

void path_files_md5_hash_recursive ( MD5Hash & hash,
const string & dir )
static

◆ path_fopen()

FILE * path_fopen ( const string & path,
const string & mode )

◆ path_get()

string path_get ( const string & sub)

Definition at line 337 of file path.cpp.

References cached_path, path_dirname(), path_join(), and path_specials().

Referenced by HdCyclesFileReader::read().

◆ path_init()

void path_init ( const string & path,
const string & user_path )

Definition at line 324 of file path.cpp.

References cached_path, and cached_user_path.

Referenced by BLI_path_join_array(), init_func(), and main().

◆ path_is_directory()

bool path_is_directory ( const string & path)

◆ path_is_relative()

bool path_is_relative ( const string & path)

Definition at line 444 of file path.cpp.

References DIR_SEP.

Referenced by TEST(), TEST(), TEST(), TEST(), TEST(), and xml_read_shader_graph().

◆ path_join()

◆ path_modified_time()

uint64_t path_modified_time ( const string & path)

Definition at line 769 of file path.cpp.

References path_stat().

◆ path_read_binary()

bool path_read_binary ( const string & path,
vector< uint8_t > & binary )

Definition at line 681 of file path.cpp.

References path_file_size(), and path_fopen().

Referenced by path_read_compressed_binary(), and path_read_text().

◆ path_read_compressed_binary()

bool path_read_compressed_binary ( const string & path,
vector< uint8_t > & binary )

Definition at line 708 of file path.cpp.

References path_read_binary(), and string_endswith().

Referenced by path_read_compressed_text().

◆ path_read_compressed_text()

bool path_read_compressed_text ( const string & path,
string & text )

Definition at line 754 of file path.cpp.

References path_exists(), path_read_compressed_binary(), size(), and str.

◆ path_read_text()

bool path_read_text ( const string & path,
string & text )

◆ path_remove()

bool path_remove ( const string & path)

◆ path_source_handle_preprocessor()

string path_source_handle_preprocessor ( const string & preprocessor_line,
const string & source_filepath,
const size_t line_number,
SourceReplaceState * state )
static

◆ path_source_replace_includes()

string path_source_replace_includes ( const string & source,
const string & path )

Definition at line 968 of file path.cpp.

References path_source_replace_includes_recursive(), and state.

◆ path_source_replace_includes_recursive()

string path_source_replace_includes_recursive ( const string & source,
const string & source_filepath,
SourceReplaceState * state )
static

◆ path_specials()

char * path_specials ( const string & sub)
static

Definition at line 289 of file path.cpp.

Referenced by path_get().

◆ path_stat()

int path_stat ( const string & path,
path_stat_t * st )
static

Definition at line 548 of file path.cpp.

Referenced by path_file_size(), path_is_directory(), and path_modified_time().

◆ path_user_get()

string path_user_get ( const string & sub)

Definition at line 351 of file path.cpp.

References cached_user_path, path_dirname(), and path_join().

Referenced by path_cache_get().

◆ path_write_binary()

bool path_write_binary ( const string & path,
const vector< uint8_t > & binary )

Definition at line 653 of file path.cpp.

References path_create_directories(), and path_fopen().

Referenced by path_write_text().

◆ path_write_text()

bool path_write_text ( const string & path,
string & text )

Definition at line 673 of file path.cpp.

References path_write_binary().

Variable Documentation

◆ cached_path

string cached_path
static

Definition at line 60 of file path.cpp.

Referenced by blender::io::hydra::cache_or_get_image_file(), path_get(), and path_init().

◆ cached_user_path

string cached_user_path
static

Definition at line 61 of file path.cpp.

Referenced by path_init(), and path_user_get().

◆ cached_xdg_cache_path

string cached_xdg_cache_path
static

Definition at line 62 of file path.cpp.

Referenced by path_cache_get().