diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-06-24 06:57:06 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-06-24 06:57:06 +0400 |
commit | 0f4802817340794b50b09daead59c54e33caf09d (patch) | |
tree | 6eb6cb487a39401d3cfb0f48a13a337bf4355972 /source/blender/blenkernel/intern/bpath.c | |
parent | 8ce83150a7fa3b0214e73c468abde70210c192b9 (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.c | 17 |
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. */ |