summaryrefslogtreecommitdiffstats
path: root/Utilities/cmlibarchive/libarchive/archive_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/cmlibarchive/libarchive/archive_private.h')
-rw-r--r--Utilities/cmlibarchive/libarchive/archive_private.h179
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