mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 09:11:48 +00:00
Add a longname field to lumpinfo_t
This commit is contained in:
parent
f6e2c7063f
commit
29a94ee26a
2 changed files with 30 additions and 9 deletions
32
src/w_wad.c
32
src/w_wad.c
|
@ -114,13 +114,18 @@ void W_Shutdown(void)
|
||||||
{
|
{
|
||||||
while (numwadfiles--)
|
while (numwadfiles--)
|
||||||
{
|
{
|
||||||
fclose(wadfiles[numwadfiles]->handle);
|
wadfile_t *wad = wadfiles[numwadfiles];
|
||||||
Z_Free(wadfiles[numwadfiles]->filename);
|
|
||||||
while (wadfiles[numwadfiles]->numlumps--)
|
|
||||||
Z_Free(wadfiles[numwadfiles]->lumpinfo[wadfiles[numwadfiles]->numlumps].fullname);
|
|
||||||
|
|
||||||
Z_Free(wadfiles[numwadfiles]->lumpinfo);
|
fclose(wad->handle);
|
||||||
Z_Free(wadfiles[numwadfiles]);
|
Z_Free(wad->filename);
|
||||||
|
while (wad->numlumps--)
|
||||||
|
{
|
||||||
|
Z_Free(wad->lumpinfo[wad->numlumps].longname);
|
||||||
|
Z_Free(wad->lumpinfo[wad->numlumps].fullname);
|
||||||
|
}
|
||||||
|
|
||||||
|
Z_Free(wad->lumpinfo);
|
||||||
|
Z_Free(wad);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,6 +344,12 @@ static lumpinfo_t* ResGetLumpsStandalone (FILE* handle, UINT16* numlumps, const
|
||||||
lumpinfo->size = ftell(handle);
|
lumpinfo->size = ftell(handle);
|
||||||
fseek(handle, 0, SEEK_SET);
|
fseek(handle, 0, SEEK_SET);
|
||||||
strcpy(lumpinfo->name, lumpname);
|
strcpy(lumpinfo->name, lumpname);
|
||||||
|
|
||||||
|
// Allocate the lump's long name.
|
||||||
|
lumpinfo->longname = Z_Malloc(9 * sizeof(char), PU_STATIC, NULL);
|
||||||
|
strcpy(lumpinfo->longname, lumpname);
|
||||||
|
lumpinfo->longname[8] = '\0';
|
||||||
|
|
||||||
// Allocate the lump's full name.
|
// Allocate the lump's full name.
|
||||||
lumpinfo->fullname = Z_Malloc(9 * sizeof(char), PU_STATIC, NULL);
|
lumpinfo->fullname = Z_Malloc(9 * sizeof(char), PU_STATIC, NULL);
|
||||||
strcpy(lumpinfo->fullname, lumpname);
|
strcpy(lumpinfo->fullname, lumpname);
|
||||||
|
@ -430,6 +441,12 @@ static lumpinfo_t* ResGetLumpsWad (FILE* handle, UINT16* nlmp, const char* filen
|
||||||
lump_p->compression = CM_NOCOMPRESSION;
|
lump_p->compression = CM_NOCOMPRESSION;
|
||||||
memset(lump_p->name, 0x00, 9);
|
memset(lump_p->name, 0x00, 9);
|
||||||
strncpy(lump_p->name, fileinfo->name, 8);
|
strncpy(lump_p->name, fileinfo->name, 8);
|
||||||
|
|
||||||
|
// Allocate the lump's long name.
|
||||||
|
lump_p->longname = Z_Malloc(9 * sizeof(char), PU_STATIC, NULL);
|
||||||
|
strncpy(lump_p->longname, fileinfo->name, 8);
|
||||||
|
lump_p->longname[8] = '\0';
|
||||||
|
|
||||||
// Allocate the lump's full name.
|
// Allocate the lump's full name.
|
||||||
lump_p->fullname = Z_Malloc(9 * sizeof(char), PU_STATIC, NULL);
|
lump_p->fullname = Z_Malloc(9 * sizeof(char), PU_STATIC, NULL);
|
||||||
strncpy(lump_p->fullname, fileinfo->name, 8);
|
strncpy(lump_p->fullname, fileinfo->name, 8);
|
||||||
|
@ -599,6 +616,9 @@ static lumpinfo_t* ResGetLumpsZip (FILE* handle, UINT16* nlmp)
|
||||||
memset(lump_p->name, '\0', 9); // Making sure they're initialized to 0. Is it necessary?
|
memset(lump_p->name, '\0', 9); // Making sure they're initialized to 0. Is it necessary?
|
||||||
strncpy(lump_p->name, trimname, min(8, dotpos - trimname));
|
strncpy(lump_p->name, trimname, min(8, dotpos - trimname));
|
||||||
|
|
||||||
|
lump_p->longname = Z_Calloc(dotpos - trimname + 1, PU_STATIC, NULL);
|
||||||
|
strlcpy(lump_p->longname, trimname, dotpos - trimname + 1);
|
||||||
|
|
||||||
lump_p->fullname = Z_Calloc(zentry.namelen + 1, PU_STATIC, NULL);
|
lump_p->fullname = Z_Calloc(zentry.namelen + 1, PU_STATIC, NULL);
|
||||||
strncpy(lump_p->fullname, fullname, zentry.namelen);
|
strncpy(lump_p->fullname, fullname, zentry.namelen);
|
||||||
|
|
||||||
|
|
|
@ -66,9 +66,10 @@ typedef struct
|
||||||
{
|
{
|
||||||
unsigned long position; // filelump_t filepos
|
unsigned long position; // filelump_t filepos
|
||||||
unsigned long disksize; // filelump_t size
|
unsigned long disksize; // filelump_t size
|
||||||
char name[9]; // filelump_t name[]
|
char name[9]; // filelump_t name[] e.g. "LongEntr"
|
||||||
char *fullname; // Used by PK3s. Dynamically allocated name.
|
char *longname; // e.g. "LongEntryName"
|
||||||
size_t size; // real (uncompressed) size
|
char *fullname; // e.g. "Folder/Subfolder/LongEntryName.extension"
|
||||||
|
size_t size; // real (uncompressed) size
|
||||||
compmethod compression; // lump compression method
|
compmethod compression; // lump compression method
|
||||||
} lumpinfo_t;
|
} lumpinfo_t;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue