138 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| README for libarchive bundle.
 | |
| 
 | |
| Questions?  Issues?
 | |
|    * http://libarchive.googlecode.com/ is the home for ongoing
 | |
|      libarchive development, including issue tracker, additional
 | |
|      documentation, and links to the libarchive mailing lists.
 | |
| 
 | |
| This distribution bundle includes the following components:
 | |
|    * libarchive: a library for reading and writing streaming archives
 | |
|    * tar: the 'bsdtar' program is a full-featured 'tar'
 | |
|           replacement built on libarchive
 | |
|    * cpio: the 'bsdcpio' program is a different interface to
 | |
|           essentially the same functionality
 | |
|    * examples: Some small example programs that you may find useful.
 | |
|    * examples/minitar: a compact sample demonstrating use of libarchive.
 | |
|           I use this for testing link pollution; it should produce a very
 | |
|           small executable file on most systems.
 | |
|    * contrib:  Various items sent to me by third parties;
 | |
|           please contact the authors with any questions.
 | |
| 
 | |
| The top-level directory contains the following information files:
 | |
|    * NEWS - highlights of recent changes
 | |
|    * COPYING - what you can do with this
 | |
|    * INSTALL - installation instructions
 | |
|    * README - this file
 | |
|    * configure - configuration script, see INSTALL for details.
 | |
|    * CMakeLists.txt - input for "cmake" build tool, see INSTALL
 | |
| 
 | |
| The following files in the top-level directory are used by the
 | |
| 'configure' script:
 | |
|    * Makefile.am, aclocal.m4, configure.ac
 | |
|        - used to build this distribution, only needed by maintainers
 | |
|    * Makefile.in, config.h.in
 | |
|     - templates used by configure script
 | |
| 
 | |
| Guide to Documentation installed by this system:
 | |
|  * bsdtar.1 explains the use of the bsdtar program
 | |
|  * bsdcpio.1 explains the use of the bsdcpio program
 | |
|  * libarchive.3 gives an overview of the library as a whole
 | |
|  * archive_read.3, archive_write.3, archive_write_disk.3, and
 | |
|    archive_read_disk.3 provide detailed calling sequences for the read
 | |
|    and write APIs
 | |
|  * archive_entry.3 details the "struct archive_entry" utility class
 | |
|  * archive_internals.3 provides some insight into libarchive's
 | |
|    internal structure and operation.
 | |
|  * libarchive-formats.5 documents the file formats supported by the library
 | |
|  * cpio.5, mtree.5, and tar.5 provide detailed information about these
 | |
|    popular archive formats, including hard-to-find details about
 | |
|    modern cpio and tar variants.
 | |
| The manual pages above are provided in the 'doc' directory in
 | |
| a number of different formats.
 | |
| 
 | |
| You should also read the copious comments in "archive.h" and the
 | |
| source code for the sample programs for more details.  Please let me
 | |
| know about any errors or omissions you find.
 | |
| 
 | |
| Currently, the library automatically detects and reads the following:
 | |
|   * gzip compression
 | |
|   * bzip2 compression
 | |
|   * compress/LZW compression
 | |
|   * lzma and xz compression
 | |
|   * GNU tar format (including GNU long filenames, long link names, and
 | |
|     sparse files)
 | |
|   * Solaris 9 extended tar format (including ACLs)
 | |
|   * Old V7 tar archives
 | |
|   * POSIX ustar
 | |
|   * POSIX pax interchange format
 | |
|   * POSIX octet-oriented cpio
 | |
|   * SVR4 ASCII cpio
 | |
|   * POSIX octet-oriented cpio
 | |
|   * Binary cpio (big-endian or little-endian)
 | |
|   * ISO9660 CD-ROM images (with optional Rockridge or Joliet extensions)
 | |
|   * ZIP archives (with uncompressed or "deflate" compressed entries)
 | |
|   * GNU and BSD 'ar' archives
 | |
|   * 'mtree' format
 | |
| 
 | |
| The library can write:
 | |
|   * gzip compression
 | |
|   * bzip2 compression
 | |
|   * compress/LZW compression
 | |
|   * lzma and xz compression
 | |
|   * POSIX ustar
 | |
|   * POSIX pax interchange format
 | |
|   * "restricted" pax format, which will create ustar archives except for
 | |
|     entries that require pax extensions (for long filenames, ACLs, etc).
 | |
|   * POSIX octet-oriented cpio
 | |
|   * SVR4 "newc" cpio
 | |
|   * shar archives
 | |
|   * ZIP archives (with uncompressed or "deflate" compressed entries)
 | |
|   * GNU and BSD 'ar' archives
 | |
|   * 'mtree' format
 | |
| 
 | |
| Notes about the library architecture:
 | |
| 
 | |
|  * This is a heavily stream-oriented system.  There is no direct
 | |
|    support for in-place modification or random access.
 | |
| 
 | |
|  * The library is designed to be extended with new compression and
 | |
|    archive formats.  The only requirement is that the format be
 | |
|    readable or writable as a stream and that each archive entry be
 | |
|    independent.  There are articles on the libarchive Wiki explaining
 | |
|    how to extend libarchive.
 | |
| 
 | |
|  * On read, compression and format are always detected automatically.
 | |
| 
 | |
|  * I've attempted to minimize static link pollution.  If you don't
 | |
|    explicitly invoke a particular feature (such as support for a
 | |
|    particular compression or format), it won't get pulled in.
 | |
|    In particular, if you don't explicitly enable a particular
 | |
|    compression or decompression support, you won't need to link
 | |
|    against the corresponding compression or decompression libraries.
 | |
|    This also reduces the size of statically-linked binaries in
 | |
|    environments where that matters.
 | |
| 
 | |
|  * On read, the library accepts whatever blocks you hand it.
 | |
|    Your read callback is free to pass the library a byte at a time
 | |
|    or mmap the entire archive and give it to the library at once.
 | |
|    On write, the library always produces correctly-blocked output.
 | |
| 
 | |
|  * The object-style approach allows you to have multiple archive streams
 | |
|    open at once.  bsdtar uses this in its "@archive" extension.
 | |
| 
 | |
|  * The archive itself is read/written using callback functions.
 | |
|    You can read an archive directly from an in-memory buffer or
 | |
|    write it to a socket, if you wish.  There are some utility
 | |
|    functions to provide easy-to-use "open file," etc, capabilities.
 | |
| 
 | |
|  * The read/write APIs are designed to allow individual entries
 | |
|    to be read or written to any data source:  You can create
 | |
|    a block of data in memory and add it to a tar archive without
 | |
|    first writing a temporary file.  You can also read an entry from
 | |
|    an archive and write the data directly to a socket.  If you want
 | |
|    to read/write entries to disk, there are convenience functions to
 | |
|    make this especially easy.
 | |
| 
 | |
|  * Note: "pax interchange format" is really an extended tar format,
 | |
|    despite what the name says.
 |