[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