[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31977] trunk/blender/source/blender/ windowmanager: fix for some errors when saving blend files.
Campbell Barton
ideasman42 at gmail.com
Fri Sep 17 10:53:39 CEST 2010
Revision: 31977
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31977
Author: campbellbarton
Date: 2010-09-17 10:53:39 +0200 (Fri, 17 Sep 2010)
Log Message:
-----------
fix for some errors when saving blend files.
- when comparing with libraries, relative paths were used which could easily fail.
- testing libraries was done before adding the .blend extension.
Modified Paths:
--------------
trunk/blender/source/blender/windowmanager/WM_api.h
trunk/blender/source/blender/windowmanager/intern/wm_files.c
Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h 2010-09-17 06:52:48 UTC (rev 31976)
+++ trunk/blender/source/blender/windowmanager/WM_api.h 2010-09-17 08:53:39 UTC (rev 31977)
@@ -80,7 +80,7 @@
int WM_read_homefile (struct bContext *C, struct wmOperator *op);
int WM_write_homefile (struct bContext *C, struct wmOperator *op);
void WM_read_file (struct bContext *C, char *name, struct ReportList *reports);
-int WM_write_file (struct bContext *C, char *target, int fileflags, struct ReportList *reports, int copy);
+int WM_write_file (struct bContext *C, const char *target, int fileflags, struct ReportList *reports, int copy);
void WM_read_autosavefile(struct bContext *C);
void WM_autosave_init (struct wmWindowManager *wm);
Modified: trunk/blender/source/blender/windowmanager/intern/wm_files.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_files.c 2010-09-17 06:52:48 UTC (rev 31976)
+++ trunk/blender/source/blender/windowmanager/intern/wm_files.c 2010-09-17 08:53:39 UTC (rev 31977)
@@ -585,7 +585,7 @@
}
}
-int WM_write_file(bContext *C, char *target, int fileflags, ReportList *reports, int copy)
+int WM_write_file(bContext *C, const char *target, int fileflags, ReportList *reports, int copy)
{
Library *li;
int len;
@@ -606,25 +606,20 @@
return -1;
}
+ BLI_strncpy(di, target, FILE_MAX);
+ BLI_replace_extension(di, FILE_MAX, ".blend");
+ /* dont use 'target' anymore */
+
/* send the OnSave event */
for (li= G.main->library.first; li; li= li->id.next) {
- if (BLI_streq(li->name, target)) {
- BKE_report(reports, RPT_ERROR, "Cannot overwrite used library");
+ if (strcmp(li->filepath, di) == 0) {
+ BKE_reportf(reports, RPT_ERROR, "Can't overwrite used library '%f'", di);
return -1;
}
}
-
- if (!BLO_has_bfile_extension(target) && (len+6 < FILE_MAX)) {
- sprintf(di, "%s.blend", target);
- } else {
- strcpy(di, target);
- }
-// if (BLI_exists(di)) {
-// XXX if(!saveover(di))
-// XXX return;
-// }
-
+ /* operator now handles overwrite checks */
+
if (G.fileflags & G_AUTOPACK) {
packAll(G.main, reports);
}
More information about the Bf-blender-cvs
mailing list