diff options
Diffstat (limited to 'Utilities/cmlibarchive/libarchive/archive_private.h')
-rw-r--r-- | Utilities/cmlibarchive/libarchive/archive_private.h | 179 |
1 files changed, 98 insertions, 81 deletions
diff --git a/Utilities/cmlibarchive/libarchive/archive_private.h b/Utilities/cmlibarchive/libarchive/archive_private.h index 7a023e0..9941e96 100644 --- a/Utilities/cmlibarchive/libarchive/archive_private.h +++ b/Utilities/cmlibarchive/libarchive/archive_private.h @@ -22,7 +22,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/lib/libarchive/archive_private.h,v 1.32 2008/12/06 06:23:37 kientzle Exp $ + * $FreeBSD: head/lib/libarchive/archive_private.h 201098 2009-12-28 02:58:14Z kientzle $ */ #ifndef __LIBARCHIVE_BUILD @@ -30,104 +30,121 @@ #endif #ifndef ARCHIVE_PRIVATE_H_INCLUDED -#define ARCHIVE_PRIVATE_H_INCLUDED +#define ARCHIVE_PRIVATE_H_INCLUDED -#include "archive.h" -#include "archive_string.h" - -#if defined(__BORLANDC__) -# pragma warn -8004 /* Assigned value never used. */ -# pragma warn -8008 /* Condition is always true/false. */ -# pragma warn -8012 /* Compare signed/unsigned. */ -# pragma warn -8053 /* Called function is obsolete. */ -# pragma warn -8057 /* Unused parameter. */ -# pragma warn -8060 /* Possibly incorrect assignment. */ -# pragma warn -8065 /* Call to function without prototype. */ -# pragma warn -8066 /* Unreachable code. */ -# pragma warn -8068 /* Constant out of range in comparison. */ -# pragma warn -8072 /* Suspicious pointer arithmetic. */ +#if HAVE_ICONV_H +#include <iconv.h> #endif -#if defined(_MSC_VER) -# pragma warning (push,1) -#endif +#include "archive.h" +#include "archive_string.h" #if defined(__GNUC__) && (__GNUC__ > 2 || \ - (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) -#define __LA_DEAD __attribute__((__noreturn__)) + (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) +#define __LA_DEAD __attribute__((__noreturn__)) #else -#define __LA_DEAD +#define __LA_DEAD #endif -#define ARCHIVE_WRITE_MAGIC (0xb0c5c0deU) -#define ARCHIVE_READ_MAGIC (0xdeb0c5U) -#define ARCHIVE_WRITE_DISK_MAGIC (0xc001b0c5U) -#define ARCHIVE_READ_DISK_MAGIC (0xbadb0c5U) +#define ARCHIVE_WRITE_MAGIC (0xb0c5c0deU) +#define ARCHIVE_READ_MAGIC (0xdeb0c5U) +#define ARCHIVE_WRITE_DISK_MAGIC (0xc001b0c5U) +#define ARCHIVE_READ_DISK_MAGIC (0xbadb0c5U) -#define ARCHIVE_STATE_ANY 0xFFFFU -#define ARCHIVE_STATE_NEW 1U -#define ARCHIVE_STATE_HEADER 2U -#define ARCHIVE_STATE_DATA 4U -#define ARCHIVE_STATE_DATA_END 8U -#define ARCHIVE_STATE_EOF 0x10U -#define ARCHIVE_STATE_CLOSED 0x20U -#define ARCHIVE_STATE_FATAL 0x8000U +#define ARCHIVE_STATE_NEW 1U +#define ARCHIVE_STATE_HEADER 2U +#define ARCHIVE_STATE_DATA 4U +#define ARCHIVE_STATE_EOF 0x10U +#define ARCHIVE_STATE_CLOSED 0x20U +#define ARCHIVE_STATE_FATAL 0x8000U +#define ARCHIVE_STATE_ANY (0xFFFFU & ~ARCHIVE_STATE_FATAL) struct archive_vtable { - int (*archive_close)(struct archive *); - int (*archive_finish)(struct archive *); - int (*archive_write_header)(struct archive *, - struct archive_entry *); - int (*archive_write_finish_entry)(struct archive *); - ssize_t (*archive_write_data)(struct archive *, - const void *, size_t); - ssize_t (*archive_write_data_block)(struct archive *, - const void *, size_t, off_t); + int (*archive_close)(struct archive *); + int (*archive_free)(struct archive *); + int (*archive_write_header)(struct archive *, + struct archive_entry *); + int (*archive_write_finish_entry)(struct archive *); + ssize_t (*archive_write_data)(struct archive *, + const void *, size_t); + ssize_t (*archive_write_data_block)(struct archive *, + const void *, size_t, int64_t); + + int (*archive_read_next_header)(struct archive *, + struct archive_entry **); + int (*archive_read_next_header2)(struct archive *, + struct archive_entry *); + int (*archive_read_data_block)(struct archive *, + const void **, size_t *, int64_t *); + + int (*archive_filter_count)(struct archive *); + int64_t (*archive_filter_bytes)(struct archive *, int); + int (*archive_filter_code)(struct archive *, int); + const char * (*archive_filter_name)(struct archive *, int); }; +struct archive_string_conv; + struct archive { - /* - * The magic/state values are used to sanity-check the - * client's usage. If an API function is called at a - * ridiculous time, or the client passes us an invalid - * pointer, these values allow me to catch that. - */ - unsigned int magic; - unsigned int state; - - /* - * Some public API functions depend on the "real" type of the - * archive object. - */ - struct archive_vtable *vtable; - - int archive_format; - const char *archive_format_name; - - int compression_code; /* Currently active compression. */ - const char *compression_name; - - /* Position in UNCOMPRESSED data stream. */ - int64_t file_position; - /* Position in COMPRESSED data stream. */ - int64_t raw_position; - /* Number of file entries processed. */ - int file_count; - - int archive_error_number; - const char *error; - struct archive_string error_string; + /* + * The magic/state values are used to sanity-check the + * client's usage. If an API function is called at a + * ridiculous time, or the client passes us an invalid + * pointer, these values allow me to catch that. + */ + unsigned int magic; + unsigned int state; + + /* + * Some public API functions depend on the "real" type of the + * archive object. + */ + struct archive_vtable *vtable; + + int archive_format; + const char *archive_format_name; + + int compression_code; /* Currently active compression. */ + const char *compression_name; + + /* Number of file entries processed. */ + int file_count; + + int archive_error_number; + const char *error; + struct archive_string error_string; + + char *current_code; + unsigned current_codepage; /* Current ACP(ANSI CodePage). */ + unsigned current_oemcp; /* Current OEMCP(OEM CodePage). */ + struct archive_string_conv *sconv; }; -/* Check magic value and state; exit if it isn't valid. */ -void __archive_check_magic(struct archive *, unsigned int magic, - unsigned int state, const char *func); +/* Check magic value and state; return(ARCHIVE_FATAL) if it isn't valid. */ +int __archive_check_magic(struct archive *, unsigned int magic, + unsigned int state, const char *func); +#define archive_check_magic(a, expected_magic, allowed_states, function_name) \ + do { \ + int magic_test = __archive_check_magic((a), (expected_magic), \ + (allowed_states), (function_name)); \ + if (magic_test == ARCHIVE_FATAL) \ + return ARCHIVE_FATAL; \ + } while (0) + +void __archive_errx(int retvalue, const char *msg) __LA_DEAD; + +int __archive_mktemp(const char *tmpdir); -void __archive_errx(int retvalue, const char *msg) __LA_DEAD; +int __archive_clean(struct archive *); -int __archive_parse_options(const char *p, const char *fn, - int keysize, char *key, int valsize, char *val); +#define err_combine(a,b) ((a) < (b) ? (a) : (b)) -#define err_combine(a,b) ((a) < (b) ? (a) : (b)) +#if defined(__BORLANDC__) || (defined(_MSC_VER) && _MSC_VER <= 1300) +# define ARCHIVE_LITERAL_LL(x) x##i64 +# define ARCHIVE_LITERAL_ULL(x) x##ui64 +#else +# define ARCHIVE_LITERAL_LL(x) x##ll +# define ARCHIVE_LITERAL_ULL(x) x##ull +#endif #endif |