Xar (archiver)

XAR (short for eXtensible ARchive format) is an open source file archiver and the archiver’s file format. It was created within the OpenDarwin project and is used in macOS X 10.5 and up for software installation routines, as well as browser extensions in Safari 5.0 and up. Xar replaced the use of gzipped pax files.

One development branch of RPM, RPM5, uses xar.

File structure
The file consists of three sections, the header, the table of contents and the heap. All fields are stored in big endian order.

Table of contents
Xar is different from cpio, tar or ar in that it stores the TOC (table of contents) in the beginning of the file, making appending to an archive more complicated, but making it unnecessary to scan through the archive to extract an individual contained file. The table of contents is stored as a zlib compressed, UTF-8 encoded, XML document. Each file that is stored in the Xar is independently compressed/encoded. This gives the ability to have the file(s) encoded using gzip while having another file in the same archive encoded using a different method such as bzip2. On some systems the archive member can also be encoded by xz or lzma compression method.

Example Table of contents 20     501      0664      file Info.plist 20     501      0775      directory Resources 20      501       0664       file foobar 20      501       0664       file docSet.skidx 20      501       0775       directory Documents 20       501        0664        file foobar.html