mirror of
https://notabug.org/scuti/lib3ddevil1
synced 2024-11-21 21:32:58 +05:30
57 lines
1.9 KiB
Plaintext
57 lines
1.9 KiB
Plaintext
|
|
devil1pld.h / devil1pld.c
|
|
Handles .pld files.
|
|
|
|
File Format
|
|
PLDs are simple packages of different files, and do not contain a table
|
|
of contents. The header consists only of the number of files packaged
|
|
and the offsets from the beginning of the .pld that marks the starting
|
|
location of the file.
|
|
|
|
Functions
|
|
All functions are static but exposed by a function pointer in a constant
|
|
struct called DEVIL1PLD. For example, clients call functions using
|
|
DEVIL1PLD.getheader(..., ...);
|
|
|
|
bool getheader(struct PldHeader*, const char*);
|
|
Places file header into the struct pointed at by the first parameter
|
|
from the information given in by the second parameter.
|
|
|
|
inputs: pointer to a struct, pointer to file data
|
|
Neither parameter should be NULL.
|
|
|
|
output: true or false, whether or not operation succeeds or fails.
|
|
Will return false if one or both of the parameters are NULL
|
|
pointers.
|
|
Will return false if the attribute numOffset is less than 0-
|
|
i.e file is not valid.
|
|
|
|
int sizeofsector(struct PldHeader*, unsigned int i, unsigned int max);
|
|
Returns the size of the i-th file packed in the pld.
|
|
|
|
inputs: pointer to a struct, i-th element in pld, file size
|
|
|
|
output: (-1), [0, maximum value of int)
|
|
-1 indicates an invalid input.
|
|
|
|
void printheader(struct PldHeader*);
|
|
Shows contents of a PLD header in standard output.
|
|
|
|
inputs: pointer of a struct
|
|
|
|
Example logic to iterate through a .pld
|
|
{
|
|
...
|
|
// Get information about the file
|
|
struct PldHeader h;
|
|
DEVIL1PLD.getheader(&h, data);
|
|
|
|
unsigned int i;
|
|
for (i = 0; i < h.numOffset; i++) {
|
|
const char *currentfile = filedata + h.offset[i];
|
|
...
|
|
}
|
|
...
|
|
|
|
}
|