xar (archiver)

{{Redirect|XAR|other uses|Xar (disambiguation){{!}}Xar}}

{{lowercase title}}

{{Infobox file format

| name = XAR

| icon =

| logo =

| screenshot =

| caption =

|_noextcode = on

| extensions = {{code|.xar}}, Installer (macOS), .XIP

| mime = application/x-xar{{cite web|url=https://reposcope.com/mimetype/application/x-xar|language=en|title=application/x-xar|access-date=2019-03-19}}

| type code =

| uniform type = com.apple.xar-archive

| magic = xar!

| owner =

| released =

| latest release version =

| latest release date =

| genre = archive file format

| container for =

| contained by =

| extended from = XML, gzip

| extended to =

| standard =

| free =

| url =

}}

XAR (short for eXtensible ARchive format) is an open source file archiver and the default file format of macOS’s archiver app. 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.[http://www.nabble.com/xar-in-Mac-OS-X-t2081148.html Nabble – xar in Mac OS X] {{webarchive |url=https://web.archive.org/web/20070207045420/http://www.nabble.com/xar-in-Mac-OS-X-t2081148.html |date=February 7, 2007 }}

One development branch of RPM, RPM5, uses xar.[http://rpm5.org/roadmap.php RPM 5 package manager]

File structure

thumb

The file consists of three sections, the header, the table of contents and the heap. All fields are stored in big endian order.{{Cite web|url=https://github.com/mackyle/xar/wiki/xarformat|title=Xarformat · mackyle/Xar Wiki|website=GitHub }}

= Header =

class="wikitable"

! Offset#

! Size
(in bytes)

! Purpose

0

| 4

| File signature used to identify the file format as Xar.
This should always equal xar!

4

| 2

| Header size

6

| 2

| Version of Xar format to use.
Currently there is only version 1.

8

|8

|Length of the TOC compressed data.

16

|8

|Length of the TOC uncompressed data.

24

|4

|Checksum algorithm:{{plainlist}}

  • 0 = none
  • 1 = SHA1
  • 2 = MD5
  • 3 = SHA-256{{cite web|url=https://www.unix.com/man-page/mojave/1/xar|title=xar - eXtensible ARchiver mojave man page|access-date=2019-03-26|last1=Braun|first1=Rob|last2=Fuller|first2=Landon|last3=Leimbach|first3=David|last4=Van Vechten|first4=Kevin|date=2015-06-04}}
  • 4 = SHA-512

{{endplainlist}}

28

|0, 4, 36

|sometimes padding bytes or checksum algorithm name

= 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.{{Cite web|url=https://code.google.com/archive/p/xar/wikis/xarformat.wiki|title = Google Code Archive - Long-term storage for Google Code Project Hosting}} 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

0

20

staff

20

joe

501

0755

directory

com.foobar

20

501

0775

directory

Contents

428

20

1005

a5f6f1461213a904f831d4ef6f214638342842ed

21d21a0c90378248ce0dfb6f345376d1b00d65fc

20

501

0664

file

Info.plist

20

501

0775

directory

Resources

14868

448

274432

efe5c97921de7ccc5aebc158d158e9d4280d6814

45c8be42d1d9afdb57ddd5e9311453010ec46161

20

501

0664

file

foobar

17635

15316

45056

3c761ffcc81ee6e232e4f4a1c4a81654c26c4e52

0ea31f8ef0e5987a1838a64ab5c26ebf3ee4bc37

20

501

0664

file

docSet.skidx

20

501

0775

directory

Documents

35790

32951

209242

5242cd71585c34e722932f324706f8c00e1ae0c5

c0e013e53d829511835e2b429abb5198731e9a3e

20

501

0664

file

foobar.html

References

{{Reflist}}