rendered paste body//files are organized as binary trees
typedef struct header
{
int signature;
int filecount;
int toplink;
} HEADER;
typedef struct fileindex
{
int structsize;
int filename_length;
int prev_index;
int next_index;
int constant;//14h
char filename[filename_length];
} FILEINDEX;
typedef struct filedata
{
int datasize;
int crypt_type;
int constant;
int structsize;
byte bindata[datasize];
} FILEDATA;
typedef struct dfile
{
FILEINDEX fileidx;
FILEDATA filedat;
} DFILE;
/*
int recursefile(int link)
{
if(link>0)
{
FSeek(link);
DFILE files;
recursefile(files.fileidx.prev_index);
recursefile(files.fileidx.next_index);
}
return 1;
}
*/
void recursefile(int link1,int link2)
{
local int idx1,idx2;
if(link1>0)
{
FSeek(link1);
DFILE files;
idx1=files.fileidx.prev_index;
idx2=files.fileidx.next_index;
recursefile(idx1,idx2);
}
if(link2>0)
{
FSeek(link2);
DFILE files;
idx1=files.fileidx.prev_index;
idx2=files.fileidx.next_index;
recursefile(idx1,idx2);
}
}
HEADER head;
if( head.toplink > 0 ) recursefile(head.toplink,0);