Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
kientzle committed Aug 5, 2012
2 parents 4689f28 + 7484ff1 commit 9efc649
Show file tree
Hide file tree
Showing 8 changed files with 366 additions and 2 deletions.
2 changes: 2 additions & 0 deletions libarchive/archive.h
Expand Up @@ -622,6 +622,8 @@ __LA_DECL int archive_write_set_format_shar_dump(struct archive *);
__LA_DECL int archive_write_set_format_ustar(struct archive *); __LA_DECL int archive_write_set_format_ustar(struct archive *);
__LA_DECL int archive_write_set_format_xar(struct archive *); __LA_DECL int archive_write_set_format_xar(struct archive *);
__LA_DECL int archive_write_set_format_zip(struct archive *); __LA_DECL int archive_write_set_format_zip(struct archive *);
__LA_DECL int archive_write_zip_set_compression_deflate(struct archive *);
__LA_DECL int archive_write_zip_set_compression_store(struct archive *);
__LA_DECL int archive_write_open(struct archive *, void *, __LA_DECL int archive_write_open(struct archive *, void *,
archive_open_callback *, archive_write_callback *, archive_open_callback *, archive_write_callback *,
archive_close_callback *); archive_close_callback *);
Expand Down
3 changes: 3 additions & 0 deletions libarchive/archive_read_disk_entry_from_file.c
Expand Up @@ -398,6 +398,9 @@ setup_acls(struct archive_read_disk *a,
{ {
const char *accpath; const char *accpath;
acl_t acl; acl_t acl;
#if HAVE_ACL_IS_TRIVIAL_NP
int r;
#endif


accpath = archive_entry_sourcepath(entry); accpath = archive_entry_sourcepath(entry);
if (accpath == NULL) if (accpath == NULL)
Expand Down
2 changes: 1 addition & 1 deletion libarchive/archive_read_disk_windows.c
Expand Up @@ -1208,7 +1208,7 @@ _archive_read_disk_open_w(struct archive *_a, const wchar_t *pathname)
a->tree = tree_open(pathname, a->symlink_mode, a->restore_time); a->tree = tree_open(pathname, a->symlink_mode, a->restore_time);
if (a->tree == NULL) { if (a->tree == NULL) {
archive_set_error(&a->archive, ENOMEM, archive_set_error(&a->archive, ENOMEM,
"Can't allocate direcotry traversal data"); "Can't allocate directory traversal data");
a->archive.state = ARCHIVE_STATE_FATAL; a->archive.state = ARCHIVE_STATE_FATAL;
return (ARCHIVE_FATAL); return (ARCHIVE_FATAL);
} }
Expand Down
2 changes: 1 addition & 1 deletion libarchive/archive_read_support_filter_lrzip.c
Expand Up @@ -67,7 +67,7 @@ archive_read_support_filter_lrzip(struct archive *_a)
struct archive_read_filter_bidder *reader; struct archive_read_filter_bidder *reader;


archive_check_magic(_a, ARCHIVE_READ_MAGIC, archive_check_magic(_a, ARCHIVE_READ_MAGIC,
ARCHIVE_STATE_NEW, __FUNCTION__); ARCHIVE_STATE_NEW, "archive_read_support_filter_lrzip");


if (__archive_read_get_bidder(a, &reader) != ARCHIVE_OK) if (__archive_read_get_bidder(a, &reader) != ARCHIVE_OK)
return (ARCHIVE_FATAL); return (ARCHIVE_FATAL);
Expand Down
49 changes: 49 additions & 0 deletions libarchive/archive_write_set_format_zip.c
Expand Up @@ -256,6 +256,55 @@ archive_write_zip_options(struct archive_write *a, const char *key,
return (ARCHIVE_WARN); return (ARCHIVE_WARN);
} }


int
archive_write_zip_set_compression_deflate(struct archive *_a)
{
struct archive_write *a = (struct archive_write *)_a;
struct zip *zip = a->format_data;
int ret = ARCHIVE_FAILED;

archive_check_magic(_a, ARCHIVE_WRITE_MAGIC,
ARCHIVE_STATE_NEW | ARCHIVE_STATE_HEADER,
"archive_write_zip_set_compression_deflate");
if (a->archive.archive_format != ARCHIVE_FORMAT_ZIP) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
"Can only use archive_write_zip_set_compression_deflate"
" with zip format");
ret = ARCHIVE_FATAL;
} else {
#ifdef HAVE_ZLIB_H
zip->compression = COMPRESSION_DEFLATE;
ret = ARCHIVE_OK;
#else
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
"deflate compression not supported");
#endif
}
return (ret);
}

int
archive_write_zip_set_compression_store(struct archive *_a)
{
struct archive_write *a = (struct archive_write *)_a;
struct zip *zip = a->format_data;
int ret = ARCHIVE_FAILED;

archive_check_magic(_a, ARCHIVE_WRITE_MAGIC,
ARCHIVE_STATE_NEW | ARCHIVE_STATE_HEADER,
"archive_write_zip_set_compression_deflate");
if (a->archive.archive_format != ARCHIVE_FORMAT_ZIP) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
"Can only use archive_write_zip_set_compression_store"
" with zip format");
ret = ARCHIVE_FATAL;
} else {
zip->compression = COMPRESSION_STORE;
ret = ARCHIVE_OK;
}
return (ret);
}

int int
archive_write_set_format_zip(struct archive *_a) archive_write_set_format_zip(struct archive *_a)
{ {
Expand Down
1 change: 1 addition & 0 deletions libarchive/test/CMakeLists.txt
Expand Up @@ -182,6 +182,7 @@ IF(ENABLE_TEST)
test_write_format_zip.c test_write_format_zip.c
test_write_format_zip_empty.c test_write_format_zip_empty.c
test_write_format_zip_no_compression.c test_write_format_zip_no_compression.c
test_write_zip_set_compression_store.c
test_write_open_memory.c test_write_open_memory.c
test_zip_filename_encoding.c test_zip_filename_encoding.c
) )
Expand Down

0 comments on commit 9efc649

Please sign in to comment.