summaryrefslogtreecommitdiff
path: root/libarchive/libarchive-2.8.0/doc/html/cpio.5.html
diff options
context:
space:
mode:
Diffstat (limited to 'libarchive/libarchive-2.8.0/doc/html/cpio.5.html')
-rw-r--r--libarchive/libarchive-2.8.0/doc/html/cpio.5.html422
1 files changed, 422 insertions, 0 deletions
diff --git a/libarchive/libarchive-2.8.0/doc/html/cpio.5.html b/libarchive/libarchive-2.8.0/doc/html/cpio.5.html
new file mode 100644
index 0000000..8d4768d
--- /dev/null
+++ b/libarchive/libarchive-2.8.0/doc/html/cpio.5.html
@@ -0,0 +1,422 @@
+<!-- Creator : groff version 1.19.2 -->
+<!-- CreationDate: Thu Feb 4 20:36:34 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; }
+ pre { margin-top: 0; margin-bottom: 0; }
+ table { margin-top: 0; margin-bottom: 0; }
+</style>
+<title></title>
+</head>
+<body>
+
+<hr>
+
+
+<p valign="top">CPIO(5) FreeBSD File Formats Manual
+CPIO(5)</p>
+
+<p style="margin-top: 1em" valign="top"><b>NAME</b></p>
+
+<p style="margin-left:8%;"><b>cpio</b> &mdash; format of
+cpio archive files</p>
+
+
+<p style="margin-top: 1em" valign="top"><b>DESCRIPTION</b></p>
+
+<p style="margin-left:8%;">The <b>cpio</b> archive format
+collects any number of files, directories, and other file
+system objects (symbolic links, device nodes, etc.) into a
+single stream of bytes.</p>
+
+<p style="margin-left:8%; margin-top: 1em"><b>General
+Format</b> <br>
+Each file system object in a <b>cpio</b> archive comprises a
+header record with basic numeric metadata followed by the
+full pathname of the entry and the file data. The header
+record stores a series of integer values that generally
+follow the fields in <i>struct stat</i>. (See stat(2) for
+details.) The variants differ primarily in how they store
+those integers (binary, octal, or hexadecimal). The header
+is followed by the pathname of the entry (the length of the
+pathname is stored in the header) and any file data. The end
+of the archive is indicated by a special record with the
+pathname &lsquo;&lsquo;TRAILER!!!&rsquo;&rsquo;.</p>
+
+<p style="margin-left:8%; margin-top: 1em"><b>PWB
+format</b> <br>
+XXX Any documentation of the original PWB/UNIX 1.0 format?
+XXX</p>
+
+<p style="margin-left:8%; margin-top: 1em"><b>Old Binary
+Format</b> <br>
+The old binary <b>cpio</b> format stores numbers as 2-byte
+and 4-byte binary values. Each entry begins with a header in
+the following format:</p>
+
+<p style="margin-left:17%; margin-top: 1em">struct
+header_old_cpio { <br>
+unsigned short c_magic; <br>
+unsigned short c_dev; <br>
+unsigned short c_ino; <br>
+unsigned short c_mode; <br>
+unsigned short c_uid; <br>
+unsigned short c_gid; <br>
+unsigned short c_nlink; <br>
+unsigned short c_rdev;</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="29%"></td>
+<td width="13%">
+
+
+<p valign="top">unsigned short c_mtime[2];</p></td>
+<td width="58%">
+</td>
+</table>
+
+<p style="margin-left:17%;">unsigned short c_namesize;</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="29%"></td>
+<td width="71%">
+
+
+<p valign="top">unsigned short c_filesize[2];</p></td>
+</table>
+
+<p style="margin-left:17%;">};</p>
+
+<p style="margin-left:8%; margin-top: 1em">The <i>unsigned
+short</i> fields here are 16-bit integer values; the
+<i>unsigned int</i> fields are 32-bit integer values. The
+fields are as follows</p>
+
+<p style="margin-top: 1em" valign="top"><i>magic</i></p>
+
+<p style="margin-left:20%; margin-top: 1em">The integer
+value octal 070707. This value can be used to determine
+whether this archive is written with little-endian or
+big-endian integers.</p>
+
+<p style="margin-top: 1em" valign="top"><i>dev</i>,
+<i>ino</i></p>
+
+<p style="margin-left:20%;">The device and inode numbers
+from the disk. These are used by programs that read
+<b>cpio</b> archives to determine when two entries refer to
+the same file. Programs that synthesize <b>cpio</b> archives
+should be careful to set these to distinct values for each
+entry.</p>
+
+<p style="margin-top: 1em" valign="top"><i>mode</i></p>
+
+<p style="margin-left:20%; margin-top: 1em">The mode
+specifies both the regular permissions and the file type. It
+consists of several bit fields as follows:</p>
+
+<p valign="top">0170000</p>
+
+<p style="margin-left:34%; margin-top: 1em">This masks the
+file type bits.</p>
+
+<p valign="top">0140000</p>
+
+<p style="margin-left:34%; margin-top: 1em">File type value
+for sockets.</p>
+
+<p valign="top">0120000</p>
+
+<p style="margin-left:34%; margin-top: 1em">File type value
+for symbolic links. For symbolic links, the link body is
+stored as file data.</p>
+
+<p valign="top">0100000</p>
+
+<p style="margin-left:34%; margin-top: 1em">File type value
+for regular files.</p>
+
+<p valign="top">0060000</p>
+
+<p style="margin-left:34%; margin-top: 1em">File type value
+for block special devices.</p>
+
+<p valign="top">0040000</p>
+
+<p style="margin-left:34%; margin-top: 1em">File type value
+for directories.</p>
+
+<p valign="top">0020000</p>
+
+<p style="margin-left:34%; margin-top: 1em">File type value
+for character special devices.</p>
+
+<p valign="top">0010000</p>
+
+<p style="margin-left:34%; margin-top: 1em">File type value
+for named pipes or FIFOs.</p>
+
+<p valign="top">0004000</p>
+
+<p style="margin-left:34%; margin-top: 1em">SUID bit.</p>
+
+<p valign="top">0002000</p>
+
+<p style="margin-left:34%; margin-top: 1em">SGID bit.</p>
+
+<p valign="top">0001000</p>
+
+<p style="margin-left:34%; margin-top: 1em">Sticky bit. On
+some systems, this modifies the behavior of executables
+and/or directories.</p>
+
+<p valign="top">0000777</p>
+
+<p style="margin-left:34%; margin-top: 1em">The lower 9
+bits specify read/write/execute permissions for world,
+group, and user following standard POSIX conventions.</p>
+
+<p style="margin-top: 1em" valign="top"><i>uid</i>,
+<i>gid</i></p>
+
+<p style="margin-left:20%;">The numeric user id and group
+id of the owner.</p>
+
+<p style="margin-top: 1em" valign="top"><i>nlink</i></p>
+
+<p style="margin-left:20%; margin-top: 1em">The number of
+links to this file. Directories always have a value of at
+least two here. Note that hardlinked files include file data
+with every copy in the archive.</p>
+
+<p style="margin-top: 1em" valign="top"><i>rdev</i></p>
+
+<p style="margin-left:20%; margin-top: 1em">For block
+special and character special entries, this field contains
+the associated device number. For all other entry types, it
+should be set to zero by writers and ignored by readers.</p>
+
+<p style="margin-top: 1em" valign="top"><i>mtime</i></p>
+
+<p style="margin-left:20%; margin-top: 1em">Modification
+time of the file, indicated as the number of seconds since
+the start of the epoch, 00:00:00 UTC January 1, 1970. The
+four-byte integer is stored with the most-significant 16
+bits first followed by the least-significant 16 bits. Each
+of the two 16 bit values are stored in machine-native byte
+order.</p>
+
+
+<p style="margin-top: 1em" valign="top"><i>namesize</i></p>
+
+<p style="margin-left:20%;">The number of bytes in the
+pathname that follows the header. This count includes the
+trailing NUL byte.</p>
+
+
+<p style="margin-top: 1em" valign="top"><i>filesize</i></p>
+
+<p style="margin-left:20%;">The size of the file. Note that
+this archive format is limited to four gigabyte file sizes.
+See <i>mtime</i> above for a description of the storage of
+four-byte integers.</p>
+
+<p style="margin-left:8%; margin-top: 1em">The pathname
+immediately follows the fixed header. If the <b>namesize</b>
+is odd, an additional NUL byte is added after the pathname.
+The file data is then appended, padded with NUL bytes to an
+even length.</p>
+
+<p style="margin-left:8%; margin-top: 1em">Hardlinked files
+are not given special treatment; the full file contents are
+included with each copy of the file.</p>
+
+<p style="margin-left:8%; margin-top: 1em"><b>Portable
+ASCII Format</b> <br>
+Version&nbsp;2 of the Single UNIX Specification
+(&lsquo;&lsquo;SUSv2&rsquo;&rsquo;) standardized an ASCII
+variant that is portable across all platforms. It is
+commonly known as the &lsquo;&lsquo;old
+character&rsquo;&rsquo; format or as the
+&lsquo;&lsquo;odc&rsquo;&rsquo; format. It stores the same
+numeric fields as the old binary format, but represents them
+as 6-character or 11-character octal values.</p>
+
+<p style="margin-left:17%; margin-top: 1em">struct
+cpio_odc_header { <br>
+char c_magic[6]; <br>
+char c_dev[6]; <br>
+char c_ino[6]; <br>
+char c_mode[6]; <br>
+char c_uid[6]; <br>
+char c_gid[6]; <br>
+char c_nlink[6]; <br>
+char c_rdev[6]; <br>
+char c_mtime[11]; <br>
+char c_namesize[6]; <br>
+char c_filesize[11]; <br>
+};</p>
+
+<p style="margin-left:8%; margin-top: 1em">The fields are
+identical to those in the old binary format. The name and
+file body follow the fixed header. Unlike the old binary
+format, there is no additional padding after the pathname or
+file contents. If the files being archived are themselves
+entirely ASCII, then the resulting archive will be entirely
+ASCII, except for the NUL byte that terminates the name
+field.</p>
+
+<p style="margin-left:8%; margin-top: 1em"><b>New ASCII
+Format</b> <br>
+The &quot;new&quot; ASCII format uses 8-byte hexadecimal
+fields for all numbers and separates device numbers into
+separate fields for major and minor numbers.</p>
+
+<p style="margin-left:17%; margin-top: 1em">struct
+cpio_newc_header { <br>
+char c_magic[6]; <br>
+char c_ino[8]; <br>
+char c_mode[8]; <br>
+char c_uid[8]; <br>
+char c_gid[8]; <br>
+char c_nlink[8]; <br>
+char c_mtime[8]; <br>
+char c_filesize[8]; <br>
+char c_devmajor[8]; <br>
+char c_devminor[8]; <br>
+char c_rdevmajor[8]; <br>
+char c_rdevminor[8]; <br>
+char c_namesize[8]; <br>
+char c_check[8]; <br>
+};</p>
+
+<p style="margin-left:8%; margin-top: 1em">Except as
+specified below, the fields here match those specified for
+the old binary format above.</p>
+
+<p style="margin-top: 1em" valign="top"><i>magic</i></p>
+
+<p style="margin-left:20%; margin-top: 1em">The string
+&lsquo;&lsquo;070701&rsquo;&rsquo;.</p>
+
+<p style="margin-top: 1em" valign="top"><i>check</i></p>
+
+<p style="margin-left:20%; margin-top: 1em">This field is
+always set to zero by writers and ignored by readers. See
+the next section for more details.</p>
+
+<p style="margin-left:8%; margin-top: 1em">The pathname is
+followed by NUL bytes so that the total size of the fixed
+header plus pathname is a multiple of four. Likewise, the
+file data is padded to a multiple of four bytes. Note that
+this format supports only 4 gigabyte files (unlike the older
+ASCII format, which supports 8 gigabyte files).</p>
+
+<p style="margin-left:8%; margin-top: 1em">In this format,
+hardlinked files are handled by setting the filesize to zero
+for each entry except the last one that appears in the
+archive.</p>
+
+<p style="margin-left:8%; margin-top: 1em"><b>New CRC
+Format</b> <br>
+The CRC format is identical to the new ASCII format
+described in the previous section except that the magic
+field is set to &lsquo;&lsquo;070702&rsquo;&rsquo; and the
+<i>check</i> field is set to the sum of all bytes in the
+file data. This sum is computed treating all bytes as
+unsigned values and using unsigned arithmetic. Only the
+least-significant 32 bits of the sum are stored.</p>
+
+<p style="margin-left:8%; margin-top: 1em"><b>HP
+variants</b> <br>
+The <b>cpio</b> implementation distributed with HPUX used
+XXXX but stored device numbers differently XXX.</p>
+
+<p style="margin-left:8%; margin-top: 1em"><b>Other
+Extensions and Variants</b> <br>
+Sun Solaris uses additional file types to store extended
+file data, including ACLs and extended attributes, as
+special entries in cpio archives.</p>
+
+<p style="margin-left:8%; margin-top: 1em">XXX Others?
+XXX</p>
+
+<p style="margin-top: 1em" valign="top"><b>BUGS</b></p>
+
+<p style="margin-left:8%;">The
+&lsquo;&lsquo;CRC&rsquo;&rsquo; format is mis-named, as it
+uses a simple checksum and not a cyclic redundancy
+check.</p>
+
+<p style="margin-left:8%; margin-top: 1em">The old binary
+format is limited to 16 bits for user id, group id, device,
+and inode numbers. It is limited to 4 gigabyte file
+sizes.</p>
+
+<p style="margin-left:8%; margin-top: 1em">The old ASCII
+format is limited to 18 bits for the user id, group id,
+device, and inode numbers. It is limited to 8 gigabyte file
+sizes.</p>
+
+<p style="margin-left:8%; margin-top: 1em">The new ASCII
+format is limited to 4 gigabyte file sizes.</p>
+
+<p style="margin-left:8%; margin-top: 1em">None of the cpio
+formats store user or group names, which are essential when
+moving files between systems with dissimilar user or group
+numbering.</p>
+
+<p style="margin-left:8%; margin-top: 1em">Especially when
+writing older cpio variants, it may be necessary to map
+actual device/inode values to synthesized values that fit
+the available fields. With very large filesystems, this may
+be necessary even for the newer formats.</p>
+
+<p style="margin-top: 1em" valign="top"><b>SEE ALSO</b></p>
+
+<p style="margin-left:8%;">cpio(1), tar(5)</p>
+
+
+<p style="margin-top: 1em" valign="top"><b>STANDARDS</b></p>
+
+<p style="margin-left:8%;">The <b>cpio</b> utility is no
+longer a part of POSIX or the Single Unix Standard. It last
+appeared in Version&nbsp;2 of the Single UNIX Specification
+(&lsquo;&lsquo;SUSv2&rsquo;&rsquo;). It has been supplanted
+in subsequent standards by pax(1). The portable ASCII format
+is currently part of the specification for the pax(1)
+utility.</p>
+
+<p style="margin-top: 1em" valign="top"><b>HISTORY</b></p>
+
+<p style="margin-left:8%;">The original cpio utility was
+written by Dick Haight while working in AT&amp;T&rsquo;s
+Unix Support Group. It appeared in 1977 as part of PWB/UNIX
+1.0, the &lsquo;&lsquo;Programmer&rsquo;s Work
+Bench&rsquo;&rsquo; derived from Version&nbsp;6 AT&amp;T
+UNIX that was used internally at AT&amp;T. Both the old
+binary and old character formats were in use by 1980,
+according to the System III source released by SCO under
+their &lsquo;&lsquo;Ancient Unix&rsquo;&rsquo; license. The
+character format was adopted as part of IEEE Std 1003.1-1988
+(&lsquo;&lsquo;POSIX.1&rsquo;&rsquo;). XXX when did
+&quot;newc&quot; appear? Who invented it? When did HP come
+out with their variant? When did Sun introduce ACLs and
+extended attributes? XXX</p>
+
+
+<p style="margin-left:8%; margin-top: 1em">FreeBSD&nbsp;8.0
+October&nbsp;5, 2007 FreeBSD&nbsp;8.0</p>
+<hr>
+</body>
+</html>