diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index f31c5a0d672..654cf0991cc 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -3304,7 +3304,9 @@ void loadFluidsimMesh(Object *srcob, int useRenderParams) } else { // 3 strcat(targetDir,"fluidsurface_final_####"); } - BLI_convertstringcode(targetDir, G.sce, curFrame); // fixed #frame-no + BLI_convertstringcode(targetDir, G.sce); + BLI_convertstringframe(targetDir, curFrame); // fixed #frame-no + strcpy(targetFile,targetDir); strcat(targetFile, ".bobj.gz"); diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 8a982b15df7..ff0b2e6db0a 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -351,7 +351,8 @@ Image *BKE_add_image_file(const char *name) } BLI_strncpy(str, name, sizeof(str)); - BLI_convertstringcode(str, G.sce, G.scene->r.cfra); + BLI_convertstringcode(str, G.sce); + BLI_convertstringframe(str, G.scene->r.cfra); /* TODO - should this realy be here? */ /* exists? */ file= open(str, O_BINARY|O_RDONLY); @@ -362,7 +363,8 @@ Image *BKE_add_image_file(const char *name) for(ima= G.main->image.first; ima; ima= ima->id.next) { if(ima->source!=IMA_SRC_VIEWER && ima->source!=IMA_SRC_GENERATED) { BLI_strncpy(strtest, ima->name, sizeof(ima->name)); - BLI_convertstringcode(strtest, G.sce, G.scene->r.cfra); + BLI_convertstringcode(strtest, G.sce); + BLI_convertstringframe(strtest, G.scene->r.cfra); /* TODO - should this be here? */ if( strcmp(strtest, str)==0 ) { if(ima->anim==NULL || ima->id.us==0) { @@ -1243,7 +1245,8 @@ void BKE_makepicstring(char *string, char *base, int frame, int imtype) if (strchr(string, '#')==NULL) strcat(string, "####"); /* 4 numbers */ - BLI_convertstringcode(string, G.sce, frame); + BLI_convertstringcode(string, G.sce); + BLI_convertstringframe(string, frame); if(G.scene->r.scemode & R_EXTENSION) BKE_add_image_extension(string, imtype); @@ -1479,9 +1482,11 @@ static ImBuf *image_load_sequence_file(Image *ima, ImageUser *iuser, int frame) BLI_strncpy(name, ima->name, sizeof(name)); if(ima->id.lib) - BLI_convertstringcode(name, ima->id.lib->filename, frame); + BLI_convertstringcode(name, ima->id.lib->filename); else - BLI_convertstringcode(name, G.sce, frame); + BLI_convertstringcode(name, G.sce); + + BLI_convertstringframe(name, frame); /* TODO - should this be here? */ /* read ibuf */ ibuf = IMB_loadiffname(name, IB_rect|IB_multilayer); @@ -1582,9 +1587,9 @@ static ImBuf *image_load_movie_file(Image *ima, ImageUser *iuser, int frame) BLI_strncpy(str, ima->name, FILE_MAX); if(ima->id.lib) - BLI_convertstringcode(str, ima->id.lib->filename, 0); + BLI_convertstringcode(str, ima->id.lib->filename); else - BLI_convertstringcode(str, G.sce, 0); + BLI_convertstringcode(str, G.sce); ima->anim = openanim(str, IB_cmap | IB_rect); @@ -1636,9 +1641,11 @@ static ImBuf *image_load_image_file(Image *ima, ImageUser *iuser, int cfra) /* get the right string */ BLI_strncpy(str, ima->name, sizeof(str)); if(ima->id.lib) - BLI_convertstringcode(str, ima->id.lib->filename, cfra); + BLI_convertstringcode(str, ima->id.lib->filename); else - BLI_convertstringcode(str, G.sce, cfra); + BLI_convertstringcode(str, G.sce); + + BLI_convertstringframe(str, cfra); /* read ibuf */ ibuf = IMB_loadiffname(str, IB_rect|IB_multilayer|IB_imginfo); diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 8740a3d1ed4..cc3f3f211a4 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -974,7 +974,7 @@ static void image_fix_relative_path(Image *ima) { if(ima->id.lib==NULL) return; if(strncmp(ima->name, "//", 2)==0) { - BLI_convertstringcode(ima->name, ima->id.lib->filename, 0); + BLI_convertstringcode(ima->name, ima->id.lib->filename); BLI_makestringcode(G.sce, ima->name); } } diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index 109f8bd9113..f6a65bd72a5 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -185,7 +185,7 @@ PackedFile * newPackedFile(char * filename) // convert relative filenames to absolute filenames strcpy(name, filename); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); // open the file // and create a PackedFile structure @@ -286,7 +286,7 @@ int writePackedFile(char * filename, PackedFile *pf, int guimode) if (guimode) waitcursor(1); strcpy(name, filename); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); if (BLI_exists(name)) { for (number = 1; number <= 999; number++) { @@ -351,7 +351,7 @@ int checkPackedFile(char * filename, PackedFile * pf) char name[FILE_MAXDIR + FILE_MAXFILE]; strcpy(name, filename); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); if (stat(name, &st)) { ret_val = PF_NOFILE; diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 069dac60412..9dd21cdda4e 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -4565,7 +4565,8 @@ static void particles_fluid_step(Object *ob, ParticleSystem *psys, int cfra) // ok, start loading strcpy(filename, ob->fluidsimSettings->surfdataPath); strcat(filename, suffix); - BLI_convertstringcode(filename, G.sce, curFrame); // fixed #frame-no + BLI_convertstringcode(filename, G.sce); + BLI_convertstringframe(filename, curFrame); // fixed #frame-no strcat(filename, suffix2); gzf = gzopen(filename, "rb"); diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index 3d73ba1e93f..7b727528b3d 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -186,7 +186,7 @@ static int ptcache_path(PTCacheID *pid, char *filename) sprintf(filename, "//"PTCACHE_PATH"%s", file); /* add blend file name to pointcache dir */ BLI_add_slash(filename); - BLI_convertstringcode(filename, blendfilename, 0); + BLI_convertstringcode(filename, blendfilename); return strlen(filename); } diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index 3b14cb8adac..2c5b49246fb 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -109,13 +109,13 @@ PackedFile* sound_find_packedfile(bSound *sound) // convert sound->name to abolute filename strcpy(soundname, sound->name); - BLI_convertstringcode(soundname, G.sce, G.scene->r.cfra); + BLI_convertstringcode(soundname, G.sce); search = G.main->sound.first; while (search) { if (search->sample && search->sample->packedfile) { strcpy(searchname, search->sample->name); - BLI_convertstringcode(searchname, G.sce, G.scene->r.cfra); + BLI_convertstringcode(searchname, G.sce); if (BLI_streq(searchname, soundname)) { pf = search->sample->packedfile; @@ -125,7 +125,7 @@ PackedFile* sound_find_packedfile(bSound *sound) if (search->newpackedfile) { strcpy(searchname, search->name); - BLI_convertstringcode(searchname, G.sce, G.scene->r.cfra); + BLI_convertstringcode(searchname, G.sce); if (BLI_streq(searchname, soundname)) { pf = search->newpackedfile; break; diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index d15160054ac..872f81ead63 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -218,7 +218,7 @@ int reopen_text(Text *text) if (!text || !text->name) return 0; BLI_strncpy(str, text->name, FILE_MAXDIR+FILE_MAXFILE); - BLI_convertstringcode(str, G.sce, G.scene->r.cfra); + BLI_convertstringcode(str, G.sce); BLI_split_dirfile_basic(str, NULL, sfile); fp= fopen(str, "r"); @@ -316,7 +316,7 @@ Text *add_text(char *file) BLI_strncpy(str, file, FILE_MAXDIR+FILE_MAXFILE); if (G.scene) /* can be NULL (bg mode) */ - BLI_convertstringcode(str, G.sce, G.scene->r.cfra); + BLI_convertstringcode(str, G.sce); BLI_split_dirfile_basic(str, NULL, sfile); fp= fopen(str, "r"); diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c index 3d85fe32193..44004eeee80 100644 --- a/source/blender/blenkernel/intern/writeavi.c +++ b/source/blender/blenkernel/intern/writeavi.c @@ -120,7 +120,7 @@ void makeavistring (RenderData *rd, char *string) if (string==0) return; strcpy(string, rd->pic); - BLI_convertstringcode(string, G.sce, rd->cfra); + BLI_convertstringcode(string, G.sce); BLI_make_existing_file(string); diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h index 33567d92c99..e24ccad12fb 100644 --- a/source/blender/blenlib/BLI_blenlib.h +++ b/source/blender/blenlib/BLI_blenlib.h @@ -150,7 +150,8 @@ void BLI_cleanup_dir(const char *relabase, char *dir); /* same as above but adds * @a framenum The framenumber to replace the frame code with. * @retval Returns true if the path was relative (started with "//"). */ -int BLI_convertstringcode(char *path, const char *basepath, int framenum); +int BLI_convertstringcode(char *path, const char *basepath); +int BLI_convertstringframe(char *path, int frame); void BLI_makestringcode(const char *relfile, char *file); diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index 66eb63c8dfd..79d3e487712 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -130,9 +130,9 @@ void BLI_bpathIterator_getPathExpanded( struct BPathIterator *bpi, char *path_ex libpath = BLI_bpathIterator_getLib(bpi); if (libpath) { /* check the files location relative to its library path */ - BLI_convertstringcode(path_expanded, libpath, G.scene->r.cfra); + BLI_convertstringcode(path_expanded, libpath); } else { /* local data, use the blend files path */ - BLI_convertstringcode(path_expanded, G.sce, G.scene->r.cfra); + BLI_convertstringcode(path_expanded, G.sce); } } char* BLI_bpathIterator_getLib( struct BPathIterator *bpi) { diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/util.c index cdac1ba7061..c85849b5ed4 100644 --- a/source/blender/blenlib/intern/util.c +++ b/source/blender/blenlib/intern/util.c @@ -877,7 +877,7 @@ void BLI_cleanup_file(const char *relabase, char *dir) short a; char *start, *eind; if (relabase) { - BLI_convertstringcode(dir, relabase, 0); + BLI_convertstringcode(dir, relabase); } #ifdef WIN32 if(dir[0]=='.') { /* happens for example in FILE_MAIN */ @@ -1037,10 +1037,78 @@ void BLI_makestringcode(const char *relfile, char *file) } } -int BLI_convertstringcode(char *path, const char *basepath, int framenum) + +int BLI_convertstringframe(char *path, int frame) +{ + int ch_sta, ch_end, i; + /* Insert current frame: file### -> file001 */ + ch_sta = ch_end = 0; + for (i = 0; path[i] != '\0'; i++) { + if (path[i] == '\\' || path[i] == '/') { + ch_end = 0; /* this is a directory name, dont use any hashes we found */ + } else if (path[i] == '#') { + ch_sta = i; + ch_end = ch_sta+1; + while (path[ch_end] == '#') { + ch_end++; + } + i = ch_end-1; /* keep searching */ + + /* dont break, there may be a slash after this that invalidates the previous #'s */ + } + } + if (ch_end) { /* warning, ch_end is the last # +1 */ + /* Add the frame number? */ + short numlen, hashlen; + char tmp[FILE_MAX]; + + char format[16]; /* 6 is realistically the maxframe (300000), so 8 should be enough, but 16 to be safe. */ + if (((ch_end-1)-ch_sta) >= 16) { + ch_end = ch_sta+15; /* disallow values longer then 'format' can hold */ + } + + strcpy(tmp, path); + + numlen = 1 + (int)log10((double)frame); /* this is the number of chars in the number */ + hashlen = ch_end - ch_sta; + + sprintf(format, "%d", frame); + + if (numlen==hashlen) { /* simple case */ + memcpy(tmp+ch_sta, format, numlen); + } else if (numlen < hashlen) { + memcpy(tmp+ch_sta + (hashlen-numlen), format, numlen); /*dont copy the string terminator */ + memset(tmp+ch_sta, '0', hashlen-numlen); + } else { + /* number is longer then number of #'s */ + if (tmp[ch_end] == '\0') { /* hashes are last, no need to move any string*/ + /* bad juju - not testing string length here :/ */ + memcpy(tmp+ch_sta, format, numlen+1); /* add 1 to get the string terminator \0 */ + } else { + /* we need to move the end characters, reuse i */ + int j; + + i = strlen(tmp); /* +1 to copy the string terminator */ + j = i + (numlen-hashlen); /* from/to */ + + while (i >= ch_end) { + tmp[j] = tmp[i]; + i--; + j--; + } + memcpy(tmp + ch_sta, format, numlen); + } + } + strcpy(path, tmp); + return 1; + } + return 0; +} + + +int BLI_convertstringcode(char *path, const char *basepath) { int wasrelative; - int ch_sta, ch_end; char tmp[FILE_MAX]; char base[FILE_MAX]; char vol[3] = {'\0', '\0', '\0'}; @@ -1098,54 +1166,8 @@ int BLI_convertstringcode(char *path, const char *basepath, int framenum) MEM_freeN(filepart); } - - /* Insert current frame: file### -> file001 */ - ch_end = 0; - for (ch_sta = 0; tmp[ch_sta] != '\0'; ch_sta++) { - if (tmp[ch_sta] == '#') { - ch_end = ch_sta+1; - while (tmp[ch_end] == '#') { - ch_end++; - } - break; - } - } - if (ch_end) { /* warning, ch_end is the last # +1 */ - /* Add the frame number? */ - short numlen, hashlen; - char format[16]; /* 6 is realistically the maxframe (300000), so 8 should be enough, but 16 to be safe. */ - - numlen = 1 + (int)log10((double)framenum); /* this is the number of chars in the number */ - hashlen = ch_end - ch_sta; - - sprintf(format, "%d", framenum); - - if (numlen==hashlen) { /* simple case */ - memcpy(tmp+ch_sta, format, numlen); - } else if (numlen < hashlen) { - memcpy(tmp+ch_sta + (hashlen-numlen), format, numlen); /*dont copy the string terminator */ - memset(tmp+ch_sta, '0', hashlen-numlen); - } else { - /* number is longer then number of #'s */ - if (tmp[ch_end] == '\0') { /* hashes are last, no need to move any string*/ - /* bad juju - not testing string length here :/ */ - memcpy(tmp+ch_sta, format, numlen+1); /* add 1 to get the string terminator \0 */ - } else { - /* we need to move the end characters */ - int i = strlen(tmp); /* +1 to copy the string terminator */ - int j = i + (numlen-hashlen); /* from/to */ - while (i >= ch_end) { - tmp[j] = tmp[i]; - i--; - j--; - } - memcpy(tmp + ch_sta, format, numlen); - } - } - } - /* done with file### stuff */ - strcpy(path, tmp); + #ifdef WIN32 /* skip first two chars, which in case of absolute path will be drive:/blabla and diff --git a/source/blender/include/BIF_screen.h b/source/blender/include/BIF_screen.h index aa3fe6a9279..6f9c0ae194f 100644 --- a/source/blender/include/BIF_screen.h +++ b/source/blender/include/BIF_screen.h @@ -82,7 +82,6 @@ void winqdelete(struct ScrArea *sa); void winqclear(struct ScrArea *sa); void addqueue(short win, unsigned short event, short val); void addafterqueue(short win, unsigned short event, short val); -void add_readfile_event(char *filename); short ext_qtest(void); unsigned short extern_qread(short *val); unsigned short extern_qread_ext(short *val, char *ascii); diff --git a/source/blender/python/BPY_interface.c b/source/blender/python/BPY_interface.c index 86bcd51e914..ffdb593767a 100644 --- a/source/blender/python/BPY_interface.c +++ b/source/blender/python/BPY_interface.c @@ -444,7 +444,7 @@ void BPY_rebuild_syspath( void ) } BLI_strncpy(dirpath, U.pythondir, FILE_MAX); - BLI_convertstringcode(dirpath, G.sce, 0); + BLI_convertstringcode(dirpath, G.sce); syspath_append(dirpath); /* append to module search path */ BLI_make_file_string("/", modpath, dirpath, "bpymodules"); @@ -1019,7 +1019,7 @@ int BPY_menu_do_python( short menutype, int event ) /* dirs in Blender can be "//", which has a special meaning */ BLI_strncpy(upythondir, U.pythondir, FILE_MAX); - BLI_convertstringcode(upythondir, G.sce, 0); /* if so, this expands it */ + BLI_convertstringcode(upythondir, G.sce); /* if so, this expands it */ BLI_make_file_string( "/", filestr, upythondir, pym->filename ); } else { /* script is in default scripts dir */ diff --git a/source/blender/python/BPY_menus.c b/source/blender/python/BPY_menus.c index ce1b964b689..82da9edbee6 100644 --- a/source/blender/python/BPY_menus.c +++ b/source/blender/python/BPY_menus.c @@ -492,7 +492,7 @@ static int bpymenu_CreateFromFile( void ) fscanf( fp, "# User defined scripts dir: %[^\n]\n", w1 ); BLI_strncpy(upythondir, U.pythondir, FILE_MAX); - BLI_convertstringcode(upythondir, G.sce, 0); + BLI_convertstringcode(upythondir, G.sce); if( strcmp( w1, upythondir ) != 0 ) return -1; @@ -604,7 +604,7 @@ static void bpymenu_WriteDataFile( void ) char upythondir[FILE_MAX]; BLI_strncpy(upythondir, U.pythondir, FILE_MAX); - BLI_convertstringcode(upythondir, G.sce, 0); + BLI_convertstringcode(upythondir, G.sce); fprintf( fp, "# User defined scripts dir: %s\n", upythondir ); } @@ -1003,7 +1003,7 @@ int BPyMenu_Init( int usedir ) } else { BLI_strncpy(upythondir, upydir, FILE_MAX); - BLI_convertstringcode(upythondir, G.sce, 0); + BLI_convertstringcode(upythondir, G.sce); } sdir = bpy_gethome(1); @@ -1096,7 +1096,7 @@ the user defined Python scripts dir.\n", dirname ); } if( stat_dir2 == 0 ) { BLI_strncpy(dirname, U.pythondir, FILE_MAX); - BLI_convertstringcode(dirname, G.sce, 0); + BLI_convertstringcode(dirname, G.sce); i = bpymenu_ParseDir( dirname, NULL, 1 ); if (i == -1 && DEBUG) fprintf(stderr, "User defined scripts dir does not seem valid.\n\n"); diff --git a/source/blender/python/api2_2x/Blender.c b/source/blender/python/api2_2x/Blender.c index fe5ae25ccb1..daba0c36fdf 100644 --- a/source/blender/python/api2_2x/Blender.c +++ b/source/blender/python/api2_2x/Blender.c @@ -371,7 +371,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char upydir[FILE_MAX]; BLI_strncpy(upydir, U.pythondir, FILE_MAX); - BLI_convertstringcode(upydir, G.sce, 0); + BLI_convertstringcode(upydir, G.sce); if (BLI_exists(upydir)) { char udatadir[FILE_MAXDIR]; @@ -397,7 +397,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char upydir[FILE_MAX]; BLI_strncpy(upydir, U.pythondir, FILE_MAX); - BLI_convertstringcode(upydir, G.sce, 0); + BLI_convertstringcode(upydir, G.sce); if( BLI_exists( upydir ) ) ret = PyString_FromString( upydir ); @@ -410,7 +410,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char yfexportdir[FILE_MAX]; BLI_strncpy(yfexportdir, U.yfexportdir, FILE_MAX); - BLI_convertstringcode(yfexportdir, G.sce, 0); + BLI_convertstringcode(yfexportdir, G.sce); if( BLI_exists( yfexportdir ) ) ret = PyString_FromString( yfexportdir ); @@ -423,7 +423,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char fontdir[FILE_MAX]; BLI_strncpy(fontdir, U.fontdir, FILE_MAX); - BLI_convertstringcode(fontdir, G.sce, 0); + BLI_convertstringcode(fontdir, G.sce); if( BLI_exists( fontdir ) ) ret = PyString_FromString( fontdir ); @@ -436,7 +436,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char textudir[FILE_MAX]; BLI_strncpy(textudir, U.textudir, FILE_MAX); - BLI_convertstringcode(textudir, G.sce, 0); + BLI_convertstringcode(textudir, G.sce); if( BLI_exists( textudir ) ) ret = PyString_FromString( textudir ); @@ -449,7 +449,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char plugtexdir[FILE_MAX]; BLI_strncpy(plugtexdir, U.plugtexdir, FILE_MAX); - BLI_convertstringcode(plugtexdir, G.sce, 0); + BLI_convertstringcode(plugtexdir, G.sce); if( BLI_exists( plugtexdir ) ) ret = PyString_FromString( plugtexdir ); @@ -462,7 +462,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char plugseqdir[FILE_MAX]; BLI_strncpy(plugseqdir, U.plugseqdir, FILE_MAX); - BLI_convertstringcode(plugseqdir, G.sce, 0); + BLI_convertstringcode(plugseqdir, G.sce); if( BLI_exists( plugseqdir ) ) ret = PyString_FromString( plugseqdir ); @@ -475,7 +475,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char renderdir[FILE_MAX]; BLI_strncpy(renderdir, U.renderdir, FILE_MAX); - BLI_convertstringcode(renderdir, G.sce, 0); + BLI_convertstringcode(renderdir, G.sce); if( BLI_exists( renderdir ) ) ret = PyString_FromString( renderdir ); @@ -488,7 +488,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char sounddir[FILE_MAX]; BLI_strncpy(sounddir, U.sounddir, FILE_MAX); - BLI_convertstringcode(sounddir, G.sce, 0); + BLI_convertstringcode(sounddir, G.sce); if( BLI_exists( sounddir ) ) ret = PyString_FromString( sounddir ); @@ -501,7 +501,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value ) char tempdir[FILE_MAX]; BLI_strncpy(tempdir, U.tempdir, FILE_MAX); - BLI_convertstringcode(tempdir, G.sce, 0); + BLI_convertstringcode(tempdir, G.sce); if( BLI_exists( tempdir ) ) ret = PyString_FromString( tempdir ); @@ -776,7 +776,7 @@ static PyObject *Blender_ShowHelp(PyObject *self, PyObject *script) char upydir[FILE_MAX]; BLI_strncpy(upydir, U.pythondir, FILE_MAX); - BLI_convertstringcode(upydir, G.sce, 0); + BLI_convertstringcode(upydir, G.sce); BLI_make_file_string("/", hspath, upydir, "help_browser.py"); if (!BLI_exists(hspath)) diff --git a/source/blender/python/api2_2x/Library.c b/source/blender/python/api2_2x/Library.c index b6fb1500a6e..799735c2062 100644 --- a/source/blender/python/api2_2x/Library.c +++ b/source/blender/python/api2_2x/Library.c @@ -166,7 +166,7 @@ static PyObject *M_Library_Open( PyObject * self, PyObject * value ) /* copy the name to make it absolute so BLO_blendhandle_from_file doesn't complain */ BLI_strncpy(fname1, fname, sizeof(fname1)); - BLI_convertstringcode(fname1, G.sce, 0); /* make absolute */ + BLI_convertstringcode(fname1, G.sce); /* make absolute */ /* G.sce = last file loaded, save for UI and restore after opening file */ BLI_strncpy(filename, G.sce, sizeof(filename)); @@ -483,7 +483,7 @@ static BlendHandle *open_library( char *filename, char *longFilename ) /* get complete file name if necessary */ BLI_strncpy( longFilename, filename, FILE_MAX ); - BLI_convertstringcode( longFilename, G.sce, 0 ); + BLI_convertstringcode( longFilename, G.sce ); /* throw exceptions for wrong file type, cyclic reference */ if( !BLO_has_bfile_extension(longFilename) ) { diff --git a/source/blender/python/api2_2x/Sys.c b/source/blender/python/api2_2x/Sys.c index 337f8b6bb14..9de4e344e8c 100644 --- a/source/blender/python/api2_2x/Sys.c +++ b/source/blender/python/api2_2x/Sys.c @@ -391,7 +391,8 @@ static PyObject *M_sys_expandpath( PyObject * self, PyObject * value ) "expected string argument" ); BLI_strncpy(expanded, path, FILE_MAXDIR + FILE_MAXFILE); - BLI_convertstringcode(expanded, G.sce, G.scene->r.cfra); + BLI_convertstringcode(expanded, G.sce); + BLI_convertstringframe(expanded, G.scene->r.cfra); return PyString_FromString(expanded); } diff --git a/source/blender/python/api2_2x/sceneRender.c b/source/blender/python/api2_2x/sceneRender.c index 7cae5f6144f..d9986195511 100644 --- a/source/blender/python/api2_2x/sceneRender.c +++ b/source/blender/python/api2_2x/sceneRender.c @@ -612,8 +612,8 @@ PyObject *RenderData_Play( BPy_RenderData * self ) { strcpy( file, self->renderContext->pic ); - BLI_convertstringcode( file, G.sce, - self->renderContext->cfra ); + BLI_convertstringcode( file, G.sce ); + BLI_make_existing_file( file ); if( BLI_strcasecmp( file + strlen( file ) - 4, ".avi" ) ) { sprintf( txt, "%04d_%04d.avi", diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 09c850b6252..93282e641d3 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1835,7 +1835,8 @@ static void load_backbuffer(Render *re) char name[256]; strcpy(name, re->r.backbuf); - BLI_convertstringcode(name, G.sce, re->r.cfra); + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, re->r.cfra); if(re->backbuf) { re->backbuf->id.us--; diff --git a/source/blender/src/buttons_shading.c b/source/blender/src/buttons_shading.c index 5e420ade204..9704b0186cd 100644 --- a/source/blender/src/buttons_shading.c +++ b/source/blender/src/buttons_shading.c @@ -238,7 +238,7 @@ static void save_env(char *name) char str[FILE_MAX]; strcpy(str, name); - BLI_convertstringcode(str, G.sce, G.scene->r.cfra); + BLI_convertstringcode(str, G.sce); tex= G.buts->lockpoin; if(tex && GS(tex->id.name)==ID_TE) { diff --git a/source/blender/src/editimasel.c b/source/blender/src/editimasel.c index 2ee583788e5..67e10d771e0 100644 --- a/source/blender/src/editimasel.c +++ b/source/blender/src/editimasel.c @@ -166,8 +166,7 @@ static void activate_imageselect_(int type, char *title, char *file, short *menu name[2]= 0; BLI_strncpy(name, file, sizeof(name)); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); - + BLI_convertstringcode(name, G.sce); simasel= curarea->spacedata.first; diff --git a/source/blender/src/editscreen.c b/source/blender/src/editscreen.c index 9ad2bd34ea4..1cd8733a7ea 100644 --- a/source/blender/src/editscreen.c +++ b/source/blender/src/editscreen.c @@ -890,12 +890,6 @@ int afterqtest(short win, unsigned short evt) static char ext_load_str[256]= {0, 0}; -void add_readfile_event(char *filename) -{ - mainqenter(LOAD_FILE, 1); - strcpy(ext_load_str, filename); - BLI_convertstringcode(ext_load_str, G.sce, G.scene->r.cfra); -} static short ext_reshape= 0, ext_redraw=0, ext_inputchange=0, ext_mousemove=0, ext_undopush=0; diff --git a/source/blender/src/editsima.c b/source/blender/src/editsima.c index c0efbf8b40b..f5cf29528f3 100644 --- a/source/blender/src/editsima.c +++ b/source/blender/src/editsima.c @@ -2288,7 +2288,9 @@ static void save_image_doit(char *name) if (ibuf) { BLI_strncpy(str, name, sizeof(str)); - BLI_convertstringcode(str, G.sce, G.scene->r.cfra); + BLI_convertstringcode(str, G.sce); + BLI_convertstringframe(str, G.scene->r.cfra); + if(G.scene->r.scemode & R_EXTENSION) { BKE_add_image_extension(str, G.sima->imtypenr); @@ -2499,7 +2501,7 @@ void save_image_sequence_sima(void) char name[FILE_MAX]; BLI_strncpy(name, ibuf->name, sizeof(name)); - BLI_convertstringcode(name, G.sce, 0); + BLI_convertstringcode(name, G.sce); if(0 == IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat)) { error("Could not write image", name); diff --git a/source/blender/src/editsound.c b/source/blender/src/editsound.c index 3ea9a0fb056..1cb7ec276cb 100644 --- a/source/blender/src/editsound.c +++ b/source/blender/src/editsound.c @@ -713,7 +713,7 @@ bSound *sound_new_sound(char *name) if (!G.scene->audio.mixrate) G.scene->audio.mixrate = 44100; /* convert the name to absolute path */ strcpy(str, name); - BLI_convertstringcode(str, G.sce, G.scene->r.cfra); + BLI_convertstringcode(str, G.sce); /* check if the sample on disk can be opened */ file = open(str, O_BINARY|O_RDONLY); @@ -825,7 +825,7 @@ bSample *sound_new_sample(bSound *sound) /* TODO: increase sound->name, sample->name and strip->name to FILE_MAX, to avoid cutting off sample name here - elubie */ BLI_strncpy(samplename, sound->name, FILE_MAX); - BLI_convertstringcode(samplename, G.sce, G.scene->r.cfra); + BLI_convertstringcode(samplename, G.sce); BLI_strncpy(sample->name, samplename, FILE_MAXDIR); /* connect the pf to the sample */ @@ -849,13 +849,13 @@ bSample *sound_find_sample(bSound *sound) // convert sound->name to abolute filename strcpy(name, sound->name); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); /* search through the list of loaded samples */ sample = samples->first; while (sample) { strcpy(samplename, sample->name); - BLI_convertstringcode(samplename, G.sce, G.scene->r.cfra); + BLI_convertstringcode(samplename, G.sce); if (strcmp(name, samplename) == 0) { break; diff --git a/source/blender/src/filesel.c b/source/blender/src/filesel.c index c297edda905..19372dcbee6 100644 --- a/source/blender/src/filesel.c +++ b/source/blender/src/filesel.c @@ -1172,7 +1172,7 @@ static void activate_fileselect_(int type, char *title, char *file, short *menup name[2]= 0; BLI_strncpy(name, file, sizeof(name)); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); sfile= curarea->spacedata.first; diff --git a/source/blender/src/fluidsim.c b/source/blender/src/fluidsim.c index b51f5bba4d6..a7361a9ffca 100644 --- a/source/blender/src/fluidsim.c +++ b/source/blender/src/fluidsim.c @@ -622,7 +622,7 @@ void fluidsimBake(struct Object *ob) // prepare names... strncpy(targetDir, domainSettings->surfdataPath, FILE_MAXDIR); strncpy(newSurfdataPath, domainSettings->surfdataPath, FILE_MAXDIR); - BLI_convertstringcode(targetDir, G.sce, 0); // fixed #frame-no + BLI_convertstringcode(targetDir, G.sce); // fixed #frame-no strcpy(targetFile, targetDir); strcat(targetFile, suffixConfig); @@ -674,7 +674,7 @@ void fluidsimBake(struct Object *ob) if(selection<1) return; // 0 from menu, or -1 aborted strcpy(targetDir, newSurfdataPath); strncpy(domainSettings->surfdataPath, newSurfdataPath, FILE_MAXDIR); - BLI_convertstringcode(targetDir, G.sce, 0); // fixed #frame-no + BLI_convertstringcode(targetDir, G.sce); // fixed #frame-no } // -------------------------------------------------------------------------------------------- diff --git a/source/blender/src/interface_draw.c b/source/blender/src/interface_draw.c index fdb5fea658c..83a3c12bae7 100644 --- a/source/blender/src/interface_draw.c +++ b/source/blender/src/interface_draw.c @@ -1839,7 +1839,7 @@ static void ui_draw_but_CHARTAB(uiBut *but) int err; strcpy(tmpStr, G.selfont->name); - BLI_convertstringcode(tmpStr, G.sce, 0); + BLI_convertstringcode(tmpStr, G.sce); err = FTF_SetFont((unsigned char *)tmpStr, 0, 14.0); } } diff --git a/source/blender/src/outliner.c b/source/blender/src/outliner.c index a887a6f1751..683b06aafc4 100644 --- a/source/blender/src/outliner.c +++ b/source/blender/src/outliner.c @@ -3539,7 +3539,7 @@ static void namebutton_cb(void *tep, void *oldnamep) if (te->idcode == ID_LI) { char expanded[FILE_MAXDIR + FILE_MAXFILE]; BLI_strncpy(expanded, ((Library *)tselem->id)->name, FILE_MAXDIR + FILE_MAXFILE); - BLI_convertstringcode(expanded, G.sce, G.scene->r.cfra); + BLI_convertstringcode(expanded, G.sce); if (!BLI_exists(expanded)) { error("This path does not exist, correct this before saving"); } diff --git a/source/blender/src/screendump.c b/source/blender/src/screendump.c index b5240a94241..e793c224fcb 100644 --- a/source/blender/src/screendump.c +++ b/source/blender/src/screendump.c @@ -69,7 +69,8 @@ void write_screendump(char *name) if(dumprect) { strcpy(G.ima, name); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, G.scene->r.cfra); /* TODO - is this ever used? */ /* BKE_add_image_extension() checks for if extension was already set */ if(G.scene->r.scemode & R_EXTENSION) diff --git a/source/blender/src/seqaudio.c b/source/blender/src/seqaudio.c index 3e784019274..7c27f32c242 100644 --- a/source/blender/src/seqaudio.c +++ b/source/blender/src/seqaudio.c @@ -106,7 +106,7 @@ void makewavstring (char *string) if (string==0) return; strcpy(string, G.scene->r.pic); - BLI_convertstringcode(string, G.sce, G.scene->r.cfra); + BLI_convertstringcode(string, G.sce); BLI_make_existing_file(string); @@ -394,8 +394,7 @@ static void audio_fill_seq(Sequence * seq, void * mixdown, strncat(name, seq->strip->stripdata->name, FILE_MAXFILE-1); - BLI_convertstringcode(name, G.sce, - G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); seq->hdaudio= sound_open_hdaudio(name); } diff --git a/source/blender/src/sequence.c b/source/blender/src/sequence.c index 22bedab6bee..9f3be52af1b 100644 --- a/source/blender/src/sequence.c +++ b/source/blender/src/sequence.c @@ -429,7 +429,9 @@ void reload_sequence_new_file(Sequence * seq) strncpy(str, seq->strip->dir, FILE_MAXDIR-1); strncat(str, seq->strip->stripdata->name, FILE_MAXFILE-1); - BLI_convertstringcode(str, G.sce, G.scene->r.cfra); + BLI_convertstringcode(str, G.sce); + BLI_convertstringframe(str, G.scene->r.cfra); /* TODO - is this needed? */ + } if (seq->type == SEQ_IMAGE) { @@ -1068,7 +1070,9 @@ static int seq_proxy_get_fname(Sequence * seq, int cfra, char * name) G.scene->r.size); } - BLI_convertstringcode(name, G.sce, frameno); + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, frameno); + strcat(name, ".jpg"); @@ -1706,7 +1710,8 @@ static void do_build_seq_ibuf(Sequence * seq, TStripElem *se, int cfra, strncpy(name, seq->strip->dir, FILE_MAXDIR-1); strncat(name, s_elem->name, FILE_MAXFILE); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, G.scene->r.cfra); if (!build_proxy_run) { se->ibuf = seq_proxy_fetch(seq, cfra); } @@ -1735,7 +1740,8 @@ static void do_build_seq_ibuf(Sequence * seq, TStripElem *se, int cfra, if(seq->anim==0) { strncpy(name, seq->strip->dir, FILE_MAXDIR-1); strncat(name, seq->strip->stripdata->name, FILE_MAXFILE-1); - BLI_convertstringcode(name, G.sce, G.scene->r.cfra); + BLI_convertstringcode(name, G.sce); + BLI_convertstringframe(name, G.scene->r.cfra); seq->anim = openanim(name, IB_rect); } diff --git a/source/blender/src/writeimage.c b/source/blender/src/writeimage.c index d7e40dabd43..1ef32fc33e8 100644 --- a/source/blender/src/writeimage.c +++ b/source/blender/src/writeimage.c @@ -99,7 +99,8 @@ static void save_rendered_image_cb_real(char *name, int confirm) BKE_add_image_extension(name, G.scene->r.imtype); strcpy(str, name); - BLI_convertstringcode(str, G.sce, G.scene->r.cfra); + BLI_convertstringcode(str, G.sce); + BLI_convertstringframe(str, G.scene->r.cfra); /* TODO - is this even used? */ if (confirm) overwrite = saveover(str);