1
1

Cleanup: remove incorrect use of the r_ prefix, use sized argument

Rename `r_dir` to `dirpath` as this isn't a return only argument.
Also add the maximum size in the argument as a hint for the maximum size.
This commit is contained in:
2023-05-23 11:13:03 +10:00
parent c440efb23a
commit 5659e83e04
2 changed files with 43 additions and 31 deletions

View File

@@ -251,20 +251,24 @@ struct FileList {
BlendHandle *libfiledata;
/* Set given path as root directory,
* if last bool is true may change given string in place to a valid value.
* Returns True if valid dir. */
bool (*check_dir_fn)(FileList *, char *, const bool);
/**
* Set given path as root directory.
*
* \param do_change: When true, the callback may change given string in place to a valid value.
* \return True when `dirpath` is valid.
*/
bool (*check_dir_fn)(FileList *filelist, char dirpath[FILE_MAX_LIBEXTRA], const bool do_change);
/* Fill filelist (to be called by read job). */
void (*read_job_fn)(FileListReadJob *, bool *, bool *, float *);
/** Fill `filelist` (to be called by read job). */
void (*read_job_fn)(FileListReadJob *job_params, bool *stop, bool *do_update, float *progress);
/* Filter an entry of current filelist. */
bool (*filter_fn)(FileListInternEntry *, const char *, FileListFilter *);
/* Executed before filtering individual items, to set up additional filter data. */
void (*prepare_filter_fn)(const FileList *, FileListFilter *);
/** Filter an entry of current `filelist`. */
bool (*filter_fn)(FileListInternEntry *file, const char *root, FileListFilter *filter);
/** Executed before filtering individual items, to set up additional filter data. */
void (*prepare_filter_fn)(const FileList *filelist, FileListFilter *filter);
short tags; /* FileListTags */
/** #FileListTags. */
short tags;
};
/** #FileList.flags */
@@ -1139,7 +1143,9 @@ void filelist_free_icons(void)
}
}
void filelist_file_get_full_path(const FileList *filelist, const FileDirEntry *file, char *r_path)
void filelist_file_get_full_path(const FileList *filelist,
const FileDirEntry *file,
char r_path[/*FILE_MAX_LIBEXTRA*/])
{
if (file->asset) {
const std::string asset_path = AS_asset_representation_full_path_get(file->asset);
@@ -1343,40 +1349,46 @@ static void parent_dir_until_exists_or_default_root(char *dir)
}
}
static bool filelist_checkdir_dir(FileList * /*filelist*/, char *r_dir, const bool do_change)
static bool filelist_checkdir_dir(FileList * /*filelist*/,
char dirpath[FILE_MAX_LIBEXTRA],
const bool do_change)
{
if (do_change) {
parent_dir_until_exists_or_default_root(r_dir);
parent_dir_until_exists_or_default_root(dirpath);
return true;
}
return BLI_is_dir(r_dir);
return BLI_is_dir(dirpath);
}
static bool filelist_checkdir_lib(FileList * /*filelist*/, char *r_dir, const bool do_change)
static bool filelist_checkdir_lib(FileList * /*filelist*/,
char dirpath[FILE_MAX_LIBEXTRA],
const bool do_change)
{
char tdir[FILE_MAX_LIBEXTRA];
char *name;
const bool is_valid = (BLI_is_dir(r_dir) ||
(BKE_blendfile_library_path_explode(r_dir, tdir, nullptr, &name) &&
const bool is_valid = (BLI_is_dir(dirpath) ||
(BKE_blendfile_library_path_explode(dirpath, tdir, nullptr, &name) &&
BLI_is_file(tdir) && !name));
if (do_change && !is_valid) {
/* if not a valid library, we need it to be a valid directory! */
parent_dir_until_exists_or_default_root(r_dir);
parent_dir_until_exists_or_default_root(dirpath);
return true;
}
return is_valid;
}
static bool filelist_checkdir_main(FileList *filelist, char *r_dir, const bool do_change)
static bool filelist_checkdir_main(FileList *filelist,
char dirpath[FILE_MAX_LIBEXTRA],
const bool do_change)
{
/* TODO */
return filelist_checkdir_lib(filelist, r_dir, do_change);
return filelist_checkdir_lib(filelist, dirpath, do_change);
}
static bool filelist_checkdir_return_always_valid(struct FileList * /*filelist*/,
char * /*r_dir*/,
char /*dirpath*/[FILE_MAX_LIBEXTRA],
const bool /*do_change*/)
{
return true;
@@ -1990,19 +2002,19 @@ bool filelist_is_dir(FileList *filelist, const char *path)
return filelist->check_dir_fn(filelist, (char *)path, false);
}
void filelist_setdir(FileList *filelist, char *r_dir)
void filelist_setdir(FileList *filelist, char dirpath[FILE_MAX_LIBEXTRA])
{
const bool allow_invalid = filelist->asset_library_ref != nullptr;
BLI_assert(strlen(r_dir) < FILE_MAX_LIBEXTRA);
BLI_assert(strlen(dirpath) < FILE_MAX_LIBEXTRA);
BLI_path_abs(r_dir, BKE_main_blendfile_path_from_global());
BLI_path_normalize_dir(r_dir, FILE_MAX_LIBEXTRA);
const bool is_valid_path = filelist->check_dir_fn(filelist, r_dir, !allow_invalid);
BLI_path_abs(dirpath, BKE_main_blendfile_path_from_global());
BLI_path_normalize_dir(dirpath, FILE_MAX_LIBEXTRA);
const bool is_valid_path = filelist->check_dir_fn(filelist, dirpath, !allow_invalid);
BLI_assert(is_valid_path || allow_invalid);
UNUSED_VARS_NDEBUG(is_valid_path);
if (!STREQ(filelist->filelist.root, r_dir)) {
STRNCPY(filelist->filelist.root, r_dir);
if (!STREQ(filelist->filelist.root, dirpath)) {
STRNCPY(filelist->filelist.root, dirpath);
filelist->flags |= FL_FORCE_RESET;
}
}

View File

@@ -101,9 +101,9 @@ void filelist_free(struct FileList *filelist);
const char *filelist_dir(const struct FileList *filelist);
bool filelist_is_dir(struct FileList *filelist, const char *path);
/**
* May modify in place given r_dir, which is expected to be FILE_MAX_LIBEXTRA length.
* May modify in place given `dirpath`, which is expected to be #FILE_MAX_LIBEXTRA length.
*/
void filelist_setdir(struct FileList *filelist, char *r_dir);
void filelist_setdir(struct FileList *filelist, char dirpath[1090 /*FILE_MAX_LIBEXTRA*/]);
/**
* Limited version of full update done by space_file's file_refresh(),