TAR_HEADER_WRITER - ntruessel/etar GitHub Wiki
TAR_HEADER_WRITER is a common ancestor for classes that are able to write tar headers. etar provides two effective implementations: USTAR_HEADER_WRITER and PAX_HEADER_WRITER for the ustar and pax format respectively. Since the ustar format suffers from certain limitations (length constraints on entries, compare Header Formats), the usage of PAX_HEADER_WRITER is strongly encouraged, as it removes the ustar limitations. Furthermore it does not introduce any space overhead for headers that fit into a single ustar header, so there are no real drawbacks.
Usage
Most users will most likely not have to use TAR_HEADER_WRITER directly, but this section shortly explains how it is properly used.
- Check whether the header can be written using
writable - Set new header to write using
set_active_header - If
finished_writingholds, exit - Write next block using
write_block_to_managed_pointerorwrite_block_to_new_managed_pointer, goto 3
Implementing a custom header writer
To implement a custom header writer, one has to implement the following features:
required_blocks
required_blocks: BOOLEAN
The amount of blocks that are required to write active_header. active_header is set by a client using set_active_header and represents the header for which writing is in progress.
writable
writable (a_header: TAR_HEADER): BOOLEAN
Indicate whether a_header can be written using this writer.
write_block_to_managed_pointer
write_block_to_managed_pointer (p: MANAGED_POINTER; a_pos: INTEGER)
Write next header block to p (starting at a_pos). This is the core feature and will probably require most work. It has to increase written_blocks by one.
Utilities
All TAR_HEADER_WRITER descendants can use the TAR_UTILS features. It is not intended that a TAR_HEADER_WRITER reports errors.