[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