[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13337] trunk/blender/source/blender: added function BLI_filepathsize - so you dont have to open the file to get its size .

Campbell Barton ideasman42 at gmail.com
Mon Jan 21 23:10:20 CET 2008


Revision: 13337
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13337
Author:   campbellbarton
Date:     2008-01-21 23:10:20 +0100 (Mon, 21 Jan 2008)

Log Message:
-----------
added function BLI_filepathsize - so you dont have to open the file to get its size.
made render Touch function remove the touched file if the animation is canceled.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/BLI_blenlib.h
    trunk/blender/source/blender/blenlib/intern/bpath.c
    trunk/blender/source/blender/blenlib/intern/storage.c
    trunk/blender/source/blender/render/intern/source/pipeline.c
    trunk/blender/source/blender/src/buttons_scene.c

Modified: trunk/blender/source/blender/blenlib/BLI_blenlib.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_blenlib.h	2008-01-21 22:10:14 UTC (rev 13336)
+++ trunk/blender/source/blender/blenlib/BLI_blenlib.h	2008-01-21 22:10:20 UTC (rev 13337)
@@ -272,6 +272,7 @@
 		
 /* BLI_storage.h */
 int    BLI_filesize(int file);
+int    BLI_filepathsize(const char *path);
 double BLI_diskfree(char *dir);
 char *BLI_getwdN(char *dir);
 void BLI_hide_dot_files(int set);

Modified: trunk/blender/source/blender/blenlib/intern/bpath.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/bpath.c	2008-01-21 22:10:14 UTC (rev 13336)
+++ trunk/blender/source/blender/blenlib/intern/bpath.c	2008-01-21 22:10:20 UTC (rev 13337)
@@ -458,7 +458,6 @@
 {
 	/* file searching stuff */
 	DIR *dir;
-	int file = 0;
 	struct dirent *de;
 	struct stat status;
 	char path[FILE_MAX];
@@ -485,14 +484,10 @@
 		if (S_ISREG(status.st_mode)) { /* is file */
 			if (strncmp(filename, de->d_name, FILE_MAX)==0) { /* name matches */
 				/* open the file to read its size */
-				file = open(path, O_BINARY|O_RDONLY);
-				if (file >=0 ) {
-					size = BLI_filesize(file);
-					if (size > *filesize) { /* find the biggest file */
-						*filesize = size;
-						BLI_strncpy(filename_new, path, FILE_MAX);
-					}
-					close(file);
+				size = BLI_filepathsize(path);
+				if ((size > 0) && (size > *filesize)) { /* find the biggest file */
+					*filesize = size;
+					BLI_strncpy(filename_new, path, FILE_MAX);
 				}
 			}
 		} else if (S_ISDIR(status.st_mode)) { /* is subdir */

Modified: trunk/blender/source/blender/blenlib/intern/storage.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/storage.c	2008-01-21 22:10:14 UTC (rev 13336)
+++ trunk/blender/source/blender/blenlib/intern/storage.c	2008-01-21 22:10:20 UTC (rev 13337)
@@ -472,6 +472,17 @@
 	return (buf.st_size);
 }
 
+int BLI_filepathsize(const char *path)
+{
+	int size, file = open(path, O_BINARY|O_RDONLY);
+	
+	if (file <= 0)
+		return -1;
+	
+	size = BLI_filesize(file);
+	close(file);
+	return size;
+}
 
 
 int BLI_exist(char *name)

Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c	2008-01-21 22:10:14 UTC (rev 13336)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c	2008-01-21 22:10:20 UTC (rev 13337)
@@ -2369,7 +2369,14 @@
 				do_write_image_or_movie(re, scene, mh);
 			}
 		
-			if(G.afbreek==1) break;
+			if(G.afbreek==1) {
+				/* remove touched file */
+				if (scene->r.mode & R_TOUCH && BLI_exist(name) && BLI_filepathsize(name) == 0) {
+					BLI_delete(name, 0, 0);
+				}
+				
+				break;
+			}
 		}
 	}
 	

Modified: trunk/blender/source/blender/src/buttons_scene.c
===================================================================
--- trunk/blender/source/blender/src/buttons_scene.c	2008-01-21 22:10:14 UTC (rev 13336)
+++ trunk/blender/source/blender/src/buttons_scene.c	2008-01-21 22:10:20 UTC (rev 13337)
@@ -1837,8 +1837,8 @@
 	uiBlockEndAlign(block);
 	
 	uiBlockBeginAlign(block);
-	uiDefButBitI(block, TOG, R_NO_OVERWRITE, B_NOP, "No Overwrite", 10, 142, 90, 20, &G.scene->r.mode, 0.0, 0.0, 0, 0, "Skip rendering frames when the file exists (image output only)");
-	uiDefButBitI(block, TOG, R_TOUCH, B_NOP, "Touch", 100, 142, 50, 20, &G.scene->r.mode, 0.0, 0.0, 0, 0, "Create an empty file before rendering each frame");
+	uiDefButBitI(block, TOG, R_TOUCH, B_NOP, "Touch", 10, 142, 50, 20, &G.scene->r.mode, 0.0, 0.0, 0, 0, "Create an empty file before rendering each frame, remove if cancelled (and empty)");
+	uiDefButBitI(block, TOG, R_NO_OVERWRITE, B_NOP, "No Overwrite", 60, 142, 90, 20, &G.scene->r.mode, 0.0, 0.0, 0, 0, "Skip rendering frames when the file exists (image output only)");
 	uiBlockEndAlign(block);
 	
 	/* SET BUTTON */





More information about the Bf-blender-cvs mailing list