Skip to content

zip 3.0.0

Latest

Choose a tag to compare

@gaborcsardi gaborcsardi released this 11 Jun 06:14
  • zip(), zipr(), zip_append(), zipr_append(), zip_process(), and
    unzip() / unzip_process() now support password-protected archives
    using WinZIP AES-256, and other encryption schemes (#38).

  • zip_list() now reports an encryption column indicating the encryption
    scheme used for each entry (#38).

  • unzip() is now vectorized. If all arguments apart from zipfile,
    exdir and password are the default, then it unprocesses all files
    concurrently, using a thread pool. The size of the thread pool can be
    set with the zip_threads option or the ZIP_THREADS environment
    variable (#147).

  • zip_list() and unzip() now work directly on http:// and https://
    URLs. They use HTTP range requests to download only the central directory
    and the requested entries, so listing or extracting a few files from a
    large remote archive does not downloads the whole file. If the server
    does not support range requests, they fall back to downloading the entire
    archive (with a warning). This requires the curl package (#39).

  • zip_list() and unzip() now report the Unix permission bits stored in an
    archive on Windows as well. Previously they always reported 700/600 on
    Windows, regardless of the permissions recorded in the ZIP file.

  • zip_list() and unzip() now report type == "directory" for directory
    entries whose Unix mode bits lack S_IFDIR but that are marked as
    directories by a trailing slash or the DOS directory attribute (e.g.
    archives created by zip() itself). Previously these were reported as
    "file".

  • zip() and unzip() now show a progress bar when the cli package is
    installed. For zip(), progress is byte-level, so large single files are
    tracked smoothly. For unzip(), progress advances once per extracted
    entry. Progress bars are (for now) opt-in via the ZIP_PROGRESS=true
    environment variable or the zip.progress option (#48).

  • unzip() now returns a data frame (invisibly) with one row per extracted
    entry, containing the same columns as zip_list() (filename,
    compressed_size, uncompressed_size, timestamp, permissions,
    crc32, offset, type) plus a path column with the absolute path
    to each extracted file on disk (#35).

  • zip_list() and unzip() now have an encoding argument for ZIP files
    with non-UTF-8, non-CP437 filenames (e.g. CP932/Shift-JIS on Japanese
    Windows). When encoding is set, filenames without the UTF-8 flag are
    decoded from the specified code page instead of CP437 (#101).

  • zip_append() and zipr_append() now replace existing entries when
    appending a file whose archive path already exists in the zip file,
    instead of creating duplicate entries (#111).

  • unzip() and zip_list() now correctly handle ZIP files with
    non-UTF-8 filenames (e.g. filenames encoded in IBM CP437, as created
    by many Windows tools). The filenames are converted to UTF-8 using the
    CP437 character map when the UTF-8 flag is not set in the ZIP entry
    (#103).

  • New keys argument to zip(), zipr(), zip_append(), and
    zipr_append(). It allows specifying custom paths for entries inside
    the archive, independently of their paths on disk (#50).

  • unzip_process() now probes falls back to using an R subprocess when
    the bundled cmdunzip executable cannot be started (#135).

  • Updated embedded miniz to version 3.1.1 (#122).