rename archive.h to bb_archive.h. no code changes
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 22 Sep 2011 10:45:14 +0000 (12:45 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 22 Sep 2011 10:45:14 +0000 (12:45 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
47 files changed:
archival/ar.c
archival/bbunzip.c
archival/bzip2.c
archival/cpio.c
archival/dpkg.c
archival/dpkg_deb.c
archival/gzip.c
archival/libarchive/data_align.c
archival/libarchive/data_extract_all.c
archival/libarchive/data_extract_to_command.c
archival/libarchive/data_extract_to_stdout.c
archival/libarchive/data_skip.c
archival/libarchive/decompress_bunzip2.c
archival/libarchive/decompress_uncompress.c
archival/libarchive/decompress_unlzma.c
archival/libarchive/decompress_unxz.c
archival/libarchive/decompress_unzip.c
archival/libarchive/filter_accept_all.c
archival/libarchive/filter_accept_list.c
archival/libarchive/filter_accept_list_reassign.c
archival/libarchive/filter_accept_reject_list.c
archival/libarchive/find_list_entry.c
archival/libarchive/get_header_ar.c
archival/libarchive/get_header_cpio.c
archival/libarchive/get_header_tar.c
archival/libarchive/get_header_tar_bz2.c
archival/libarchive/get_header_tar_gz.c
archival/libarchive/get_header_tar_lzma.c
archival/libarchive/header_list.c
archival/libarchive/header_skip.c
archival/libarchive/header_verbose_list.c
archival/libarchive/init_handle.c
archival/libarchive/open_transformer.c
archival/libarchive/seek_by_jump.c
archival/libarchive/seek_by_read.c
archival/libarchive/unpack_ar_archive.c
archival/lzop.c
archival/rpm.c
archival/rpm2cpio.c
archival/tar.c
archival/unzip.c
include/archive.h [deleted file]
include/bb_archive.h [new file with mode: 0644]
libbb/appletlib.c
libbb/read_printf.c
miscutils/bbconfig.c
procps/smemcap.c

index acad20ff2f2df2c1374cb8b7b5be38f2c0740939..88236e878dad92161cb463af40548ce1eb36ac01 100644 (file)
@@ -28,7 +28,7 @@
 //usage:     "\n       -v      Verbose"
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 #include "ar.h"
 
 #if ENABLE_FEATURE_AR_CREATE
index bb1ec0e372c701be9099cb1135de484d34e3a76d..9c1a737804053f1b86f64c99ede1908d9b755f44 100644 (file)
@@ -5,7 +5,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 enum {
        OPT_STDOUT     = 1 << 0,
index 3dde970f11ccbb2d29fd856b2506cc4e396fbb26..0716fa89b0eba8dd58d89e27254437c6b00a4bf2 100644 (file)
@@ -17,7 +17,7 @@
 //usage:     "\n       -f      Force"
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 #define CONFIG_BZIP2_FAST 1
 
index 9674a046b22fbe3be161e4c94517be1f2ef4e2fd..c2a5b8ab9edd17b5aad0cd42b51000cff691a820 100644 (file)
@@ -12,7 +12,7 @@
  *
  */
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 //usage:#define cpio_trivial_usage
 //usage:       "[-dmvu] [-F FILE]" IF_FEATURE_CPIO_O(" [-H newc]")
index 2a6a7b3bf5e2495e3680d9f2d6101e165847ea3b..bf9e9992c136a799444ce832c7161e3be65a378a 100644 (file)
@@ -57,7 +57,7 @@
 
 #include "libbb.h"
 #include <fnmatch.h>
-#include "archive.h"
+#include "bb_archive.h"
 
 /* note: if you vary hash_prime sizes be aware,
  * 1) tweaking these will have a big effect on how much memory this program uses.
index 5d814d7ef2e3547998ae8721b9b488d5a9ddb3c3..a04ec94077f9958cc0086ac8f16f970ffd1933b8 100644 (file)
@@ -19,7 +19,7 @@
 //usage:       "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n"
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 #define DPKG_DEB_OPT_CONTENTS         1
 #define DPKG_DEB_OPT_CONTROL          2
index 3af930b7edb2386477f7bcac5be71df24aa1dfc2..92910738938e0fdae74f992ab3a057006f81b68b 100644 (file)
@@ -55,7 +55,7 @@ aa:      85.1% -- replaced with aa.gz
 //usage:       "-rw-rw-r--    1 andersen andersen   554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 
 /* ===========================================================================
index 2e56fa8ff06077c0bb85c0621d74ced10e30942b..a6b84a440f05e630895e177163850e5cd0cf4a0c 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 void FAST_FUNC data_align(archive_handle_t *archive_handle, unsigned boundary)
 {
index 1b25c8bd65f520531ea46c6fc2eeabababb4dca8..f565e547188e0ecfe20b1feed64ef750ead1236b 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 void FAST_FUNC data_extract_all(archive_handle_t *archive_handle)
 {
index 0e977049d8db676a9ce3d730e113e57e31999122..cc2ff779846b0d6c7e77522749ccea457d65077c 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 enum {
        //TAR_FILETYPE,
index 91f3f353956b54c522928a5cb37719fc8e29a47b..f849f3b4288e583df73fdabd3f54d04f4b98d5db 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 void FAST_FUNC data_extract_to_stdout(archive_handle_t *archive_handle)
 {
index a055424e2a10e1a28da344a35dcea54ded75d140..588167f01cbfcf17105695404dd41b98916c30c7 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 void FAST_FUNC data_skip(archive_handle_t *archive_handle)
 {
index 4e46e6849cee4dc2b966d7b07e9ac4d82711a2b3..cd31447434dba25dd2329e10ede86a3f4bcffa05 100644 (file)
@@ -40,7 +40,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 /* Constants for Huffman coding */
 #define MAX_GROUPS          6
index d1061a2bb74c2d47d9d7f5eb7c8ca3bef6cf6c8d..c6040d04b5c00913e2e767ab373ea5e016b128a8 100644 (file)
@@ -25,7 +25,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 
 /* Default input buffer size */
index a047143411ab7231ae3973f5915b791e8362b2a3..3631b50cc9e1e77453c77afdf2950a38af0775fe 100644 (file)
@@ -9,7 +9,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 #if ENABLE_FEATURE_LZMA_FAST
 #  define speed_inline ALWAYS_INLINE
index e90dfb06f7e177a1fdd871ee7a21c372025a7f60..3e5d4edca09abab7b07ae6ffa58d85b52b68f5d5 100644 (file)
@@ -10,7 +10,7 @@
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 #define XZ_FUNC FAST_FUNC
 #define XZ_EXTERN static
index a29eef8370bd9deafd096b1c3aef6e433a9a9bc5..aa5d22d0abc46368d76acceb5fa15639fff5992d 100644 (file)
@@ -35,7 +35,7 @@
 
 #include <setjmp.h>
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 typedef struct huft_t {
        unsigned char e;        /* number of extra bits or operation */
index e69deb67989763eaf77dc874089b271d41db6896..c33f7d3e368d6cfc9d55ce4e31aa50fa03eb0962 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 /* Accept any non-null name, its not really a filter at all */
 char FAST_FUNC filter_accept_all(archive_handle_t *archive_handle)
index a7640af79f11251076d2fc722be4b743998ddca4..a2d4b23e982df99b153c9e6cec53f367a8a799a7 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 /*
  * Accept names that are in the accept list, ignoring reject list.
index d80f71668a30a4803fcb38be977529253e903bd4..3d19abe448f0ebf0203e9b50d4af3f8fc791c583 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 /* Built and used only if ENABLE_DPKG || ENABLE_DPKG_DEB */
 
index 3e86cca65420f528b7669a90a63239ac62f01400..39c811337ed4acaa7ad8a36f53c576232c7d0d61 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 /*
  * Accept names that are in the accept list and not in the reject list
index 5efd1af2e00f18d8cf1bcff83e580dc46eeaced8..56032c65af78515770820e5f3caa7c5b78e3e147 100644 (file)
@@ -7,7 +7,7 @@
 
 #include <fnmatch.h>
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 /* Find a string in a shell pattern list */
 const llist_t* FAST_FUNC find_list_entry(const llist_t *list, const char *filename)
index df603b11141f3314d5206eab71f5d604a24963d0..23c41249630721143e180ea821b2bcc9dc55b842 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 #include "ar.h"
 
 static unsigned read_num(const char *str, int base)
index 3d99b492ab1da17026de74597a4747f0acf5d2fb..1a0058b63add5ee4ade6ae344f79482f531620b9 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 typedef struct hardlinks_t {
        struct hardlinks_t *next;
index 79caff55a726015c44b31d87d33caa03b5587455..41e3efb50cdbd210a61c7e2408fcce3c98c54d7a 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 typedef uint32_t aliased_uint32_t FIX_ALIASING;
 typedef off_t    aliased_off_t    FIX_ALIASING;
index 60d32069fb2afba3026630eea208ce4885e37e35..e012dec3b334131f4e5a811408e08fef93f77c75 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 char FAST_FUNC get_header_tar_bz2(archive_handle_t *archive_handle)
 {
index 889fed0d9aa9eaa434653adb794a0cf29ad78d64..b9679b0bd7ccad42679cfb07734bc584a4294cac 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 char FAST_FUNC get_header_tar_gz(archive_handle_t *archive_handle)
 {
index da08e0c7256b9620171a6d93828400284813a426..6667007295e50b8fe998657b19153f9d71825d13 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 char FAST_FUNC get_header_tar_lzma(archive_handle_t *archive_handle)
 {
index c4fc75f380beecc2cc9b1b762cde0037eab16d3e..0621aa406a0332bd1aebe0983056583c1605a97c 100644 (file)
@@ -3,7 +3,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 void FAST_FUNC header_list(const file_header_t *file_header)
 {
index 2bfc5253ca798b034c72a80dacb267526329f557..f5987bfe275432379cb4d755d20075f1fce4d28a 100644 (file)
@@ -3,7 +3,7 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 void FAST_FUNC header_skip(const file_header_t *file_header UNUSED_PARAM)
 {
index bc4e4154b111af3f072cf00097e333b191e6ee2a..87dd82136d7335382b6400c7fc3682d9c11c4224 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 void FAST_FUNC header_verbose_list(const file_header_t *file_header)
 {
index 6644ea13b4316c9c346f93824a359d185b6653c4..cbae06ac332b8976f365452b2930afd83bf5249d 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 archive_handle_t* FAST_FUNC init_handle(void)
 {
index 26ae565f5f1e1260c94122ed1db003e2cc1577f9..aa8c1021c0170fc0e0eaabaa34a91907f48e1ee8 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 /* transformer(), more than meets the eye */
 /*
index 7c2c52ae1c272a315b26964488c693eb4ea9ea40..4fcd99ac80e584d94f62d95208ccc483f3e5c651 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 void FAST_FUNC seek_by_jump(int fd, off_t amount)
 {
index ad931a8de59ee3fa5f306751e3f077640d425755..c0fde966085aa6801b9ca144cca1059534e3974c 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 /*  If we are reading through a pipe, or from stdin then we can't lseek,
  *  we must read and discard the data to skip over it.
index 18dbfd54dbc451756199f681f0c060e65864708d..214d17e23ae17ccfa374c4f529e5167a34e1917d 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 #include "ar.h"
 
 void FAST_FUNC unpack_ar_archive(archive_handle_t *ar_archive)
index 1326bd790f324935b30b975bb6ebfbbfb28c4d80..7e30091d95de9de8a13dd14c1384672d0c697e1b 100644 (file)
@@ -51,7 +51,7 @@
 //usage:     "\n       -F      Don't store or verify checksum"
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 #include "liblzo_interface.h"
 
 /* lzo-2.03/src/lzo_ptr.h */
index 8174f48699f90bcf6dabc54aa4f0268bd427aa7e..089b68983ae7a6e6283c80367bc0012f756385b0 100644 (file)
@@ -20,7 +20,7 @@
 //usage:     "\n       -c      List config files"
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 #include "rpm.h"
 
 #define RPM_CHAR_TYPE           1
index ff4a0d1b065b1e36cc542dc255e8ec26b14e44c0..28b43a1817db33ea437cf3a0f1a865a22a5e90a8 100644 (file)
@@ -13,7 +13,7 @@
 //usage:       "Output a cpio archive of the rpm file"
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 #include "rpm.h"
 
 enum { rpm_fd = STDIN_FILENO };
index 375e838d279a54a4a3ae7fbd748c058cff7eb313..766b79b2bbb4f2eb93fc727fe7d6a95404e35245 100644 (file)
@@ -44,7 +44,7 @@
 
 #include <fnmatch.h>
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 /* FIXME: Stop using this non-standard feature */
 #ifndef FNM_LEADING_DIR
 # define FNM_LEADING_DIR 0
index 4cc98cdb2794c04a2acf9c8afc86fb422a539d97..3a11f78a553430bdaa59afcd12577452ebfa91f2 100644 (file)
@@ -32,7 +32,7 @@
 //usage:     "\n       -d DIR  Extract files into DIR"
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 enum {
 #if BB_BIG_ENDIAN
diff --git a/include/archive.h b/include/archive.h
deleted file mode 100644 (file)
index 9e176d3..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-/* vi: set sw=4 ts=4: */
-#ifndef UNARCHIVE_H
-#define UNARCHIVE_H 1
-
-PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
-
-enum {
-#if BB_BIG_ENDIAN
-       COMPRESS_MAGIC = 0x1f9d,
-       GZIP_MAGIC  = 0x1f8b,
-       BZIP2_MAGIC = 256 * 'B' + 'Z',
-       /* .xz signature: 0xfd, '7', 'z', 'X', 'Z', 0x00 */
-       /* More info at: http://tukaani.org/xz/xz-file-format.txt */
-       XZ_MAGIC1   = 256 * 0xfd + '7',
-       XZ_MAGIC2   = 256 * (256 * (256 * 'z' + 'X') + 'Z') + 0,
-       /* Different form: 32 bits, then 16 bits: */
-       XZ_MAGIC1a  = 256 * (256 * (256 * 0xfd + '7') + 'z') + 'X',
-       XZ_MAGIC2a  = 256 * 'Z' + 0,
-#else
-       COMPRESS_MAGIC = 0x9d1f,
-       GZIP_MAGIC  = 0x8b1f,
-       BZIP2_MAGIC = 'B' + 'Z' * 256,
-       XZ_MAGIC1   = 0xfd + '7' * 256,
-       XZ_MAGIC2   = 'z' + ('X' + ('Z' + 0 * 256) * 256) * 256,
-       XZ_MAGIC1a  = 0xfd + ('7' + ('z' + 'X' * 256) * 256) * 256,
-       XZ_MAGIC2a  = 'Z' + 0 * 256,
-#endif
-};
-
-typedef struct file_header_t {
-       char *name;
-       char *link_target;
-#if ENABLE_FEATURE_TAR_UNAME_GNAME
-       char *tar__uname;
-       char *tar__gname;
-#endif
-       off_t size;
-       uid_t uid;
-       gid_t gid;
-       mode_t mode;
-       time_t mtime;
-       dev_t device;
-} file_header_t;
-
-struct hardlinks_t;
-
-typedef struct archive_handle_t {
-       /* Flags. 1st since it is most used member */
-       unsigned ah_flags;
-
-       /* The raw stream as read from disk or stdin */
-       int src_fd;
-
-       /* Define if the header and data component should be processed */
-       char FAST_FUNC (*filter)(struct archive_handle_t *);
-       /* List of files that have been accepted */
-       llist_t *accept;
-       /* List of files that have been rejected */
-       llist_t *reject;
-       /* List of files that have successfully been worked on */
-       llist_t *passed;
-
-       /* Currently processed file's header */
-       file_header_t *file_header;
-
-       /* Process the header component, e.g. tar -t */
-       void FAST_FUNC (*action_header)(const file_header_t *);
-
-       /* Process the data component, e.g. extract to filesystem */
-       void FAST_FUNC (*action_data)(struct archive_handle_t *);
-
-       /* Function that skips data */
-       void FAST_FUNC (*seek)(int fd, off_t amount);
-
-       /* Count processed bytes */
-       off_t offset;
-
-       /* Archiver specific. Can make it a union if it ever gets big */
-#if ENABLE_TAR || ENABLE_DPKG || ENABLE_DPKG_DEB
-       smallint tar__end;
-# if ENABLE_FEATURE_TAR_GNU_EXTENSIONS
-       char* tar__longname;
-       char* tar__linkname;
-# endif
-#if ENABLE_FEATURE_TAR_TO_COMMAND
-       char* tar__to_command;
-       const char* tar__to_command_shell;
-#endif
-# if ENABLE_FEATURE_TAR_SELINUX
-       char* tar__global_sctx;
-       char* tar__next_file_sctx;
-# endif
-#endif
-#if ENABLE_CPIO || ENABLE_RPM2CPIO || ENABLE_RPM
-       uoff_t cpio__blocks;
-       struct hardlinks_t *cpio__hardlinks_to_create;
-       struct hardlinks_t *cpio__created_hardlinks;
-#endif
-#if ENABLE_DPKG || ENABLE_DPKG_DEB
-       /* Temporary storage */
-       char *dpkg__buffer;
-       /* How to process any sub archive, e.g. get_header_tar_gz */
-       char FAST_FUNC (*dpkg__action_data_subarchive)(struct archive_handle_t *);
-       /* Contains the handle to a sub archive */
-       struct archive_handle_t *dpkg__sub_archive;
-#endif
-#if ENABLE_FEATURE_AR_CREATE
-       const char *ar__name;
-       struct archive_handle_t *ar__out;
-#endif
-} archive_handle_t;
-/* bits in ah_flags */
-#define ARCHIVE_RESTORE_DATE        (1 << 0)
-#define ARCHIVE_CREATE_LEADING_DIRS (1 << 1)
-#define ARCHIVE_UNLINK_OLD          (1 << 2)
-#define ARCHIVE_EXTRACT_QUIET       (1 << 3)
-#define ARCHIVE_EXTRACT_NEWER       (1 << 4)
-#define ARCHIVE_DONT_RESTORE_OWNER  (1 << 5)
-#define ARCHIVE_DONT_RESTORE_PERM   (1 << 6)
-#define ARCHIVE_NUMERIC_OWNER       (1 << 7)
-#define ARCHIVE_O_TRUNC             (1 << 8)
-
-
-/* POSIX tar Header Block, from POSIX 1003.1-1990  */
-#define TAR_BLOCK_SIZE 512
-#define NAME_SIZE      100
-#define NAME_SIZE_STR "100"
-typedef struct tar_header_t {     /* byte offset */
-       char name[NAME_SIZE];     /*   0-99 */
-       char mode[8];             /* 100-107 */
-       char uid[8];              /* 108-115 */
-       char gid[8];              /* 116-123 */
-       char size[12];            /* 124-135 */
-       char mtime[12];           /* 136-147 */
-       char chksum[8];           /* 148-155 */
-       char typeflag;            /* 156-156 */
-       char linkname[NAME_SIZE]; /* 157-256 */
-       /* POSIX:   "ustar" NUL "00" */
-       /* GNU tar: "ustar  " NUL */
-       /* Normally it's defined as magic[6] followed by
-        * version[2], but we put them together to save code.
-        */
-       char magic[8];            /* 257-264 */
-       char uname[32];           /* 265-296 */
-       char gname[32];           /* 297-328 */
-       char devmajor[8];         /* 329-336 */
-       char devminor[8];         /* 337-344 */
-       char prefix[155];         /* 345-499 */
-       char padding[12];         /* 500-512 (pad to exactly TAR_BLOCK_SIZE) */
-} tar_header_t;
-struct BUG_tar_header {
-       char c[sizeof(tar_header_t) == TAR_BLOCK_SIZE ? 1 : -1];
-};
-
-
-
-/* Info struct unpackers can fill out to inform users of thing like
- * timestamps of unpacked files */
-typedef struct unpack_info_t {
-       time_t mtime;
-} unpack_info_t;
-
-archive_handle_t *init_handle(void) FAST_FUNC;
-
-char filter_accept_all(archive_handle_t *archive_handle) FAST_FUNC;
-char filter_accept_list(archive_handle_t *archive_handle) FAST_FUNC;
-char filter_accept_list_reassign(archive_handle_t *archive_handle) FAST_FUNC;
-char filter_accept_reject_list(archive_handle_t *archive_handle) FAST_FUNC;
-
-void unpack_ar_archive(archive_handle_t *ar_archive) FAST_FUNC;
-
-void data_skip(archive_handle_t *archive_handle) FAST_FUNC;
-void data_extract_all(archive_handle_t *archive_handle) FAST_FUNC;
-void data_extract_to_stdout(archive_handle_t *archive_handle) FAST_FUNC;
-void data_extract_to_command(archive_handle_t *archive_handle) FAST_FUNC;
-
-void header_skip(const file_header_t *file_header) FAST_FUNC;
-void header_list(const file_header_t *file_header) FAST_FUNC;
-void header_verbose_list(const file_header_t *file_header) FAST_FUNC;
-
-char get_header_ar(archive_handle_t *archive_handle) FAST_FUNC;
-char get_header_cpio(archive_handle_t *archive_handle) FAST_FUNC;
-char get_header_tar(archive_handle_t *archive_handle) FAST_FUNC;
-char get_header_tar_gz(archive_handle_t *archive_handle) FAST_FUNC;
-char get_header_tar_bz2(archive_handle_t *archive_handle) FAST_FUNC;
-char get_header_tar_lzma(archive_handle_t *archive_handle) FAST_FUNC;
-
-void seek_by_jump(int fd, off_t amount) FAST_FUNC;
-void seek_by_read(int fd, off_t amount) FAST_FUNC;
-
-const char *strip_unsafe_prefix(const char *str) FAST_FUNC;
-
-void data_align(archive_handle_t *archive_handle, unsigned boundary) FAST_FUNC;
-const llist_t *find_list_entry(const llist_t *list, const char *filename) FAST_FUNC;
-const llist_t *find_list_entry2(const llist_t *list, const char *filename) FAST_FUNC;
-
-/* A bit of bunzip2 internals are exposed for compressed help support: */
-typedef struct bunzip_data bunzip_data;
-int start_bunzip(bunzip_data **bdp, int in_fd, const void *inbuf, int len) FAST_FUNC;
-/* NB: read_bunzip returns < 0 on error, or the number of *unfilled* bytes
- * in outbuf. IOW: on EOF returns len ("all bytes are not filled"), not 0: */
-int read_bunzip(bunzip_data *bd, char *outbuf, int len) FAST_FUNC;
-void dealloc_bunzip(bunzip_data *bd) FAST_FUNC;
-
-typedef struct inflate_unzip_result {
-       off_t bytes_out;
-       uint32_t crc;
-} inflate_unzip_result;
-
-IF_DESKTOP(long long) int inflate_unzip(inflate_unzip_result *res, off_t compr_size, int src_fd, int dst_fd) FAST_FUNC;
-/* xz unpacker takes .xz stream from offset 6 */
-IF_DESKTOP(long long) int unpack_xz_stream(int src_fd, int dst_fd) FAST_FUNC;
-/* lzma unpacker takes .lzma stream from offset 0 */
-IF_DESKTOP(long long) int unpack_lzma_stream(int src_fd, int dst_fd) FAST_FUNC;
-/* the rest wants 2 first bytes already skipped by the caller */
-IF_DESKTOP(long long) int unpack_bz2_stream(int src_fd, int dst_fd) FAST_FUNC;
-IF_DESKTOP(long long) int unpack_gz_stream(int src_fd, int dst_fd) FAST_FUNC;
-IF_DESKTOP(long long) int unpack_gz_stream_with_info(int src_fd, int dst_fd, unpack_info_t *info) FAST_FUNC;
-IF_DESKTOP(long long) int unpack_Z_stream(int src_fd, int dst_fd) FAST_FUNC;
-/* wrapper which checks first two bytes to be "BZ" */
-IF_DESKTOP(long long) int unpack_bz2_stream_prime(int src_fd, int dst_fd) FAST_FUNC;
-
-char* append_ext(char *filename, const char *expected_ext) FAST_FUNC;
-int bbunpack(char **argv,
-           IF_DESKTOP(long long) int FAST_FUNC (*unpacker)(unpack_info_t *info),
-           char* FAST_FUNC (*make_new_name)(char *filename, const char *expected_ext),
-           const char *expected_ext
-) FAST_FUNC;
-
-#if BB_MMU
-void open_transformer(int fd,
-       IF_DESKTOP(long long) int FAST_FUNC (*transformer)(int src_fd, int dst_fd)) FAST_FUNC;
-#define open_transformer(fd, transformer, transform_prog) open_transformer(fd, transformer)
-#else
-void open_transformer(int src_fd, const char *transform_prog) FAST_FUNC;
-#define open_transformer(fd, transformer, transform_prog) open_transformer(fd, transform_prog)
-#endif
-
-POP_SAVED_FUNCTION_VISIBILITY
-
-#endif
diff --git a/include/bb_archive.h b/include/bb_archive.h
new file mode 100644 (file)
index 0000000..9e176d3
--- /dev/null
@@ -0,0 +1,241 @@
+/* vi: set sw=4 ts=4: */
+#ifndef UNARCHIVE_H
+#define UNARCHIVE_H 1
+
+PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
+
+enum {
+#if BB_BIG_ENDIAN
+       COMPRESS_MAGIC = 0x1f9d,
+       GZIP_MAGIC  = 0x1f8b,
+       BZIP2_MAGIC = 256 * 'B' + 'Z',
+       /* .xz signature: 0xfd, '7', 'z', 'X', 'Z', 0x00 */
+       /* More info at: http://tukaani.org/xz/xz-file-format.txt */
+       XZ_MAGIC1   = 256 * 0xfd + '7',
+       XZ_MAGIC2   = 256 * (256 * (256 * 'z' + 'X') + 'Z') + 0,
+       /* Different form: 32 bits, then 16 bits: */
+       XZ_MAGIC1a  = 256 * (256 * (256 * 0xfd + '7') + 'z') + 'X',
+       XZ_MAGIC2a  = 256 * 'Z' + 0,
+#else
+       COMPRESS_MAGIC = 0x9d1f,
+       GZIP_MAGIC  = 0x8b1f,
+       BZIP2_MAGIC = 'B' + 'Z' * 256,
+       XZ_MAGIC1   = 0xfd + '7' * 256,
+       XZ_MAGIC2   = 'z' + ('X' + ('Z' + 0 * 256) * 256) * 256,
+       XZ_MAGIC1a  = 0xfd + ('7' + ('z' + 'X' * 256) * 256) * 256,
+       XZ_MAGIC2a  = 'Z' + 0 * 256,
+#endif
+};
+
+typedef struct file_header_t {
+       char *name;
+       char *link_target;
+#if ENABLE_FEATURE_TAR_UNAME_GNAME
+       char *tar__uname;
+       char *tar__gname;
+#endif
+       off_t size;
+       uid_t uid;
+       gid_t gid;
+       mode_t mode;
+       time_t mtime;
+       dev_t device;
+} file_header_t;
+
+struct hardlinks_t;
+
+typedef struct archive_handle_t {
+       /* Flags. 1st since it is most used member */
+       unsigned ah_flags;
+
+       /* The raw stream as read from disk or stdin */
+       int src_fd;
+
+       /* Define if the header and data component should be processed */
+       char FAST_FUNC (*filter)(struct archive_handle_t *);
+       /* List of files that have been accepted */
+       llist_t *accept;
+       /* List of files that have been rejected */
+       llist_t *reject;
+       /* List of files that have successfully been worked on */
+       llist_t *passed;
+
+       /* Currently processed file's header */
+       file_header_t *file_header;
+
+       /* Process the header component, e.g. tar -t */
+       void FAST_FUNC (*action_header)(const file_header_t *);
+
+       /* Process the data component, e.g. extract to filesystem */
+       void FAST_FUNC (*action_data)(struct archive_handle_t *);
+
+       /* Function that skips data */
+       void FAST_FUNC (*seek)(int fd, off_t amount);
+
+       /* Count processed bytes */
+       off_t offset;
+
+       /* Archiver specific. Can make it a union if it ever gets big */
+#if ENABLE_TAR || ENABLE_DPKG || ENABLE_DPKG_DEB
+       smallint tar__end;
+# if ENABLE_FEATURE_TAR_GNU_EXTENSIONS
+       char* tar__longname;
+       char* tar__linkname;
+# endif
+#if ENABLE_FEATURE_TAR_TO_COMMAND
+       char* tar__to_command;
+       const char* tar__to_command_shell;
+#endif
+# if ENABLE_FEATURE_TAR_SELINUX
+       char* tar__global_sctx;
+       char* tar__next_file_sctx;
+# endif
+#endif
+#if ENABLE_CPIO || ENABLE_RPM2CPIO || ENABLE_RPM
+       uoff_t cpio__blocks;
+       struct hardlinks_t *cpio__hardlinks_to_create;
+       struct hardlinks_t *cpio__created_hardlinks;
+#endif
+#if ENABLE_DPKG || ENABLE_DPKG_DEB
+       /* Temporary storage */
+       char *dpkg__buffer;
+       /* How to process any sub archive, e.g. get_header_tar_gz */
+       char FAST_FUNC (*dpkg__action_data_subarchive)(struct archive_handle_t *);
+       /* Contains the handle to a sub archive */
+       struct archive_handle_t *dpkg__sub_archive;
+#endif
+#if ENABLE_FEATURE_AR_CREATE
+       const char *ar__name;
+       struct archive_handle_t *ar__out;
+#endif
+} archive_handle_t;
+/* bits in ah_flags */
+#define ARCHIVE_RESTORE_DATE        (1 << 0)
+#define ARCHIVE_CREATE_LEADING_DIRS (1 << 1)
+#define ARCHIVE_UNLINK_OLD          (1 << 2)
+#define ARCHIVE_EXTRACT_QUIET       (1 << 3)
+#define ARCHIVE_EXTRACT_NEWER       (1 << 4)
+#define ARCHIVE_DONT_RESTORE_OWNER  (1 << 5)
+#define ARCHIVE_DONT_RESTORE_PERM   (1 << 6)
+#define ARCHIVE_NUMERIC_OWNER       (1 << 7)
+#define ARCHIVE_O_TRUNC             (1 << 8)
+
+
+/* POSIX tar Header Block, from POSIX 1003.1-1990  */
+#define TAR_BLOCK_SIZE 512
+#define NAME_SIZE      100
+#define NAME_SIZE_STR "100"
+typedef struct tar_header_t {     /* byte offset */
+       char name[NAME_SIZE];     /*   0-99 */
+       char mode[8];             /* 100-107 */
+       char uid[8];              /* 108-115 */
+       char gid[8];              /* 116-123 */
+       char size[12];            /* 124-135 */
+       char mtime[12];           /* 136-147 */
+       char chksum[8];           /* 148-155 */
+       char typeflag;            /* 156-156 */
+       char linkname[NAME_SIZE]; /* 157-256 */
+       /* POSIX:   "ustar" NUL "00" */
+       /* GNU tar: "ustar  " NUL */
+       /* Normally it's defined as magic[6] followed by
+        * version[2], but we put them together to save code.
+        */
+       char magic[8];            /* 257-264 */
+       char uname[32];           /* 265-296 */
+       char gname[32];           /* 297-328 */
+       char devmajor[8];         /* 329-336 */
+       char devminor[8];         /* 337-344 */
+       char prefix[155];         /* 345-499 */
+       char padding[12];         /* 500-512 (pad to exactly TAR_BLOCK_SIZE) */
+} tar_header_t;
+struct BUG_tar_header {
+       char c[sizeof(tar_header_t) == TAR_BLOCK_SIZE ? 1 : -1];
+};
+
+
+
+/* Info struct unpackers can fill out to inform users of thing like
+ * timestamps of unpacked files */
+typedef struct unpack_info_t {
+       time_t mtime;
+} unpack_info_t;
+
+archive_handle_t *init_handle(void) FAST_FUNC;
+
+char filter_accept_all(archive_handle_t *archive_handle) FAST_FUNC;
+char filter_accept_list(archive_handle_t *archive_handle) FAST_FUNC;
+char filter_accept_list_reassign(archive_handle_t *archive_handle) FAST_FUNC;
+char filter_accept_reject_list(archive_handle_t *archive_handle) FAST_FUNC;
+
+void unpack_ar_archive(archive_handle_t *ar_archive) FAST_FUNC;
+
+void data_skip(archive_handle_t *archive_handle) FAST_FUNC;
+void data_extract_all(archive_handle_t *archive_handle) FAST_FUNC;
+void data_extract_to_stdout(archive_handle_t *archive_handle) FAST_FUNC;
+void data_extract_to_command(archive_handle_t *archive_handle) FAST_FUNC;
+
+void header_skip(const file_header_t *file_header) FAST_FUNC;
+void header_list(const file_header_t *file_header) FAST_FUNC;
+void header_verbose_list(const file_header_t *file_header) FAST_FUNC;
+
+char get_header_ar(archive_handle_t *archive_handle) FAST_FUNC;
+char get_header_cpio(archive_handle_t *archive_handle) FAST_FUNC;
+char get_header_tar(archive_handle_t *archive_handle) FAST_FUNC;
+char get_header_tar_gz(archive_handle_t *archive_handle) FAST_FUNC;
+char get_header_tar_bz2(archive_handle_t *archive_handle) FAST_FUNC;
+char get_header_tar_lzma(archive_handle_t *archive_handle) FAST_FUNC;
+
+void seek_by_jump(int fd, off_t amount) FAST_FUNC;
+void seek_by_read(int fd, off_t amount) FAST_FUNC;
+
+const char *strip_unsafe_prefix(const char *str) FAST_FUNC;
+
+void data_align(archive_handle_t *archive_handle, unsigned boundary) FAST_FUNC;
+const llist_t *find_list_entry(const llist_t *list, const char *filename) FAST_FUNC;
+const llist_t *find_list_entry2(const llist_t *list, const char *filename) FAST_FUNC;
+
+/* A bit of bunzip2 internals are exposed for compressed help support: */
+typedef struct bunzip_data bunzip_data;
+int start_bunzip(bunzip_data **bdp, int in_fd, const void *inbuf, int len) FAST_FUNC;
+/* NB: read_bunzip returns < 0 on error, or the number of *unfilled* bytes
+ * in outbuf. IOW: on EOF returns len ("all bytes are not filled"), not 0: */
+int read_bunzip(bunzip_data *bd, char *outbuf, int len) FAST_FUNC;
+void dealloc_bunzip(bunzip_data *bd) FAST_FUNC;
+
+typedef struct inflate_unzip_result {
+       off_t bytes_out;
+       uint32_t crc;
+} inflate_unzip_result;
+
+IF_DESKTOP(long long) int inflate_unzip(inflate_unzip_result *res, off_t compr_size, int src_fd, int dst_fd) FAST_FUNC;
+/* xz unpacker takes .xz stream from offset 6 */
+IF_DESKTOP(long long) int unpack_xz_stream(int src_fd, int dst_fd) FAST_FUNC;
+/* lzma unpacker takes .lzma stream from offset 0 */
+IF_DESKTOP(long long) int unpack_lzma_stream(int src_fd, int dst_fd) FAST_FUNC;
+/* the rest wants 2 first bytes already skipped by the caller */
+IF_DESKTOP(long long) int unpack_bz2_stream(int src_fd, int dst_fd) FAST_FUNC;
+IF_DESKTOP(long long) int unpack_gz_stream(int src_fd, int dst_fd) FAST_FUNC;
+IF_DESKTOP(long long) int unpack_gz_stream_with_info(int src_fd, int dst_fd, unpack_info_t *info) FAST_FUNC;
+IF_DESKTOP(long long) int unpack_Z_stream(int src_fd, int dst_fd) FAST_FUNC;
+/* wrapper which checks first two bytes to be "BZ" */
+IF_DESKTOP(long long) int unpack_bz2_stream_prime(int src_fd, int dst_fd) FAST_FUNC;
+
+char* append_ext(char *filename, const char *expected_ext) FAST_FUNC;
+int bbunpack(char **argv,
+           IF_DESKTOP(long long) int FAST_FUNC (*unpacker)(unpack_info_t *info),
+           char* FAST_FUNC (*make_new_name)(char *filename, const char *expected_ext),
+           const char *expected_ext
+) FAST_FUNC;
+
+#if BB_MMU
+void open_transformer(int fd,
+       IF_DESKTOP(long long) int FAST_FUNC (*transformer)(int src_fd, int dst_fd)) FAST_FUNC;
+#define open_transformer(fd, transformer, transform_prog) open_transformer(fd, transformer)
+#else
+void open_transformer(int src_fd, const char *transform_prog) FAST_FUNC;
+#define open_transformer(fd, transformer, transform_prog) open_transformer(fd, transform_prog)
+#endif
+
+POP_SAVED_FUNCTION_VISIBILITY
+
+#endif
index 8157b4f4201808f186aac7d4b8858943ef557953..efde3b69d99b2aa5b473e4a05f2abd56e7eccf29 100644 (file)
@@ -62,7 +62,7 @@ static const char usage_messages[] ALIGN1 = UNPACKED_USAGE;
 #if ENABLE_FEATURE_COMPRESS_USAGE
 
 static const char packed_usage[] ALIGN1 = { PACKED_USAGE };
-# include "archive.h"
+# include "bb_archive.h"
 static const char *unpack_usage_messages(void)
 {
        char *outbuf = NULL;
index 192f83d6e4e338d4c2572f25958a409aa1b11325..0bbf7802ab955d7c40661dba098ed992c1210fe9 100644 (file)
@@ -15,7 +15,7 @@
 )
 
 #if ZIPPED
-# include "archive.h"
+# include "bb_archive.h"
 #endif
 
 
index e8be813528bd2ff00ecb811ef7b3d3ef5c9ed203..e5f4eb379f0d2d9410e792dc4bb968ec078f77fc 100644 (file)
@@ -10,7 +10,7 @@
 #include "libbb.h"
 #include "bbconfigopts.h"
 #if ENABLE_FEATURE_COMPRESS_BBCONFIG
-# include "archive.h"
+# include "bb_archive.h"
 # include "bbconfigopts_bz2.h"
 #endif
 
index e108d88ad02c54b7e4a62e01c89179528c439b48..9d1126a49a427c9b3cad8dbd5580de8491321c48 100644 (file)
@@ -20,7 +20,7 @@
 //config:        a memory usage statistic tool.
 
 #include "libbb.h"
-#include "archive.h"
+#include "bb_archive.h"
 
 struct fileblock {
        struct fileblock *next;