Provide ISO 28500:2009 writer (aka warc, aka web archive)
Provide ISO 28500:2009 reader (aka warc, aka web archive)
Implant WARC support in tar's get_format_code()
Provide WARC read/write tests
fix, never write more bytes in _warc_data() than ...

previously announce in _warc_header().

The test suite (as is) is one offender.  It populates a 9-byte string, mimicking an IFREG file
but by the time the header makes it into the archive, the size changes from 0 to 9.
fix, request just the bare minimum for a WARC header

Moreover, assume a response of less than the bare minimum header
length to be the archive's EOF.
fix, WARC files urgently need the filesize to be known when the header is written
Obey gcc warnings,

in particular: Don't compare integers of different signedness,
always initialise all members of a struct explicitly.
Fix, actually consume data between calls to _warc_read()
Store and read back mtimes through Last-Modified custom header

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Hygiene, clean up xmemmem() code a little, use xor sums.

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Fix compilation on newer HP-UX versions

Newer HP-UX versions (e.g. 11.31) also offers F_SETTIMES, but with a
different struct for the timing information.

Suggested-by: Eric Berge <ericmberge@gmail.com>
Fix compilation on Tru64 with F_SETTIMES

The parent commit left a typo in the conditional code path for Tru64.
Add the missing '.'.
Tests, heed Tim's advice and emit ARCHIVE_FAILED for entries ...

that cannot be stored (natively) in WARC format.
Fix, an empty WARC archive needs a bit more than 256 bytes.
Hygiene, protect against NULL filenames in _warc_header()

Return ARCHIVE_WARN immediately.
Hygiene, trust __archive_read_ahead() and kick superfluous check.

Heeding Tim's advice, a non-NULL from __archive_read_ahead() is
guaranteed to be of at least the minimum size, therefore no need to
check for this condition again.
Hygiene, use FALLTHROUGH instead of lint's @fallthrough@
Hygiene, always use xmemmem() because memmem() is a GNU extension
Hygiene, set unconsumed slot exactly once for each branch

in _warc_read().  Also kick __archive_read_consume() because the writer
will consume the bytes for us.  So for the EOF case, set unconsumed to 0,
for the non-EOF case set unconsumed to the minimum of the number of bytes
read and the content length.