[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29906] trunk/blender/source/blender: better reporting for file i/o failier, use system error message in more places: Permission Denied, No space left, File not found etc.

Campbell Barton ideasman42 at gmail.com
Sat Jul 3 19:47:06 CEST 2010


Revision: 29906
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29906
Author:   campbellbarton
Date:     2010-07-03 19:47:06 +0200 (Sat, 03 Jul 2010)

Log Message:
-----------
better reporting for file i/o failier, use system error message in more places: Permission Denied, No space left, File not found etc.
- blend load/save uses os message.
- image load gives os message. (remove check for slash at end of line, just let the os report an error)
- python api load image/font/text raise errors with message (was just retuning None for image and font)
- minor edits to py api errors.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/space_image/image_ops.c
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    trunk/blender/source/blender/makesrna/intern/rna_main_api.c
    trunk/blender/source/blender/python/generic/bgl.c
    trunk/blender/source/blender/python/generic/blf_api.c
    trunk/blender/source/blender/python/generic/bpy_internal_import.c
    trunk/blender/source/blender/windowmanager/intern/wm_files.c

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -328,13 +328,6 @@
 	const char *libname;
 	char str[FILE_MAX], strtest[FILE_MAX];
 	
-	/* escape when name is directory */
-	len= strlen(name);
-	if(len) {
-		if(name[len-1]=='/' || name[len-1]=='\\')
-			return NULL;
-	}
-	
 	BLI_strncpy(str, name, sizeof(str));
 	BLI_path_abs(str, G.sce);
 	

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -1724,10 +1724,8 @@
 	object_to_mat3(ob, tmat);
 	
 	copy_m4_m3(mat, tmat);
-	
-	mat[3][0]= ob->loc[0] + ob->dloc[0];
-	mat[3][1]= ob->loc[1] + ob->dloc[1];
-	mat[3][2]= ob->loc[2] + ob->dloc[2];
+
+	add_v3_v3v3(mat[3], ob->loc, ob->dloc);
 }
 
 int enable_cu_speed= 1;

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -962,7 +962,7 @@
 	
 	gzfile= gzopen(name, "rb");
 
-	if (NULL == gzfile) {
+	if (gzfile == Z_NULL) {
 		BKE_report(reports, RPT_ERROR, "Unable to open");
 		return NULL;
 	} else {

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -2481,7 +2481,7 @@
 
 	file = open(tempname,O_BINARY+O_WRONLY+O_CREAT+O_TRUNC, 0666);
 	if(file == -1) {
-		BKE_report(reports, RPT_ERROR, "Unable to open file for writing.");
+		BKE_reportf(reports, RPT_ERROR, "Can't open file for writing: %s.", strerror(errno));
 		return 0;
 	}
 

Modified: trunk/blender/source/blender/editors/space_image/image_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_ops.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/editors/space_image/image_ops.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -28,6 +28,7 @@
 #include <stddef.h>
 #include <string.h>
 #include <stdlib.h>
+#include <errno.h>
 
 #include "MEM_guardedalloc.h"
 
@@ -688,10 +689,14 @@
 
 	RNA_string_get(op->ptr, "filepath", str);
 	/* default to frame 1 if there's no scene in context */
+
+	errno= 0;
+
 	ima= BKE_add_image_file(str, scene ? scene->r.cfra : 1);
 
 	if(!ima) {
 		if(op->customdata) MEM_freeN(op->customdata);
+		BKE_reportf(op->reports, RPT_ERROR, "Can't read: \"%s\", %s.", str, errno ? strerror(errno) : "Unsupported image format");
 		return OPERATOR_CANCELLED;
 	}
 	

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -31,6 +31,7 @@
 #include <stdlib.h>
 #include <math.h>
 #include <string.h>
+#include <errno.h>
 
 #include "MEM_guardedalloc.h"
 
@@ -2248,21 +2249,28 @@
 	{
 		char path[FILE_MAX];
 		RNA_string_get(op->ptr, "filepath", path);
+
+		errno= 0;
+
 		ima= BKE_add_image_file(path, scene ? scene->r.cfra : 1);
+
+		if(!ima) {
+			BKE_reportf(op->reports, RPT_ERROR, "Can't read: \"%s\", %s.", path, errno ? strerror(errno) : "Unsupported image format");
+			return OPERATOR_CANCELLED;
+		}
 	}
 	else if(RNA_property_is_set(op->ptr, "name"))
 	{
 		char name[32];
 		RNA_string_get(op->ptr, "name", name);
 		ima= (Image *)find_id("IM", name);
+
+		if(!ima) {
+			BKE_reportf(op->reports, RPT_ERROR, "Image named \"%s\", not found.", name);
+			return OPERATOR_CANCELLED;
+		}
 	}
 	
-	if(!ima) {
-		BKE_report(op->reports, RPT_ERROR, "Not an Image.");
-		return OPERATOR_CANCELLED;
-	}
-	
-	
 	node_deselectall(snode);
 	
 	if (snode->nodetree->type==NTREE_COMPOSIT)

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -761,7 +761,8 @@
 			BLI_remlink(lb, seq);
 			if(seq==last_seq) seq_active_set(scene, NULL);
 			if(seq->type==SEQ_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1);
-			if(seq->ipo) seq->ipo->id.us--;
+			/* if(seq->ipo) seq->ipo->id.us--; */
+			/* XXX, remove fcurve */
 			seq_free_sequence(scene, seq);
 		}
 		seq= seqn;
@@ -1700,18 +1701,16 @@
 	int start_ofs, cfra, frame_end;
 	int step= RNA_int_get(op->ptr, "length");
 
-	if(ed==NULL)
-		return OPERATOR_CANCELLED;
+	seq= ed->seqbasep->first; /* poll checks this is valid */
 
-	seq= ed->seqbasep->first;
-
 	while (seq) {
 		if((seq->flag & SELECT) && (seq->type == SEQ_IMAGE) && (seq->len > 1)) {
 			/* remove seq so overlap tests dont conflict,
 			see seq_free_sequence below for the real free'ing */
 			seq_next = seq->next;
 			BLI_remlink(ed->seqbasep, seq);
-			if(seq->ipo) seq->ipo->id.us--;
+			/* if(seq->ipo) seq->ipo->id.us--; */
+			/* XXX, remove fcurve and assign to split image strips */
 
 			start_ofs = cfra = seq_tx_get_final_left(seq, 0);
 			frame_end = seq_tx_get_final_right(seq, 0);
@@ -1735,11 +1734,16 @@
 				strip_new->stripdata= se_new= MEM_callocN(sizeof(StripElem)*1, "stripelem");
 				strncpy(se_new->name, se->name, FILE_MAXFILE-1);
 				calc_sequence(scene, seq_new);
-				seq_new->flag &= ~SEQ_OVERLAP;
-				if (seq_test_overlap(ed->seqbasep, seq_new)) {
-					shuffle_seq(ed->seqbasep, seq_new, scene);
+
+				if(step > 1) {
+					seq_new->flag &= ~SEQ_OVERLAP;
+					if (seq_test_overlap(ed->seqbasep, seq_new)) {
+						shuffle_seq(ed->seqbasep, seq_new, scene);
+					}
 				}
 
+				/* XXX, COPY FCURVES */
+				strncpy(seq_new->name+2, seq->name+2, sizeof(seq->name)-2);
 				seqbase_unique_name_recursive(&scene->ed->seqbase, seq_new);
 
 				cfra++;

Modified: trunk/blender/source/blender/makesrna/intern/rna_main_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_main_api.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/makesrna/intern/rna_main_api.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -28,6 +28,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
+#include <errno.h>
 
 #include "RNA_define.h"
 #include "RNA_access.h"
@@ -260,9 +261,17 @@
 	image->id.us--;
 	return image;
 }
-Image *rna_Main_images_load(Main *bmain, char *filepath)
+Image *rna_Main_images_load(Main *bmain, ReportList *reports, char *filepath)
 {
-	return BKE_add_image_file(filepath, 0);
+	Image *ima;
+
+	errno= 0;
+	ima= BKE_add_image_file(filepath, 0);
+
+	if(!ima)
+		BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unsupported image format");
+
+	return ima;
 }
 void rna_Main_images_remove(Main *bmain, ReportList *reports, Image *image)
 {
@@ -316,9 +325,18 @@
 		BKE_reportf(reports, RPT_ERROR, "MetaBall \"%s\" must have zero users to be removed, found %d.", mb->id.name+2, ID_REAL_USERS(mb));
 }
 
-VFont *rna_Main_fonts_load(Main *bmain, char *filepath)
+VFont *rna_Main_fonts_load(Main *bmain, ReportList *reports, char *filepath)
 {
-	return load_vfont(filepath);
+	VFont *font;
+
+	errno= 0;
+	font= load_vfont(filepath);
+
+	if(!font)
+		BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unsupported font format");
+
+	return font;
+
 }
 void rna_Main_fonts_remove(Main *bmain, ReportList *reports, VFont *vfont)
 {
@@ -394,12 +412,17 @@
 	free_libblock(&bmain->text, text);
 	/* XXX python now has invalid pointer? */
 }
-Text *rna_Main_texts_load(Main *bmain, ReportList *reports, char* path)
+
+Text *rna_Main_texts_load(Main *bmain, ReportList *reports, char* filepath)
 {
-	Text *txt= add_text(path, bmain->name);
-	if(txt==NULL)
-		BKE_reportf(reports, RPT_ERROR, "Couldn't load text from path \"%s\".", path);
+	Text *txt;
 
+	errno= 0;
+	txt= add_text(filepath, bmain->name);
+
+	if(!txt)
+		BKE_reportf(reports, RPT_ERROR, "Can't read: \"%s\", %s.", filepath, errno ? strerror(errno) : "Unable to load text");
+
 	return txt;
 }
 
@@ -692,6 +715,7 @@
 	RNA_def_function_return(func, parm);
 
 	func= RNA_def_function(srna, "load", "rna_Main_images_load");
+	RNA_def_function_flag(func, FUNC_USE_REPORTS);
 	RNA_def_function_ui_description(func, "Load a new image into the main database");
 	parm= RNA_def_string(func, "filepath", "File Path", 0, "", "path of the file to load.");
 	RNA_def_property_flag(parm, PROP_REQUIRED);
@@ -791,6 +815,7 @@
 	RNA_def_struct_ui_text(srna, "Main Fonts", "Collection of fonts");
 
 	func= RNA_def_function(srna, "load", "rna_Main_fonts_load");
+	RNA_def_function_flag(func, FUNC_USE_REPORTS);
 	RNA_def_function_ui_description(func, "Load a new font into the main database");
 	parm= RNA_def_string(func, "filepath", "File Path", 0, "", "path of the font to load.");
 	RNA_def_property_flag(parm, PROP_REQUIRED);

Modified: trunk/blender/source/blender/python/generic/bgl.c
===================================================================
--- trunk/blender/source/blender/python/generic/bgl.c	2010-07-03 17:39:29 UTC (rev 29905)
+++ trunk/blender/source/blender/python/generic/bgl.c	2010-07-03 17:47:06 UTC (rev 29906)
@@ -322,20 +322,20 @@
 	}
 
 	if (buf->type==GL_BYTE) {
-		if (!PyArg_Parse(v, "b;Coordinates must be ints", &buf->buf.asbyte[i]))
+		if (!PyArg_Parse(v, "b:Coordinates must be ints", &buf->buf.asbyte[i]))
 		return -1;
 	} else if (buf->type==GL_SHORT) {
-		if (!PyArg_Parse(v, "h;Coordinates must be ints", &buf->buf.asshort[i]))
+		if (!PyArg_Parse(v, "h:Coordinates must be ints", &buf->buf.asshort[i]))
 			return -1;
 	  

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list