[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26989] trunk/blender/source/blender/ blenlib/intern/path_util.c: fix for negative frames messing up image sequence name.

Campbell Barton ideasman42 at gmail.com
Wed Feb 17 14:43:51 CET 2010


Revision: 26989
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26989
Author:   campbellbarton
Date:     2010-02-17 14:43:50 +0100 (Wed, 17 Feb 2010)

Log Message:
-----------
fix for negative frames messing up image sequence name.

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

Modified: trunk/blender/source/blender/blenlib/intern/path_util.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/path_util.c	2010-02-17 12:21:38 UTC (rev 26988)
+++ trunk/blender/source/blender/blenlib/intern/path_util.c	2010-02-17 13:43:50 UTC (rev 26989)
@@ -97,41 +97,19 @@
 
 /* implementation */
 
-int BLI_stringdec(char *string, char *kop, char *start, unsigned short *numlen)
+int BLI_stringdec(char *string, char *head, char *start, unsigned short *numlen)
 {
-	unsigned short len, len2, nums = 0, nume = 0;
+	unsigned short len, len2, lenlslash = 0, nums = 0, nume = 0;
 	short i, found = 0;
-
+	char *lslash = BLI_last_slash(string);
 	len2 = len = strlen(string);
-	
-	if (len > 6) {
-		if (BLI_strncasecmp(string + len - 6, ".blend", 6) == 0) len -= 6;
-		else if (BLI_strncasecmp(string + len - 6, ".trace", 6) == 0) len -= 6;
-	}
-	
-	if (len > 9) {
-		if (BLI_strncasecmp(string + len - 9, ".blend.gz", 9) == 0) len -= 9;
-	}
-		
-	if (len == len2) {
-		if (len > 4) {
-			/* handle .jf0 en .jf1 for jstreams */
-			if (BLI_strncasecmp(string + len - 4, ".jf", 3) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".tga", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".jpg", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".png", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".txt", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".cyc", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".enh", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".rgb", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".psx", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".ble", 4) == 0) len -= 4;
-			else if (BLI_strncasecmp(string + len - 4, ".exr", 4) == 0) len -= 4;
-		}
-	}
-	
-	for (i = len - 1; i >= 0; i--) {
-		if (string[i] == '/') break;
+	if(lslash)
+		lenlslash= (int)(lslash - string);
+
+	while(len > lenlslash && string[--len] != '.') {};
+	if(len == lenlslash && string[len] != '.') len = len2;
+
+	for (i = len - 1; i >= lenlslash; i--) {
 		if (isdigit(string[i])) {
 			if (found){
 				nums = i;
@@ -148,39 +126,29 @@
 	}
 	if (found){
 		if (start) strcpy(start,&string[nume+1]);
-		if (kop) {
-			strcpy(kop,string);
-			kop[nums]=0;
+		if (head) {
+			strcpy(head,string);
+			head[nums]=0;
 		}
 		if (numlen) *numlen = nume-nums+1;
 		return ((int)atoi(&(string[nums])));
 	}
 	if (start) strcpy(start, string + len);
-	if (kop) {
-		strncpy(kop, string, len);
-		kop[len] = 0;
+	if (head) {
+		strncpy(head, string, len);
+		head[len] = 0;
 	}
 	if (numlen) *numlen=0;
 	return 0;
 }
 
 
-void BLI_stringenc(char *string, char *kop, char *start, unsigned short numlen, int pic)
+void BLI_stringenc(char *string, char *head, char *start, unsigned short numlen, int pic)
 {
-	char numstr[10]="";
-	unsigned short len,i;
-
-	strcpy(string,kop);
-	
-	if (pic>0 || numlen==4) {
-		len= sprintf(numstr,"%d",pic);
-		
-		for(i=len;i<numlen;i++){
-			strcat(string,"0");
-		}
-		strcat(string,numstr);
-	}
-	strcat(string, start);
+	char fmtstr[16]="";
+	if(pic < 0) pic= 0;
+	sprintf(fmtstr, "%%s%%.%dd%%s", numlen);
+	sprintf(string, fmtstr, head, pic, start);
 }
 
 





More information about the Bf-blender-cvs mailing list