upstream: https://github.com/mirage/ocaml-tar
OCaml 94.0%
Dune 1.4%
Makefile 0.2%
Other 4.5%
29 1 0

Clone this repository

https://tangled.org/gazagnaire.org/ocaml-tar https://tangled.org/did:plc:jhift2vwcxhou52p3sewcrpx/ocaml-tar
git@git.recoil.org:gazagnaire.org/ocaml-tar git@git.recoil.org:did:plc:jhift2vwcxhou52p3sewcrpx/ocaml-tar

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

tar — decode and encode tar files#

OCaml-CI Build Status GitHub Actions Build Status

tar is a simple library to read and write tar files with an emphasis on streaming.

This is pure OCaml code, no C bindings.

Installation#

tar can be installed with opam:

opam install tar
opam install tar-unix    # for use in Unix/Lwt
opam install tar-mirage  # for use in MirageOS

If you don't use opam consult the tar.opam file for build instructions.

Example toplevel session#

In utop:

utop # #require "tar";;
utop # #require "tar-unix";;

utop # let f = Lwt_unix.openfile "/tmp/foo.tar" [ Unix.O_RDONLY ] 0;;
val f : Lwt_unix.file_descr = <abstr>

utop # Lwt.bind f Tar_lwt_unix.Archive.list;;
[{Tar.Header.file_name = "_build/lib/tar.mli.depends";
  Tar.Header.file_mode = 420; Tar.Header.user_id = 1000;
  Tar.Header.group_id = 1000; Tar.Header.file_size = 21L;
  Tar.Header.mod_time = 1381080315L;
  Tar.Header.link_indicator = Tar.Header.Link.Normal;
  Tar.Header.link_name = ""};
 {Tar.Header.file_name = "_build/lib/tar_unix.mli.depends";
  Tar.Header.file_mode = 420; Tar.Header.user_id = 1000;
  Tar.Header.group_id = 1000; Tar.Header.file_size = 27L;
  Tar.Header.mod_time = 1381080318L;
  Tar.Header.link_indicator = Tar.Header.Link.Normal;
  Tar.Header.link_name = ""};
 {Tar.Header.file_name = "_build/lib/tar.mllib";
  Tar.Header.file_mode = ...; Tar.Header.user_id = ...;
  Tar.Header.group_id = ...; Tar.Header.file_size = ...;
  Tar.Header.mod_time = ...; Tar.Header.link_indicator = ...;
  Tar.Header.link_name = ...};
 ...]

Compressed tarball#

The distribution gives a small implementation to create a tarball, a compressed archive. The software allows to list the contents of a given tarball. The compression is done with decompress. You can look at the project documentation for more information on how to compress.

Alternatively, it is possible to use the Tar_gz module which offers the same interface as Tar with compression.

Example users#

This library is used by

  • xapi to read and write VM images;
  • obuilder to copy files extensively.

Documentation#

The documentation and API reference is automatically generated by odoc from the interfaces. It can be consulted online.