Orange: more relative path code cleanup. Introduced a new call in the

blenlib to correctly convert a relative path to a clean new path:

BLI_cleanup_dir(const char *relabase, char *name);

Only works for directories now.
This commit is contained in:
2005-12-14 13:21:32 +00:00
parent cb57d03e97
commit f88a0a6efd
7 changed files with 129 additions and 109 deletions

View File

@@ -469,6 +469,15 @@ void blo_split_main(ListBase *mainlist)
split_libdata(lbarray[i], mainl->next);
}
static void cleanup_path(const char *relabase, char *name)
{
char filename[FILE_MAXFILE];
BLI_splitdirstring(name, filename);
BLI_cleanup_dir(relabase, name);
strcat(name, filename);
}
static Main *blo_find_main(ListBase *mainlist, char *name)
{
Main *m;
@@ -477,24 +486,25 @@ static Main *blo_find_main(ListBase *mainlist, char *name)
char libname1[FILE_MAXDIR+FILE_MAXFILE];
// printf("G.sce %s\n", G.sce);
/* name in stringcode too */
/* everything in absolute paths now */
strcpy(name1, name);
BLI_makestringcode(G.sce, name1);
// printf("original %s\n", name);
// printf("converted %s\n", name1);
cleanup_path(G.sce, name1);
// printf("original in %s\n", name);
// printf("converted in %s\n", name1);
for (m= mainlist->first; m; m= m->next) {
char *libname= (m->curlib)?m->curlib->name:m->name;
// printf("libname %s\n", libname);
strcpy(libname1, libname);
BLI_makestringcode(G.sce, libname1);
cleanup_path(G.sce, libname1);
// printf("libname1 %s\n", libname1, name1);
if (BLI_streq(name1, libname1))
if (BLI_streq(name1, libname1)) {
printf("found library %s\n", libname);
return m;
}
}
m= MEM_callocN(sizeof(Main), "find_main");
@@ -504,7 +514,7 @@ static Main *blo_find_main(ListBase *mainlist, char *name)
strcpy(lib->name, name);
m->curlib= lib;
// printf("added new lib %s\n", name);
printf("added new lib %s\n", name);
return m;
}
@@ -5320,6 +5330,7 @@ static void expand_doit(FileData *fd, Main *mainvar, void *old)
if(bheadlib) {
// BHEAD+DATA dependancy
Library *lib= (Library *)(bheadlib+1);
/* we read the lib->name directly from the bhead, potential danger (64 bits?) */
mainvar= blo_find_main(&fd->mainlist, lib->name);
id= is_yet_read(mainvar, bhead);