From e4663acd76419a16d332a0fef2d75bf7bfe943e9 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Thu, 21 Dec 2006 14:00:18 +0000 Subject: UnPack data fix: Now uses original filename for unpacking, instead of the Blender ID name. That latter was a nice idea, but because of its 20 char maxname limit not working well. --- source/blender/blenkernel/intern/packedFile.c | 45 ++++++--------------------- 1 file changed, 9 insertions(+), 36 deletions(-) (limited to 'source/blender/blenkernel/intern/packedFile.c') diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index 0cdfda3be5d..4edf989acda 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -527,46 +527,17 @@ int unpackVFont(VFont * vfont, int how) return (ret_value); } -/* -create_local_name() creates a relative (starting with //) name. -Because it is allowed to have /'s and \'s in blenderobject names -we have to remove these first. -*/ - - -void create_local_name(char *localname, char *prefix, char *filename) -{ - char tempname[FILE_MAXDIR + FILE_MAXFILE]; - int i, len; - - strcpy(tempname, filename); - len = strlen(tempname); - - for (i = 0; i < len ; i++) { - switch (tempname[i]) - { - case '/': - case '\\': - case ' ': - tempname[i] = '_'; - break; - } - } - - strcpy(localname, prefix); - strcat(localname, tempname); -} - - int unpackSample(bSample *sample, int how) { - char localname[FILE_MAXDIR + FILE_MAXFILE]; + char localname[FILE_MAX], fi[FILE_MAX]; char * newname; int ret_value = RET_ERROR; PackedFile *pf; if (sample != NULL) { - create_local_name(localname, "//samples/", sample->id.name + 2); + strcpy(localname, sample->name); + BLI_splitdirstring(localname, fi); + sprintf(localname, "//samples/%s", fi); newname = unpackFile(sample->name, localname, sample->packedfile, how); if (newname != NULL) { @@ -588,13 +559,15 @@ int unpackSample(bSample *sample, int how) int unpackImage(Image * ima, int how) { - char localname[FILE_MAXDIR + FILE_MAXFILE]; + char localname[FILE_MAX], fi[FILE_MAX]; char * newname; int ret_value = RET_ERROR; if (ima != NULL) { - create_local_name(localname, "//textures/", ima->id.name + 2); - + strcpy(localname, ima->name); + BLI_splitdirstring(localname, fi); + sprintf(localname, "//textures/%s", fi); + newname = unpackFile(ima->name, localname, ima->packedfile, how); if (newname != NULL) { ret_value = RET_OK; -- cgit v1.2.3