@@ -39,6 +39,7 @@ DEFINE_TEST(test_write_filter_gzip)
3939 struct archive * a ;
4040 char * buff , * data ;
4141 size_t buffsize , datasize ;
42+ unsigned char * rbuff ;
4243 char path [16 ];
4344 size_t used1 , used2 ;
4445 int i , r , use_prog = 0 ;
@@ -58,6 +59,7 @@ DEFINE_TEST(test_write_filter_gzip)
5859
5960 /*
6061 * Write a 100 files and read them all back.
62+ * Use default compression level (6).
6163 */
6264 assert ((a = archive_write_new ()) != NULL );
6365 assertEqualIntA (a , ARCHIVE_OK , archive_write_set_format_ustar (a ));
@@ -93,6 +95,14 @@ DEFINE_TEST(test_write_filter_gzip)
9395 assertEqualIntA (a , ARCHIVE_OK , archive_write_close (a ));
9496 assertEqualInt (ARCHIVE_OK , archive_write_free (a ));
9597
98+ /* Basic gzip header tests */
99+ rbuff = (unsigned char * )buff ;
100+ assertEqualInt (rbuff [0 ], 0x1f );
101+ assertEqualInt (rbuff [1 ], 0x8b );
102+ assertEqualInt (rbuff [2 ], 0x08 );
103+ assertEqualInt (rbuff [3 ], 0x00 );
104+ assertEqualInt (rbuff [8 ], 0 ); /* RFC 1952 flag for compression level 6 */
105+
96106 assert ((a = archive_read_new ()) != NULL );
97107 assertEqualIntA (a , ARCHIVE_OK , archive_read_support_format_all (a ));
98108 r = archive_read_support_filter_gzip (a );
@@ -116,7 +126,7 @@ DEFINE_TEST(test_write_filter_gzip)
116126
117127 /*
118128 * Repeat the cycle again, this time setting some compression
119- * options.
129+ * options. Compression level is 9.
120130 */
121131 assert ((a = archive_write_new ()) != NULL );
122132 assertEqualIntA (a , ARCHIVE_OK , archive_write_set_format_ustar (a ));
@@ -150,6 +160,14 @@ DEFINE_TEST(test_write_filter_gzip)
150160 assertEqualIntA (a , ARCHIVE_OK , archive_write_close (a ));
151161 assertEqualInt (ARCHIVE_OK , archive_write_free (a ));
152162
163+ /* Basic gzip header tests */
164+ rbuff = (unsigned char * )buff ;
165+ assertEqualInt (rbuff [0 ], 0x1f );
166+ assertEqualInt (rbuff [1 ], 0x8b );
167+ assertEqualInt (rbuff [2 ], 0x08 );
168+ assertEqualInt (rbuff [3 ], 0x00 );
169+ assertEqualInt (rbuff [8 ], 2 ); /* RFC 1952 flag for compression level 9 */
170+
153171 /* Curiously, this test fails; the test data above compresses
154172 * better at default compression than at level 9. */
155173 /*
@@ -181,7 +199,7 @@ DEFINE_TEST(test_write_filter_gzip)
181199 assertEqualInt (ARCHIVE_OK , archive_read_free (a ));
182200
183201 /*
184- * Repeat again, with much lower compression.
202+ * Repeat again, with compression level 1
185203 */
186204 assert ((a = archive_write_new ()) != NULL );
187205 assertEqualIntA (a , ARCHIVE_OK , archive_write_set_format_ustar (a ));
@@ -213,6 +231,14 @@ DEFINE_TEST(test_write_filter_gzip)
213231 (int )used2 , (int )used1 );
214232 assert (used2 > used1 );
215233
234+ /* Basic gzip header tests */
235+ rbuff = (unsigned char * )buff ;
236+ assertEqualInt (rbuff [0 ], 0x1f );
237+ assertEqualInt (rbuff [1 ], 0x8b );
238+ assertEqualInt (rbuff [2 ], 0x08 );
239+ assertEqualInt (rbuff [3 ], 0x00 );
240+ assertEqualInt (rbuff [8 ], 4 ); /* RFC 1952 flag for compression level 1 */
241+
216242 assert ((a = archive_read_new ()) != NULL );
217243 assertEqualIntA (a , ARCHIVE_OK , archive_read_support_format_all (a ));
218244 assertEqualIntA (a , ARCHIVE_OK , archive_read_support_filter_all (a ));
0 commit comments