]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Zip: Adjust streaming extension field to match the final spec worked out with Info...
authorTim Kientzle <kientzle@acm.org>
Sun, 4 May 2014 05:59:31 +0000 (22:59 -0700)
committerTim Kientzle <kientzle@acm.org>
Sun, 4 May 2014 05:59:31 +0000 (22:59 -0700)
libarchive/archive_read_support_format_zip.c
libarchive/archive_write_set_format_zip.c
libarchive/test/test_write_format_zip_compression_store.c
libarchive/test/test_write_format_zip_file.c
libarchive/test/test_write_format_zip_file_zip64.c

index dbe245e150c83159688b6fea065aaebcc1aee0bb..cbafe227921934409dfca3a18f09722c813cb3d8 100644 (file)
@@ -341,9 +341,9 @@ process_extra(const char *p, size_t extra_length, struct zip_entry* zip_entry)
                        }
                        break;
                }
-               case 0x6c65:
+               case 0x6c78:
                {
-                       /* Experimental 'el' field */
+                       /* Experimental 'xl' field */
                        /*
                         * Introduced Dec 2013 to provide a way to
                         * include external file attributes in local file
index 6ecf468c405e8aac3774fba2c37aaf3ef581c1e0..332611c86bcf1f72690e08bdedcb5329b3fadb43 100644 (file)
@@ -82,10 +82,6 @@ struct cd_segment {
        unsigned char *p;
 };
 
-/* Bits used to enable/disable certain experimental features. */
-#define        EXPERIMENT_LA 1
-#define        EXPERIMENTS_ALL 0xffff
-
 struct zip {
 
        int64_t entry_offset;
@@ -119,7 +115,7 @@ struct zip {
 
 #define ZIP_FLAG_AVOID_ZIP64 1
 #define ZIP_FLAG_FORCE_ZIP64 2
-#define ZIP_FLAG_EXPERIMENT_EL 4
+#define ZIP_FLAG_EXPERIMENT_xl 4
        int flags;
 
 #ifdef HAVE_ZLIB_H
@@ -229,9 +225,9 @@ archive_write_zip_options(struct archive_write *a, const char *key,
                return (ret);
        } else if (strcmp(key, "experimental") == 0) {
                if (val == NULL || val[0] == 0) {
-                       zip->flags &= ~ ZIP_FLAG_EXPERIMENT_EL;
+                       zip->flags &= ~ ZIP_FLAG_EXPERIMENT_xl;
                } else {
-                       zip->flags |= ZIP_FLAG_EXPERIMENT_EL;
+                       zip->flags |= ZIP_FLAG_EXPERIMENT_xl;
                }
                return (ARCHIVE_OK);
        } else if (strcmp(key, "fakecrc32") == 0) {
@@ -695,11 +691,11 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry)
                archive_le16enc(zip64_start + 2, e - (zip64_start + 4));
        }
 
-       if (zip->flags & ZIP_FLAG_EXPERIMENT_EL) {
-               /* Experimental 'el' extension to improve streaming. */
+       if (zip->flags & ZIP_FLAG_EXPERIMENT_xl) {
+               /* Experimental 'xl' extension to improve streaming. */
                unsigned char *external_info = e;
                int included = 7;
-               memcpy(e, "el\000\000", 4); // 0x6c65 + 2-byte length
+               memcpy(e, "xl\000\000", 4); // 0x6c65 + 2-byte length
                e += 4;
                e[0] = included; /* bitmap of included fields */
                e += 1;
index 063c1b04e850f6d312828bc1bbeefb3681dd6d21..c6761f9dfbf19237546d97713e8bd7537481a479 100644 (file)
@@ -231,7 +231,7 @@ DEFINE_TEST(test_write_format_zip_compression_store)
        assertEqualInt(i4(q + 11), file_gid); /* 'Ux' GID */
        q = q + 4 + i2(q + 2);
 
-       assertEqualInt(i2(q), 0x6c65); /* 'el' experimental extension header */
+       assertEqualInt(i2(q), 0x6c78); /* 'xl' experimental extension header */
        assertEqualInt(i2(q + 2), 9); /* size */
        assertEqualInt(q[4], 7); /* Bitmap of fields included. */
        assertEqualInt(i2(q + 5) >> 8, 3); /* system & version made by */
@@ -320,7 +320,7 @@ DEFINE_TEST(test_write_format_zip_compression_store)
        assertEqualInt(i4(q + 11), folder_gid); /* 'ux' GID */
        q = q + 4 + i2(q + 2);
 
-       assertEqualInt(i2(q), 0x6c65); /* 'el' experimental extension header */
+       assertEqualInt(i2(q), 0x6c78); /* 'xl' experimental extension header */
        assertEqualInt(i2(q + 2), 9); /* size */
        assertEqualInt(q[4], 7); /* bitmap of fields */
        assertEqualInt(i2(q + 5) >> 8, 3); /* system & version made by */
index b58c1abbff4e1cc41a4e990dd3fd766a2f7dd8e6..efac7d883d9153a79ec8a003d60034a354b4a3d7 100644 (file)
@@ -218,7 +218,7 @@ DEFINE_TEST(test_write_format_zip_file)
        assertEqualInt(i4(p + 11), file_gid); /* 'Ux' GID */
        p += 4 + i2(p + 2);
 
-       assertEqualInt(i2(p), 0x6c65); /* 'el' experimental extension block */
+       assertEqualInt(i2(p), 0x6c78); /* 'xl' experimental extension block */
        assertEqualInt(i2(p + 2), 9); /* size */
        assertEqualInt(p[4], 7); /* bitmap of fields in this block */
        assertEqualInt(i2(p + 5) >> 8, 3); /* System & version made by */
index 9cd04ab1dcb62fe87a7fe5084b75ad4ce1baac3f..def6809a46b67c8abf98fb803938d2bd3cfbdc77 100644 (file)
@@ -252,7 +252,7 @@ DEFINE_TEST(test_write_format_zip_file_zip64)
        /* compressed file size we can't verify here */
        p += 4 + i2(p + 2);
 
-       assertEqualInt(i2(p), 0x6c65); /* 'el' experimental extension header */
+       assertEqualInt(i2(p), 0x6c78); /* 'xl' experimental extension header */
        assertEqualInt(i2(p + 2), 9); /* size */
        assertEqualInt(p[4], 7); /* bitmap of included fields */
        assertEqualInt(i2(p + 5) >> 8, 3); /* system & version made by */