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_writing
holds, exit - Write next block using
write_block_to_managed_pointer
orwrite_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.