[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43796] trunk/blender/source/blender/ blenlib/intern/bpath.c: fix own error [#29634] 'Find Missing Files' breaks good links
Campbell Barton
ideasman42 at gmail.com
Tue Jan 31 19:00:50 CET 2012
Revision: 43796
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43796
Author: campbellbarton
Date: 2012-01-31 18:00:41 +0000 (Tue, 31 Jan 2012)
Log Message:
-----------
fix own error [#29634] 'Find Missing Files' breaks good links
Modified Paths:
--------------
trunk/blender/source/blender/blenlib/intern/bpath.c
Modified: trunk/blender/source/blender/blenlib/intern/bpath.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/bpath.c 2012-01-31 16:24:02 UTC (rev 43795)
+++ trunk/blender/source/blender/blenlib/intern/bpath.c 2012-01-31 18:00:41 UTC (rev 43796)
@@ -194,10 +194,12 @@
/* find this file recursively, use the biggest file so thumbnails dont get used by mistake
- - dir: subdir to search
- - filename: set this filename
- - filesize: filesize for the file
-*/
+ * - dir: subdir to search
+ * - filename: set this filename
+ * - filesize: filesize for the file
+ *
+ * return found: 1/0.
+ */
#define MAX_RECUR 16
static int findFileRecursive(char *filename_new,
const char *dirname,
@@ -211,11 +213,14 @@
struct stat status;
char path[FILE_MAX];
int size;
+ int found = FALSE;
+ filename_new[0] = '\0';
+
dir= opendir(dirname);
if (dir==NULL)
- return 0;
+ return found;
if (*filesize == -1)
*filesize= 0; /* dir opened fine */
@@ -237,19 +242,20 @@
if ((size > 0) && (size > *filesize)) { /* find the biggest file */
*filesize= size;
BLI_strncpy(filename_new, path, FILE_MAX);
+ found = TRUE;
}
}
}
else if (S_ISDIR(status.st_mode)) { /* is subdir */
if (*recur_depth <= MAX_RECUR) {
(*recur_depth)++;
- findFileRecursive(filename_new, path, filename, filesize, recur_depth);
+ found |= findFileRecursive(filename_new, path, filename, filesize, recur_depth);
(*recur_depth)--;
}
}
}
closedir(dir);
- return 1;
+ return found;
}
typedef struct BPathFind_Data
@@ -266,19 +272,26 @@
int filesize= -1;
int recur_depth= 0;
+ int found;
- findFileRecursive(filename_new,
- data->searchdir, BLI_path_basename((char *)path_src),
- &filesize, &recur_depth);
+ found = findFileRecursive(filename_new,
+ data->searchdir, BLI_path_basename((char *)path_src),
+ &filesize, &recur_depth);
if (filesize == -1) { /* could not open dir */
BKE_reportf(data->reports, RPT_WARNING,
+ "Could open directory \"%s\"",
+ BLI_path_basename(data->searchdir));
+ return FALSE;
+ }
+ else if (found == FALSE) {
+ BKE_reportf(data->reports, RPT_WARNING,
"Could not find \"%s\" in \"%s\"",
BLI_path_basename((char *)path_src), data->searchdir);
return FALSE;
}
else {
- strcpy(path_dst, filename_new);
+ BLI_strncpy(path_dst, filename_new, FILE_MAX);
return TRUE;
}
}
More information about the Bf-blender-cvs
mailing list