PERFORCE change 145653 for review
Anselm Strauss
strauss at FreeBSD.org
Tue Jul 22 20:06:22 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=145653
Change 145653 by strauss at strauss_marvelman on 2008/07/22 20:05:50
- Fixed a pointer and a return mistake in zip writer - Started another test for zip writer, but having bus error in archive_entry_size() call
Affected files ...
.. //depot/projects/soc2008/strauss_libarchive/Makefile.am#9 edit
.. //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write_set_format_zip.c#15 edit
.. //depot/projects/soc2008/strauss_libarchive/libarchive/test/test_write_format_zip_no_compression.c#1 add
Differences ...
==== //depot/projects/soc2008/strauss_libarchive/Makefile.am#9 (text+ko) ====
@@ -233,6 +233,7 @@
libarchive/test/test_write_format_tar_empty.c \
libarchive/test/test_write_format_tar_ustar.c \
libarchive/test/test_write_format_zip_empty.c \
+ libarchive/test/test_write_format_zip_no_compression.c \
libarchive/test/test_write_open_memory.c
libarchive_test_CPPFLAGS= -I$(top_builddir)/libarchive -I$(top_srcdir)/libarchive -I$(top_builddir)/libarchive/test
==== //depot/projects/soc2008/strauss_libarchive/libarchive/archive_write_set_format_zip.c#15 (text+ko) ====
@@ -173,7 +173,7 @@
archive_set_error(&a->archive, ENOMEM, "Can't allocate zip header data");
return (ARCHIVE_FATAL);
}
- l->entry = entry;
+ l->entry = entry; /* TODO: Maybe bad idea, do copy or store only needed fields. */
l->next = zip->central_directory;
zip->central_directory = l;
@@ -201,13 +201,13 @@
int64_t size = archive_entry_size(entry);
zip_encode(size, &d->compressed_size, sizeof(d->compressed_size));
zip_encode(size, &d->uncompressed_size, sizeof(d->uncompressed_size));
-
+
ret = (a->compressor.write)(a, &h, sizeof(h));
if (ret != ARCHIVE_OK) return (ARCHIVE_FATAL);
-
+
ret = (a->compressor.write)(a, path, strlen(path));
if (ret != ARCHIVE_OK) return (ARCHIVE_FATAL);
-
+
return (ARCHIVE_OK);
}
@@ -216,9 +216,10 @@
{
int ret;
ret = (a->compressor.write)(a, buff, s);
- if (ret != ARCHIVE_OK)
- return (ARCHIVE_FATAL);
- return (ret);
+ if (ret >= 0)
+ return (s);
+ else
+ return (ret);
/* TODO: Compute data descriptor CRC. */
}
@@ -246,7 +247,7 @@
struct zip_file_header_link *l;
struct zip_file_header h;
struct zip_central_directory_end end;
- uint64_t size;
+ int64_t size;
off_t offset;
const char *path;
int entries;
@@ -287,7 +288,7 @@
if (ret != ARCHIVE_OK) return (ARCHIVE_FATAL);
/* Writing filename. */
- ret = (a->compressor.write)(a, &path, strlen(path));
+ ret = (a->compressor.write)(a, path, strlen(path));
if (ret != ARCHIVE_OK) return (ARCHIVE_FATAL);
l = l->next;
@@ -305,7 +306,7 @@
/* Writing end of central directory. */
ret = (a->compressor.write)(a, &end, sizeof(end));
if (ret != ARCHIVE_OK) return (ARCHIVE_FATAL);
-
+
return (ARCHIVE_OK);
}
@@ -314,7 +315,7 @@
{
struct zip *zip;
struct zip_file_header_link *l;
-
+
zip = (struct zip *)a->format_data;
l = (struct zip_file_header_link *) zip->central_directory;
while (l != NULL) {
More information about the p4-projects
mailing list