summaryrefslogtreecommitdiffstats
path: root/lib/libarchive/archive_entry_private.h
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2008-05-26 17:00:24 +0000
committerkientzle <kientzle@FreeBSD.org>2008-05-26 17:00:24 +0000
commita24d28f8e3d3892010c91baad77e2178c6a16ba2 (patch)
treed200bbdabe22d32b68a61172999be232d0c31d75 /lib/libarchive/archive_entry_private.h
parent268a4c430f25bc479b5e1e097f51394aa0f1fffb (diff)
downloadFreeBSD-src-a24d28f8e3d3892010c91baad77e2178c6a16ba2.zip
FreeBSD-src-a24d28f8e3d3892010c91baad77e2178c6a16ba2.tar.gz
MFp4: libarchive 2.5.4b. (Still 'b' until I get a bit more
feedback, but the 2.5 branch is shaping up nicely.) In addition to many small bug fixes and code improvements: * Another iteration of versioning; I think I've got it right now. * Portability: A lot of progress on Windows support (though I'm not committing all of the Windows support files to FreeBSD CVS) * Explicit tracking of MBS, WCS, and UTF-8 versions of strings in archive_entry; the archive_entry routines now correctly return NULL only when something is unset, setting NULL properly clears string values. Most charset conversions have been pushed down to archive_string. * Better handling of charset conversion failure when writing or reading UTF-8 headers in pax archives * archive_entry_linkify() provides multiple strategies for hardlink matching to suit different format expectations * More accurate bzip2 format detection * Joerg Sonnenberger's extensive improvements to mtree support * Rough support for self-extracting ZIP archives. Not an ideal approach, but it works for the archives I've tried. * New "sparsify" option in archive_write_disk converts blocks of nulls into seeks. * Better default behavior for the test harness; it now reports all failures by default instead of coredumping at the first one.
Diffstat (limited to 'lib/libarchive/archive_entry_private.h')
-rw-r--r--lib/libarchive/archive_entry_private.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/libarchive/archive_entry_private.h b/lib/libarchive/archive_entry_private.h
index 6eb973e..86a3ba1 100644
--- a/lib/libarchive/archive_entry_private.h
+++ b/lib/libarchive/archive_entry_private.h
@@ -28,17 +28,25 @@
#ifndef ARCHIVE_ENTRY_PRIVATE_H_INCLUDED
#define ARCHIVE_ENTRY_PRIVATE_H_INCLUDED
+#include "archive_string.h"
+
/*
* Handle wide character (i.e., Unicode) and non-wide character
* strings transparently.
- *
*/
struct aes {
- const char *aes_mbs;
- char *aes_mbs_alloc;
+ struct archive_string aes_mbs;
+ struct archive_string aes_utf8;
const wchar_t *aes_wcs;
- wchar_t *aes_wcs_alloc;
+ /* Bitmap of which of the above are valid. Because we're lazy
+ * about malloc-ing and reusing the underlying storage, we
+ * can't rely on NULL pointers to indicate whether a string
+ * has been set. */
+ int aes_set;
+#define AES_SET_MBS 1
+#define AES_SET_UTF8 2
+#define AES_SET_WCS 4
};
struct ae_acl {
@@ -128,8 +136,6 @@ struct archive_entry {
dev_t aest_rdevminor;
} ae_stat;
-
-
/*
* Use aes here so that we get transparent mbs<->wcs conversions.
*/
@@ -141,15 +147,23 @@ struct archive_entry {
struct aes ae_pathname; /* Name of entry */
struct aes ae_symlink; /* symlink contents */
struct aes ae_uname; /* Name of owner */
+ unsigned char ae_hardlinkset;
+ unsigned char ae_symlinkset;
+
+ /* Not used within libarchive; useful for some clients. */
+ struct aes ae_sourcepath; /* Path this entry is sourced from. */
+ /* ACL support. */
struct ae_acl *acl_head;
struct ae_acl *acl_p;
int acl_state; /* See acl_next for details. */
wchar_t *acl_text_w;
+ /* extattr support. */
struct ae_xattr *xattr_head;
struct ae_xattr *xattr_p;
+ /* Miscellaneous. */
char strmode[12];
};
OpenPOWER on IntegriCloud