This file summarizes the major and interesting changes for each release. For a detailed list of changes, please see the git history.
- Support extracting multiple archives in one call by specifying them via
-For--file. (issue #11)
- do not panic when writing
--help/--versionto stdout fails (issue #34)
- use
pigzfor gzip compression when available (issue #32) - build: use LTO and only one codegen unit (issue #35)
- improve error message for failed
getpwuid_name/getgrgid_name - retry
getpwuid_r/getgrgid_ronERANGEwith larger buffer - consider
ENOENTerror as user/group not found
- skip special files (like block devices, character devices, fifos, and sockets) when extracting to stdout
- improve error message for invalid file type
- support extracting all types of special files (block devices, fifos, and sockets)
- test: Support running the 3cpio cli tests against the installed 3cpio binary
by setting the environment variable
THREECPIO_BIN.
- Remove executable permissions from the LICENSE file (issue #30)
- test: do not hard-code expected mode and gid in block device test (issue #28)
- set
--stream-sizeonzstdcompressor command (issue #15) - doc: document all public const/functions
- introduce a
Loggerstruct and macros and use an enum for log level - let
--examineprint the size and extracted size (issue #13) - Add
--rawoption to--examinefor the current format and make a human readable format the default.
- skip data alignment for files where
PATH_MAXis exceeded
- flush stdout at the end of each cpio
- add
--data-alignoption to the--createmode
- limit filename length to
PATH_MAX - Support running tests without lzop installed
- support extract/list cpio based on globbing patterns
- support
--to-stdouton extraction - limit compression level to min/max (instead of ignoring invalid levels)
- support
--partson--extractand--list(issue #14) - add
--make-directoriesoption for--extract - build: enable t64 on 32-bits architectures
- test:
- manifest: allow for EPIPE as a valid compression failure mode
- set current directory only if needed (to avoid race conditions)
- test:
- use temporary directory for write tests
- canonicalize
/dev/console(bug #16)
- Use a write buffer for
--createfor a massive performance improvement
- Check exit status of compressor commands
- test:
- Use
gzipinstead oftruewhich might be a symlink - Skip
test_file_from_line_location_*if required file is missing
- Use
- Add support for creating cpio archives from a manifest file (feature #3)
- Print inode on
--list --debug
- doc: add 3cpio man page
- Fix "No such file or directory" error when using
--subdir - test: fix race condition in tests by using a lock
- Fix directory traversal vulnerability: Prevent extracting CPIOs outside of the
destination directory to prevent directory traversal attacks. This new
behaviour is similar to
cpio --no-absolute-filenames.
- add
--countparameter
- add support for extracting character devices
- print major/minor of character devices in long format
- Support lzma compression (bug #8)
- Avoid
timespecstruct literal (LP: #2076903) - Include missing helper program name in error message (bug #4)
- Various changes to speed up
3cpio --list --verboseto make 3cpio faster than bsdcpio in all benchmarks.
- support preserving the owner/group of symlinks
- Add
--verbosemode to--listmode. The output will be similar tocpio --list --verboseandls -l.
- 3cpio: fix setting the directory/file permissions (bug #5)
- Add support for extracting (
--extract) cpio archives. New parameters are--directory,--preserve-permissions, and--subdir. - Add
--verboseand--debuglog levels
- Replace command line argument parser
gumdropbylexopt, because the latter has no dependencies. - Drop
assert_cmdandpredicatesdev dependencies.
- 3cpio: fix binary name in
--versionoutput
Initial release. 3cpio only supports examining (--examine) and listing
(--list) the content of the initramfs cpio.