[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13728] trunk/blender/source/blender/ blenlib/intern/storage.c: Patch from Giuseppe Ghib?\195?\178, modified not to use scons defines.

Campbell Barton ideasman42 at gmail.com
Sun Feb 17 19:09:53 CET 2008


Revision: 13728
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13728
Author:   campbellbarton
Date:     2008-02-17 19:09:53 +0100 (Sun, 17 Feb 2008)

Log Message:
-----------
Patch from Giuseppe Ghib?\195?\178, modified not to use scons defines.
Files above 4gig did not display on linux in the file selector.
Need to make sure this is ok in other os's too.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/storage.c

Modified: trunk/blender/source/blender/blenlib/intern/storage.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/storage.c	2008-02-17 17:27:49 UTC (rev 13727)
+++ trunk/blender/source/blender/blenlib/intern/storage.c	2008-02-17 18:09:53 UTC (rev 13728)
@@ -32,6 +32,11 @@
  * Some really low-level file thingies.
  */
 
+#ifndef WIN32
+#define _LARGEFILE_SOURCE 1
+#define _FILE_OFFSET_BITS 64
+#endif
+
 #include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>	
@@ -336,11 +341,11 @@
 	char size[250];
 	static char * types[8] = {"---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"};
 	int num, mode;
-	int num1, num2, num3, num4;
+	off_t num1, num2, num3, num4, num5;
 #ifdef WIN32
 	__int64 st_size;
 #else
-	long long st_size;
+	off_t st_size;
 #endif
 	
 	struct direntry * file;
@@ -402,7 +407,7 @@
 		 * will buy us some time until files get bigger than 4GB or until
 		 * everyone starts using __USE_FILE_OFFSET64 or equivalent.
 		 */
-		st_size= (unsigned int)files[num].s.st_size;
+		st_size= (off_t)files[num].s.st_size;
 		
 		num1= st_size % 1000;
 		num2= st_size/1000;
@@ -411,11 +416,15 @@
 		num3= num3 % 1000;
 		num4= st_size/(1000*1000*1000);
 		num4= num4 % 1000;
+		num5= st_size/(1000000000000LL);
+		num5= num5 % 1000;
 
-		if(num4) sprintf(files[num].size, "%3d %03d %03d %03d", num4, num3, num2, num1);
-		else if(num3) sprintf(files[num].size, "%7d %03d %03d", num3, num2, num1);
-		else if(num2) sprintf(files[num].size, "%11d %03d", num2, num1);
-		else if(num1) sprintf(files[num].size, "%15d", num1);
+		if(num5)
+			sprintf(files[num].size, "%1d %03d %03d %03d K", (int)num5, (int)num4, (int)num3, (int)num2);
+		else if(num4) sprintf(files[num].size, "%3d %03d %03d %03d", (int)num4, (int)num3, (int)num2, (int)num1);
+		else if(num3) sprintf(files[num].size, "%7d %03d %03d", (int)num3, (int)num2, (int)num1);
+		else if(num2) sprintf(files[num].size, "%11d %03d", (int)num2, (int)num1);
+		else if(num1) sprintf(files[num].size, "%15d", (int)num1);
 		else sprintf(files[num].size, "0");
 
 		strftime(datum, 32, "%d-%b-%y %H:%M", tm);





More information about the Bf-blender-cvs mailing list