-------------------------------------------------------------------------------- Archive Structure Text file. revision 1.0 Applicable for reSource v2.1 and above. Last Modified: 11/December/2000 reSource (C) 1998-2001 Victor Kasenda / gruv http://go.to/gruv revisions: 1.0: Final revision. Added more comments. 0.3: Added archive signature 0.2: Cleaned up and added several data 0.1: Initial version -------------------------------------------------------------------------------- Data types and definition: -------------------------- byte - basic unit. longint - 4 bytes. (Long Integer. Can take a negative value.) string - variable length + null termination ... - variable size. Also used to indicate the data can be repeated as many times as wanted. General Format of a reSource Archive ------------------------------------ The extension for a reSource archive is 'rS'. All archives have a signature to confirm that it is a reSource archive. An empty archive is one that has no files. It must have a valid signature and a central directory end header. A zero byte file is not a valid archive. Generally, the reSource archive will have an archive header, as many data blocks as needed, a central directory and a central directory end record. Signatures: ----------- Long integers are stored in groups of 4 bytes. The byte with the lsb goes first. So the signatures values had to be reversed to allow them to be seen by a hex editor. The signatures are stored in ArchiveHeadersUnit. Headers ------- Each header has a corresponding class. For some headers, the actual size in bytes is required so it is stored in a constant e.g. DATA_HEADER_SIZE is the size of a data header. Data Header ----------- Each data block has a data header. first similarity index - first char to start with when restoring the block virtual smallest char - it does not exist, so it is not output to the block. when restoring, leave a space at this index to pretend it's there. used in sada sort. Overall reSource format: [archive header] [data header + data block] . . . [central directory] end of central directory record A. Archive Header reSource Archive signature 4 bytes ('RSVK') B. Data Header Data header signature 4 bytes ('DATA') crc 32 4 bytes compressed size 4 bytes first similarity index 4 bytes virtual smallest char index 4 bytes C. Central Director Structure: [file header] . . . + end of central directory record File Header: Central file header signature 4 bytes ('CFHS') compressed size 4 bytes uncompressed size 4 bytes number of blocks 4 bytes offset of first local data header 4 bytes (attributes) time (dos date + time) 4 bytes attr 4 bytes file name string End Of Central Directory Record: Signature 4 bytes ('ECDR') End of Central Directory Record Block Size 4 bytes offset of first Central File Header 4 bytes