Closed mpilgrem closed 1 year ago
@snoyberg, I'll aim to add a test. Separately, looking at the CI, would you be interested in another pull request that (a) moves CI onto GitHub Actions; and/or (b) tests against more recent versions of GHC (given what you explained at: https://www.snoyman.com/blog/babies-oss-maintenance/)?
yes and yes, thanks!
I have rebased on the master
branch to reflect the new CI.
Uploaded tar-conduit 0.4.0 to Hackage.
Relies on the extended description of the pax interchange format at https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html.
The basic idea is that
untarChunks
already produces a stream ofTarChunk
that include the pax header block and pax extended header information, soapplyPaxChunkHeaders
consumes thoseTarChunk
to produceTarChunk
in which that information has been applied.The pax keywords that are supported ('comment', 'gid', 'gname', 'linkpath', 'path', 'size', 'uid' and 'uname') are those that do not need any change to the
Header
data constructor. (In practice, the motivation for this was thepath
keyword and long directory names and filenames. See https://github.com/commercialhaskell/stack/issues/6186#issuecomment-1642588255)Tested (in a limited way) for the 'path' keyword (see https://github.com/mpilgrem/tar-pax-conduit, where the code was first formulated). The other keywords are based on my reasoning only.
EDIT: I re-thought the API.
untarChunks
anduntar
now produce 'processed'TarChunks
anduntarChunksRaw
anduntarRaw
behave like the previous version ofuntarChunks
anduntar
. I assume that the Haskell PVP requires a major version bump because of the changed behaviour.