Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-06-24 06:57:06 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-06-24 06:57:06 +0400
commit0f4802817340794b50b09daead59c54e33caf09d (patch)
tree6eb6cb487a39401d3cfb0f48a13a337bf4355972 /source/blender/blenkernel/intern/bpath.c
parent8ce83150a7fa3b0214e73c468abde70210c192b9 (diff)
fix [#35825] "Find missing files" seems to search for files which are not missing
Made finding paths for files that exist optional (and off by default), since its handy for relocating projects.
Diffstat (limited to 'source/blender/blenkernel/intern/bpath.c')
-rw-r--r--source/blender/blenkernel/intern/bpath.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/bpath.c b/source/blender/blenkernel/intern/bpath.c
index fe86b413a99..a4cb7cbf628 100644
--- a/source/blender/blenkernel/intern/bpath.c
+++ b/source/blender/blenkernel/intern/bpath.c
@@ -263,8 +263,9 @@ static int findFileRecursive(char *filename_new,
typedef struct BPathFind_Data {
const char *basedir;
- char searchdir[FILE_MAX];
+ const char *searchdir;
ReportList *reports;
+ bool find_all;
} BPathFind_Data;
static int findMissingFiles_visit_cb(void *userdata, char *path_dst, const char *path_src)
@@ -276,6 +277,12 @@ static int findMissingFiles_visit_cb(void *userdata, char *path_dst, const char
int recur_depth = 0;
int found;
+ if (data->find_all == false) {
+ if (BLI_exists(path_src)) {
+ return false;
+ }
+ }
+
filename_new[0] = '\0';
found = findFileRecursive(filename_new,
@@ -300,14 +307,16 @@ static int findMissingFiles_visit_cb(void *userdata, char *path_dst, const char
}
}
-void BKE_bpath_missing_files_find(Main *bmain, const char *searchpath, ReportList *reports)
+void BKE_bpath_missing_files_find(Main *bmain, const char *searchpath, ReportList *reports,
+ const bool find_all)
{
struct BPathFind_Data data = {NULL};
data.reports = reports;
- BLI_split_dir_part(searchpath, data.searchdir, sizeof(data.searchdir));
+ data.searchdir = searchpath;
+ data.find_all = find_all;
- BKE_bpath_traverse_main(bmain, findMissingFiles_visit_cb, 0, (void *)&data);
+ BKE_bpath_traverse_main(bmain, findMissingFiles_visit_cb, BKE_BPATH_TRAVERSE_ABS, (void *)&data);
}
/* Run a visitor on a string, replacing the contents of the string as needed. */