tar
Reading, writing and manipulating ".tar" archive files.
LTS Haskell 23.1: | 0.6.3.0@rev:1 |
Stackage Nightly 2024-12-22: | 0.6.3.0@rev:1 |
Latest on Hackage: | 0.6.3.0@rev:1 |
tar-0.6.3.0@sha256:e9f151d9999be8953443e730524b2792e9c0a4fb5b1463097fa1a8230870fd8a,4634
Module documentation for 0.6.3.0
There are no documented modules for this package.
tar
This library is for working with .tar
archive files. It can read and write a range of common variations of archive format including V7, POSIX USTAR and GNU formats. It provides support for packing and unpacking portable archives and features for random access to archive content using an index.
For a quick start with the API look at htar/htar.hs
,
which implements a very basic tar
command-line tool.
To run benchmarks download 01-index.tar
into the package folder:
wget https://hackage.haskell.org/01-index.tar
cabal bench
Changes
0.6.3.0 Bodigrim [email protected] June 2024
0.6.2.0 Bodigrim [email protected] March 2024
- Fix issues with Unicode support in filenames.
0.6.1.0 Bodigrim [email protected] January 2024
- Support Unicode in filenames (encoded as UTF-8).
- Reduce peak memory consumption when unpacking large files.
0.6.0.0 Bodigrim [email protected] December 2023
This release features support for long file paths and symlinks (thanks to Julian Ospald) and variety of changes and improvements across entire package, fixing multiple causes of silent data corruption.
Breaking changes:
- Generalize
Entries
,Entry
andEntryContent
toGenEntries
,GenEntry
andGenEntryContent
.- Functions working on entries have been generalized to more polymorphic types, where possible.
- Modules which used to
import Codec.Archive.Tar (Entry(..))
should nowimport Codec.Archive.Tar (Entry, pattern Entry)
and similar for otherGen
-types. Another option is to import the entire module qualified.
- Redesign
Codec.Archive.Tar.Check
.- Change types of
checkSecurity
,checkTarbomb
,checkPortability
. - Add offending path as new field to
TarBombError
constructor. - Extend
FileNameError
withUnsafeLinkTarget
constructor.
- Change types of
- Drop deprecated
emptyIndex
andfinaliseIndex
.
Examples of migration:
Bug fixes:
- Add support for over-long filepaths via GNU extension.
- Now
entryPath
corresponds to an internal, low-level path, limited to 255 characters. To list filenames properly usedecodeLongNames
, followed byentryTarPath
.
- Now
- Fix handling of hardlinks and symlinks.
- Handle > 8 GB files insted of silent corruption.
- Prohibit non-ASCII file names instead of silent corruption.
- Set permissions on extracted files.
- Ignore FAT32 errors when setting modification time.
- Switch to trailer parsing mode only after a full block of
NUL
.
New API:
- Add
Traversable Entries
instance. - Add
toTarPath'
,ToTarPathResult
,longLinkEntry
,longSymLinkEntry
. - Add
packSymlinkEntry
andsymbolicLinkPermission
. - Add
packAndCheck
andunpackAndCheck
. - Add
checkEntrySecurity
,checkEntryTarbomb
andcheckEntryPortability
. - Add
encodeLongNames
,decodeLongNames
,DecodeLongNamesError
.
Improvements:
- Speed up
fromTarPath
,fromTarPathToPosixPath
andfromTarPathToWindowsPath
. - Alleviate leakage of file handles in
packFileEntry
. - Fix tests on 32-bit architectures.
0.5.1.1 Herbert Valerio Riedel [email protected] August 2019
- Add support for GHC 8.8.1 / base-4.13
0.5.1.0 Herbert Valerio Riedel [email protected] March 2018
- Add support for GHC 8.4.1 / base-4.11
- Add
Semigroup
instance forEntries
0.5.0.3 Duncan Coutts [email protected] May 2016
- Fix tarbomb logic to ignore special PAX entries. Was breaking many valid tarballs. https://github.com/haskell/cabal/issues/3390
0.5.0.2 Duncan Coutts [email protected] April 2016
- Fix compatability when using ghc-7.4.x and directory >= 1.2.3
0.5.0.1 Duncan Coutts [email protected] January 2016
- Fix compatability with directory-1.2.3+
0.5.0.0 Duncan Coutts [email protected] January 2016
- Work with old version of bytestring (using bytestring-builder package).
- Builds with GHC 6.10 – 8.0.
- Change type of Index.serialise to be simply strict bytestring.
- Preserve file timestamps on unpack (with directory-1.2.3+)
0.4.5.0 Duncan Coutts [email protected] January 2016
- Revert accidental minor API change in 0.4.x series (the type of the owner and group name strings). The 0.4.3.0 and 0.4.4.0 releases contained the accidental API change.
- Add a handy foldlEntries function
0.4.4.0 Duncan Coutts [email protected] January 2016
- Build and warning fixes for GHC 7.10 and 8.0
- New Index module function
toList
to get all index entries
0.4.3.0 Duncan Coutts [email protected] January 2016
- New Index function
unfinalise
to extend existing index - 9x faster reading
- 9x faster index construction
- 24x faster index extension
- More compact entry types, using ByteStrings
- More Eq and Show instances
- Greater QC test coverage
- Fix minor bug in reading non-standard v7 format entries
0.4.2.2 Edsko de Vries [email protected] October 2015
- Fix bug in Index
0.4.2.1 Duncan Coutts [email protected] July 2015
- Fix tests for the Index modules (the code was right)
0.4.2.0 Duncan Coutts [email protected] July 2015
- New Index module for random access to tar file contents
- New lower level tar file I/O actions
- New tarball file ‘append’ action
0.4.1.0 Duncan Coutts [email protected] January 2015
- Build with GHC 7.10
- Switch from old-time to time package
- Added more instance for Entries type
0.4.0.1 Duncan Coutts [email protected] October 2012
- fixes to work with directory 1.2
- More Eq/Ord instances
0.4.0.0 Duncan Coutts [email protected] February 2012
- More explicit error types and error handling
- Support star base-256 number format
- Improved API documentation