Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a250fc0fb898c77b

Jump to content

xar (archiver)

From Wikipedia, the free encyclopedia
(Redirected from XAR)
XAR
Filename extensions.xar, .pkg, .xip[1]
Internet media type
application/x-xar[1]
Uniform Type Identifier (UTI)com.apple.xar-archive
Magic numberxar!
Type of formatarchive file format
Extended fromXML, gzip

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.[2]

One development branch of RPM, RPM5, uses xar.[3]

File structure

[edit]

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

[edit]
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:
28 0, 4, 36 sometimes padding bytes or checksum algorithm name

Table of contents

[edit]

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.[6][4] 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.[5]

Example Table of contents

<?xml version="1.0" encoding="UTF-8"?>
<xar>
 <toc>
  <checksum style="sha1">
   <offset>0</offset>
   <size>20</size>
  </checksum>
  <file id="1">
   <group>staff</group>
   <gid>20</gid>
   <user>joe</user>
   <uid>501</uid>
   <mode>0755</mode>
   <type>directory</type>
   <name>com.foobar</name>
   <file id="2">
    <group></group>
    <gid>20</gid>
    <user></user>
    <uid>501</uid>
    <mode>0775</mode>
    <type>directory</type>
    <name>Contents</name>
    <file id="3">
     <data>
      <length>428</length>
      <offset>20</offset>
      <size>1005</size>
      <encoding style="application/x-gzip"/>
      <archived-checksum style="SHA1">a5f6f1461213a904f831d4ef6f214638342842ed</archived-checksum>
      <extracted-checksum style="SHA1">21d21a0c90378248ce0dfb6f345376d1b00d65fc</extracted-checksum>
     </data>
     <group></group>
     <gid>20</gid>
     <user></user>
     <uid>501</uid>
     <mode>0664</mode>
     <type>file</type>
     <name>Info.plist</name>
    </file>
    <file id="4">
     <group></group>
     <gid>20</gid>
     <user></user>
     <uid>501</uid>
     <mode>0775</mode>
     <type>directory</type>
     <name>Resources</name>
     <file id="5">
      <data>
       <length>14868</length>
       <offset>448</offset>
       <size>274432</size>
       <encoding style="application/x-gzip"/>
       <archived-checksum style="SHA1">efe5c97921de7ccc5aebc158d158e9d4280d6814</archived-checksum>
       <extracted-checksum style="SHA1">45c8be42d1d9afdb57ddd5e9311453010ec46161</extracted-checksum>
      </data>
      <group></group>
      <gid>20</gid>
      <user></user>
      <uid>501</uid>
      <mode>0664</mode>
      <type>file</type>
      <name>foobar</name>
     </file>
     <file id="6">
      <data>
       <length>17635</length>
       <offset>15316</offset>
       <size>45056</size>
       <encoding style="application/x-gzip"/>
       <archived-checksum style="SHA1">3c761ffcc81ee6e232e4f4a1c4a81654c26c4e52</archived-checksum>
       <extracted-checksum style="SHA1">0ea31f8ef0e5987a1838a64ab5c26ebf3ee4bc37</extracted-checksum>
      </data>
      <group></group>
      <gid>20</gid>
      <user></user>
      <uid>501</uid>
      <mode>0664</mode>
      <type>file</type>
      <name>docSet.skidx</name>
     </file>
     <file id="7">
      <group></group>
      <gid>20</gid>
      <user></user>
      <uid>501</uid>
      <mode>0775</mode>
      <type>directory</type>
      <name>Documents</name>
      <file id="8">
       <data>
        <length>35790</length>
        <offset>32951</offset>
        <size>209242</size>
        <encoding style="application/x-gzip"/>
        <archived-checksum style="SHA1">5242cd71585c34e722932f324706f8c00e1ae0c5</archived-checksum>
        <extracted-checksum style="SHA1">c0e013e53d829511835e2b429abb5198731e9a3e</extracted-checksum>
       </data>
       <group></group>
       <gid>20</gid>
       <user></user>
       <uid>501</uid>
       <mode>0664</mode>
       <type>file</type>
       <name>foobar.html</name>
      </file>
     </file>
    </file>
   </file>
  </file>
 </toc>
</xar>

References

[edit]
  1. 1 2 "application/x-xar". Retrieved 2019-03-19.
  2. Nabble – xar in Mac OS X Archived February 7, 2007, at the Wayback Machine
  3. RPM 5 package manager
  4. 1 2 "Xarformat · mackyle/Xar Wiki". GitHub.
  5. 1 2 Braun, Rob; Fuller, Landon; Leimbach, David; Van Vechten, Kevin (2015-06-04). "xar - eXtensible ARchiver mojave man page". Retrieved 2019-03-26.
  6. "Google Code Archive - Long-term storage for Google Code Project Hosting".
[edit]