2 * Copyright (c) 2003-2007 Tim Kientzle
3 * Copyright (c) 2011 Andres Mejia
4 * Copyright (c) 2011-2012 Michihiro NAKAJIMA
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 DEFINE_TEST(test_read_format_rar_basic)
34 const char reffile[] = "test_read_format_rar.rar";
35 const char test_txt[] = "test text document\r\n";
36 int size = sizeof(test_txt)-1;
37 struct archive_entry *ae;
40 extract_reference_file(reffile);
41 assert((a = archive_read_new()) != NULL);
42 assertA(0 == archive_read_support_filter_all(a));
43 assertA(0 == archive_read_support_format_all(a));
44 assertA(0 == archive_read_open_filename(a, reffile, 10240));
47 assertA(0 == archive_read_next_header(a, &ae));
48 assertEqualString("test.txt", archive_entry_pathname(ae));
49 assertA((int)archive_entry_mtime(ae));
50 assertA((int)archive_entry_ctime(ae));
51 assertA((int)archive_entry_atime(ae));
52 assertEqualInt(20, archive_entry_size(ae));
53 assertEqualInt(33188, archive_entry_mode(ae));
54 assertA(size == archive_read_data(a, buff, size));
55 assertEqualMem(buff, test_txt, size);
56 assertEqualInt(archive_entry_is_encrypted(ae), 0);
57 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
60 assertA(0 == archive_read_next_header(a, &ae));
61 assertEqualString("testlink", archive_entry_pathname(ae));
62 assertA((int)archive_entry_mtime(ae));
63 assertA((int)archive_entry_ctime(ae));
64 assertA((int)archive_entry_atime(ae));
65 assertEqualInt(0, archive_entry_size(ae));
66 assertEqualInt(41471, archive_entry_mode(ae));
67 assertEqualString("test.txt", archive_entry_symlink(ae));
68 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
69 assertEqualInt(archive_entry_is_encrypted(ae), 0);
70 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
73 assertA(0 == archive_read_next_header(a, &ae));
74 assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
75 assertA((int)archive_entry_mtime(ae));
76 assertA((int)archive_entry_ctime(ae));
77 assertA((int)archive_entry_atime(ae));
78 assertEqualInt(20, archive_entry_size(ae));
79 assertEqualInt(33188, archive_entry_mode(ae));
80 assertA(size == archive_read_data(a, buff, size));
81 assertEqualMem(buff, test_txt, size);
82 assertEqualInt(archive_entry_is_encrypted(ae), 0);
83 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
86 assertA(0 == archive_read_next_header(a, &ae));
87 assertEqualString("testdir", archive_entry_pathname(ae));
88 assertA((int)archive_entry_mtime(ae));
89 assertA((int)archive_entry_ctime(ae));
90 assertA((int)archive_entry_atime(ae));
91 assertEqualInt(0, archive_entry_size(ae));
92 assertEqualInt(16877, archive_entry_mode(ae));
93 assertEqualInt(archive_entry_is_encrypted(ae), 0);
94 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
97 assertA(0 == archive_read_next_header(a, &ae));
98 assertEqualString("testemptydir", archive_entry_pathname(ae));
99 assertA((int)archive_entry_mtime(ae));
100 assertA((int)archive_entry_ctime(ae));
101 assertA((int)archive_entry_atime(ae));
102 assertEqualInt(0, archive_entry_size(ae));
103 assertEqualInt(16877, archive_entry_mode(ae));
104 assertEqualInt(archive_entry_is_encrypted(ae), 0);
105 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
108 assertA(1 == archive_read_next_header(a, &ae));
109 assertEqualInt(5, archive_file_count(a));
110 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
111 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
114 DEFINE_TEST(test_read_format_rar_subblock)
117 const char reffile[] = "test_read_format_rar_subblock.rar";
118 const char test_txt[] = "test text document\r\n";
119 int size = sizeof(test_txt)-1;
120 struct archive_entry *ae;
123 extract_reference_file(reffile);
124 assert((a = archive_read_new()) != NULL);
125 assertA(0 == archive_read_support_filter_all(a));
126 assertA(0 == archive_read_support_format_all(a));
127 assertA(0 == archive_read_open_filename(a, reffile, 10240));
130 assertA(0 == archive_read_next_header(a, &ae));
131 assertEqualString("test.txt", archive_entry_pathname(ae));
132 assertA((int)archive_entry_mtime(ae));
133 assertA((int)archive_entry_ctime(ae));
134 assertA((int)archive_entry_atime(ae));
135 assertEqualInt(20, archive_entry_size(ae));
136 assertEqualInt(33188, archive_entry_mode(ae));
137 assertA(size == archive_read_data(a, buff, size));
138 assertEqualMem(buff, test_txt, size);
139 assertEqualInt(archive_entry_is_encrypted(ae), 0);
140 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
143 assertA(1 == archive_read_next_header(a, &ae));
144 assertEqualInt(1, archive_file_count(a));
145 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
146 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
149 DEFINE_TEST(test_read_format_rar_noeof)
152 const char reffile[] = "test_read_format_rar_noeof.rar";
153 const char test_txt[] = "test text document\r\n";
154 int size = sizeof(test_txt)-1;
155 struct archive_entry *ae;
158 extract_reference_file(reffile);
159 assert((a = archive_read_new()) != NULL);
160 assertA(0 == archive_read_support_filter_all(a));
161 assertA(0 == archive_read_support_format_all(a));
162 assertA(0 == archive_read_open_filename(a, reffile, 10240));
165 assertA(0 == archive_read_next_header(a, &ae));
166 assertEqualString("test.txt", archive_entry_pathname(ae));
167 assertA((int)archive_entry_mtime(ae));
168 assertA((int)archive_entry_ctime(ae));
169 assertA((int)archive_entry_atime(ae));
170 assertEqualInt(20, archive_entry_size(ae));
171 assertEqualInt(33188, archive_entry_mode(ae));
172 assertA(size == archive_read_data(a, buff, size));
173 assertEqualMem(buff, test_txt, size);
174 assertEqualInt(archive_entry_is_encrypted(ae), 0);
175 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
178 assertA(1 == archive_read_next_header(a, &ae));
179 assertEqualInt(1, archive_file_count(a));
180 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
181 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
184 DEFINE_TEST(test_read_format_rar_unicode_UTF8)
187 const char reffile[] = "test_read_format_rar_unicode.rar";
188 const char test_txt[] = "kanji";
189 struct archive_entry *ae;
192 if (NULL == setlocale(LC_ALL, "en_US.UTF-8")) {
193 skipping("en_US.UTF-8 locale not available on this system.");
197 extract_reference_file(reffile);
198 assert((a = archive_read_new()) != NULL);
199 assertA(0 == archive_read_support_filter_all(a));
200 assertA(0 == archive_read_support_format_all(a));
201 assertA(0 == archive_read_open_filename(a, reffile, 10240));
204 assertA(0 == archive_read_next_header(a, &ae));
205 #if defined(__APPLE__)
206 #define f1name "\xE8\xA1\xA8\xE3\x81\x9F\xE3\x82\x99\xE3\x82\x88/"\
207 "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x95\xE3\x82\xA9"\
208 "\xE3\x83\xAB\xE3\x82\xBF\xE3\x82\x99/\xE6\x96\xB0\xE8\xA6\x8F"\
209 "\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88 "\
210 "\xE3\x83\x88\xE3\x82\x99\xE3\x82\xAD\xE3\x83\xA5\xE3\x83\xA1"\
211 "\xE3\x83\xB3\xE3\x83\x88.txt" /* NFD */
213 #define f1name "\xE8\xA1\xA8\xE3\x81\xA0\xE3\x82\x88/"\
214 "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x95\xE3\x82\xA9"\
215 "\xE3\x83\xAB\xE3\x83\x80/\xE6\x96\xB0\xE8\xA6\x8F"\
216 "\xE3\x83\x86\xE3\x82\xAD\xE3\x82\xB9\xE3\x83\x88 "\
217 "\xE3\x83\x89\xE3\x82\xAD\xE3\x83\xA5\xE3\x83\xA1"\
218 "\xE3\x83\xB3\xE3\x83\x88.txt" /* NFC */
220 assertEqualUTF8String(f1name, archive_entry_pathname(ae));
221 assertA((int)archive_entry_mtime(ae));
222 assertEqualInt(0, archive_entry_size(ae));
223 assertEqualInt(33188, archive_entry_mode(ae));
226 assertA(0 == archive_read_next_header(a, &ae));
227 #if defined(__APPLE__)
228 #define f2name "\xE8\xA1\xA8\xE3\x81\x9F\xE3\x82\x99\xE3\x82\x88/"\
229 "\xE6\xBC\xA2\xE5\xAD\x97\xE9\x95\xB7\xE3\x81\x84\xE3\x83\x95"\
230 "\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8Dlong-filename-in-"\
231 "\xE6\xBC\xA2\xE5\xAD\x97.txt" /* NFD */
233 #define f2name "\xE8\xA1\xA8\xE3\x81\xA0\xE3\x82\x88/"\
234 "\xE6\xBC\xA2\xE5\xAD\x97\xE9\x95\xB7\xE3\x81\x84\xE3\x83\x95"\
235 "\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8Dlong-filename-in-"\
236 "\xE6\xBC\xA2\xE5\xAD\x97.txt" /* NFC */
238 assertEqualUTF8String(f2name, archive_entry_pathname(ae));
239 assertA((int)archive_entry_mtime(ae));
240 assertEqualInt(5, archive_entry_size(ae));
241 assertEqualInt(33188, archive_entry_mode(ae));
242 assertEqualIntA(a, 5, archive_read_data(a, buff, 5));
243 assertEqualMem(buff, test_txt, 5);
244 assertEqualInt(archive_entry_is_encrypted(ae), 0);
245 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
248 assertA(0 == archive_read_next_header(a, &ae));
249 #if defined(__APPLE__)
250 #define f3name "\xE8\xA1\xA8\xE3\x81\x9F\xE3\x82\x99\xE3\x82\x88/"\
251 "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x95\xE3\x82"\
252 "\xA9\xE3\x83\xAB\xE3\x82\xBF\xE3\x82\x99" /* NFD */
254 #define f3name "\xE8\xA1\xA8\xE3\x81\xA0\xE3\x82\x88/"\
255 "\xE6\x96\xB0\xE3\x81\x97\xE3\x81\x84\xE3\x83\x95\xE3\x82"\
256 "\xA9\xE3\x83\xAB\xE3\x83\x80" /* NFC */
258 assertEqualUTF8String(f3name, archive_entry_pathname(ae));
259 assertA((int)archive_entry_mtime(ae));
260 assertEqualInt(0, archive_entry_size(ae));
261 assertEqualInt(16877, archive_entry_mode(ae));
264 assertA(0 == archive_read_next_header(a, &ae));
265 #if defined(__APPLE__)
266 #define f4name "\xE8\xA1\xA8\xE3\x81\x9F\xE3\x82\x99\xE3\x82\x88" /* NFD */
268 #define f4name "\xE8\xA1\xA8\xE3\x81\xA0\xE3\x82\x88" /* NFC */
270 assertEqualUTF8String(f4name, archive_entry_pathname(ae));
271 assertA((int)archive_entry_mtime(ae));
272 assertEqualInt(0, archive_entry_size(ae));
273 assertEqualInt(16877, archive_entry_mode(ae));
275 /* Fifth header, which has a symbolic-link name in multi-byte characters. */
276 assertA(0 == archive_read_next_header(a, &ae));
277 #if defined(__APPLE__)
278 #define f5name "\xE8\xA1\xA8\xE3\x81\x9F\xE3\x82\x99\xE3\x82\x88/"\
279 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB" /* NFD */
281 #define f5name "\xE8\xA1\xA8\xE3\x81\xA0\xE3\x82\x88/"\
282 "\xE3\x83\x95\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB" /* NFC */
284 assertEqualUTF8String(f5name, archive_entry_pathname(ae));
285 assertEqualUTF8String(
286 "\xE6\xBC\xA2\xE5\xAD\x97\xE9\x95\xB7\xE3\x81\x84\xE3\x83\x95"
287 "\xE3\x82\xA1\xE3\x82\xA4\xE3\x83\xAB\xE5\x90\x8Dlong-filename-in-"
288 "\xE6\xBC\xA2\xE5\xAD\x97.txt", archive_entry_symlink(ae));
289 assertA((int)archive_entry_mtime(ae));
290 assertEqualInt(0, archive_entry_size(ae));
291 assertEqualInt(41453, archive_entry_mode(ae));
292 assertEqualInt(archive_entry_is_encrypted(ae), 0);
293 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
294 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
297 assertA(0 == archive_read_next_header(a, &ae));
298 assertEqualUTF8String(
299 "abcdefghijklmnopqrs\xE3\x83\x86\xE3\x82\xB9\xE3\x83\x88.txt",
300 archive_entry_pathname(ae));
301 assertA((int)archive_entry_mtime(ae));
302 assertEqualInt(16, archive_entry_size(ae));
303 assertEqualInt(33204, archive_entry_mode(ae));
304 assertEqualInt(archive_entry_is_encrypted(ae), 0);
305 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
306 assertEqualIntA(a, 16, archive_read_data(a, buff, sizeof(buff)));
309 assertA(1 == archive_read_next_header(a, &ae));
310 assertEqualInt(6, archive_file_count(a));
311 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
312 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
315 DEFINE_TEST(test_read_format_rar_unicode_CP932)
318 const char reffile[] = "test_read_format_rar_unicode.rar";
319 const char test_txt[] = "kanji";
320 struct archive_entry *ae;
323 if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
324 NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
325 skipping("CP932 locale not available on this system.");
329 extract_reference_file(reffile);
330 assert((a = archive_read_new()) != NULL);
331 assertA(0 == archive_read_support_filter_all(a));
332 assertA(0 == archive_read_support_format_all(a));
333 /* Specify the charset of symbolic-link file name. */
334 if (ARCHIVE_OK != archive_read_set_options(a, "rar:hdrcharset=UTF-8")) {
335 skipping("This system cannot convert character-set"
336 " from UTF-8 to CP932.");
337 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
340 assertA(0 == archive_read_open_filename(a, reffile, 10240));
343 assertA(0 == archive_read_next_header(a, &ae));
344 assertEqualString("\x95\x5c\x82\xbe\x82\xe6/\x90\x56\x82\xb5\x82\xa2"
345 "\x83\x74\x83\x48\x83\x8b\x83\x5f/\x90\x56\x8b\x4b\x83\x65\x83\x4c"
346 "\x83\x58\x83\x67 \x83\x68\x83\x4c\x83\x85\x83\x81\x83\x93\x83\x67.txt",
347 archive_entry_pathname(ae));
348 assertA((int)archive_entry_mtime(ae));
349 assertEqualInt(0, archive_entry_size(ae));
350 assertEqualInt(33188, archive_entry_mode(ae));
351 assertEqualInt(archive_entry_is_encrypted(ae), 0);
352 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
355 assertA(0 == archive_read_next_header(a, &ae));
356 assertEqualString("\x95\x5c\x82\xbe\x82\xe6/\x8a\xbf\x8e\x9a"
357 "\x92\xb7\x82\xa2\x83\x74\x83\x40\x83\x43\x83\x8b\x96\xbc\x6c"
358 "\x6f\x6e\x67\x2d\x66\x69\x6c\x65\x6e\x61\x6d\x65\x2d\x69\x6e"
359 "\x2d\x8a\xbf\x8e\x9a.txt", archive_entry_pathname(ae));
360 assertA((int)archive_entry_mtime(ae));
361 assertEqualInt(5, archive_entry_size(ae));
362 assertEqualInt(33188, archive_entry_mode(ae));
363 assertEqualInt(archive_entry_is_encrypted(ae), 0);
364 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
365 assertA(5 == archive_read_data(a, buff, 5));
366 assertEqualMem(buff, test_txt, 5);
369 assertA(0 == archive_read_next_header(a, &ae));
370 assertEqualString("\x95\x5c\x82\xbe\x82\xe6/"
371 "\x90\x56\x82\xb5\x82\xa2\x83\x74\x83\x48\x83\x8b\x83\x5f",
372 archive_entry_pathname(ae));
373 assertA((int)archive_entry_mtime(ae));
374 assertEqualInt(0, archive_entry_size(ae));
375 assertEqualInt(16877, archive_entry_mode(ae));
376 assertEqualInt(archive_entry_is_encrypted(ae), 0);
377 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
380 assertA(0 == archive_read_next_header(a, &ae));
381 assertEqualString("\x95\x5c\x82\xbe\x82\xe6", archive_entry_pathname(ae));
382 assertA((int)archive_entry_mtime(ae));
383 assertEqualInt(0, archive_entry_size(ae));
384 assertEqualInt(16877, archive_entry_mode(ae));
385 assertEqualInt(archive_entry_is_encrypted(ae), 0);
386 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
388 /* Fifth header, which has a symbolic-link name in multi-byte characters. */
389 assertA(0 == archive_read_next_header(a, &ae));
390 assertEqualString("\x95\x5c\x82\xbe\x82\xe6/"
391 "\x83\x74\x83\x40\x83\x43\x83\x8B", archive_entry_pathname(ae));
392 assertEqualString("\x8a\xbf\x8e\x9a"
393 "\x92\xb7\x82\xa2\x83\x74\x83\x40\x83\x43\x83\x8b\x96\xbc\x6c"
394 "\x6f\x6e\x67\x2d\x66\x69\x6c\x65\x6e\x61\x6d\x65\x2d\x69\x6e"
395 "\x2d\x8a\xbf\x8e\x9a.txt", archive_entry_symlink(ae));
396 assertA((int)archive_entry_mtime(ae));
397 assertEqualInt(0, archive_entry_size(ae));
398 assertEqualInt(41453, archive_entry_mode(ae));
399 assertEqualInt(archive_entry_is_encrypted(ae), 0);
400 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
401 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
404 assertA(0 == archive_read_next_header(a, &ae));
405 assertEqualUTF8String(
406 "abcdefghijklmnopqrs\x83\x65\x83\x58\x83\x67.txt",
407 archive_entry_pathname(ae));
408 assertA((int)archive_entry_mtime(ae));
409 assertEqualInt(16, archive_entry_size(ae));
410 assertEqualInt(33204, archive_entry_mode(ae));
411 assertEqualInt(archive_entry_is_encrypted(ae), 0);
412 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
413 assertEqualIntA(a, 16, archive_read_data(a, buff, sizeof(buff)));
416 assertA(1 == archive_read_next_header(a, &ae));
417 assertEqualInt(6, archive_file_count(a));
418 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
419 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
422 DEFINE_TEST(test_read_format_rar_compress_normal)
424 const char reffile[] = "test_read_format_rar_compress_normal.rar";
425 char file1_buff[20111];
426 int file1_size = sizeof(file1_buff);
427 const char file1_test_txt[] = "<P STYLE=\"margin-bottom: 0in\"><BR>\n"
432 int file2_size = sizeof(file2_buff);
433 const char file2_test_txt[] = "test text document\r\n";
434 struct archive_entry *ae;
437 extract_reference_file(reffile);
438 assert((a = archive_read_new()) != NULL);
439 assertA(0 == archive_read_support_filter_all(a));
440 assertA(0 == archive_read_support_format_all(a));
441 assertA(0 == archive_read_open_filename(a, reffile, 10240));
444 assertA(0 == archive_read_next_header(a, &ae));
445 assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
446 assertA((int)archive_entry_mtime(ae));
447 assertA((int)archive_entry_ctime(ae));
448 assertA((int)archive_entry_atime(ae));
449 assertEqualInt(file1_size, archive_entry_size(ae));
450 assertEqualInt(33188, archive_entry_mode(ae));
451 assertEqualInt(archive_entry_is_encrypted(ae), 0);
452 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
453 assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
454 assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
455 file1_test_txt, sizeof(file1_test_txt) - 1);
458 assertA(0 == archive_read_next_header(a, &ae));
459 assertEqualString("testlink", archive_entry_pathname(ae));
460 assertA((int)archive_entry_mtime(ae));
461 assertA((int)archive_entry_ctime(ae));
462 assertA((int)archive_entry_atime(ae));
463 assertEqualInt(0, archive_entry_size(ae));
464 assertEqualInt(41471, archive_entry_mode(ae));
465 assertEqualInt(archive_entry_is_encrypted(ae), 0);
466 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
467 assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
468 assertEqualIntA(a, 0, archive_read_data(a, file1_buff, 30));
471 assertA(0 == archive_read_next_header(a, &ae));
472 assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
473 assertA((int)archive_entry_mtime(ae));
474 assertA((int)archive_entry_ctime(ae));
475 assertA((int)archive_entry_atime(ae));
476 assertEqualInt(file2_size, archive_entry_size(ae));
477 assertEqualInt(33188, archive_entry_mode(ae));
478 assertEqualInt(archive_entry_is_encrypted(ae), 0);
479 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
480 assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
481 assertEqualMem(&file2_buff[file2_size + 1 - sizeof(file2_test_txt)],
482 file2_test_txt, sizeof(file2_test_txt) - 1);
485 assertA(0 == archive_read_next_header(a, &ae));
486 assertEqualString("testdir/LibarchiveAddingTest.html",
487 archive_entry_pathname(ae));
488 assertA((int)archive_entry_mtime(ae));
489 assertA((int)archive_entry_ctime(ae));
490 assertA((int)archive_entry_atime(ae));
491 assertEqualInt(file1_size, archive_entry_size(ae));
492 assertEqualInt(33188, archive_entry_mode(ae));
493 assertEqualInt(archive_entry_is_encrypted(ae), 0);
494 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
495 assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
496 assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
497 file1_test_txt, sizeof(file1_test_txt) - 1);
500 assertA(0 == archive_read_next_header(a, &ae));
501 assertEqualString("testdir", archive_entry_pathname(ae));
502 assertA((int)archive_entry_mtime(ae));
503 assertA((int)archive_entry_ctime(ae));
504 assertA((int)archive_entry_atime(ae));
505 assertEqualInt(0, archive_entry_size(ae));
506 assertEqualInt(16877, archive_entry_mode(ae));
507 assertEqualInt(archive_entry_is_encrypted(ae), 0);
508 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
511 assertA(0 == archive_read_next_header(a, &ae));
512 assertEqualString("testemptydir", archive_entry_pathname(ae));
513 assertA((int)archive_entry_mtime(ae));
514 assertA((int)archive_entry_ctime(ae));
515 assertA((int)archive_entry_atime(ae));
516 assertEqualInt(0, archive_entry_size(ae));
517 assertEqualInt(16877, archive_entry_mode(ae));
518 assertEqualInt(archive_entry_is_encrypted(ae), 0);
519 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
522 assertA(1 == archive_read_next_header(a, &ae));
523 assertEqualInt(6, archive_file_count(a));
524 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
525 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
528 /* This test is for sufficiently large files that would have been compressed
529 * using multiple lzss blocks.
531 DEFINE_TEST(test_read_format_rar_multi_lzss_blocks)
533 const char reffile[] = "test_read_format_rar_multi_lzss_blocks.rar";
534 const char test_txt[] = "-bottom: 0in\"><BR>\n</P>\n</BODY>\n</HTML>";
535 int size = 20131111, offset = 0;
537 struct archive_entry *ae;
540 extract_reference_file(reffile);
541 assert((a = archive_read_new()) != NULL);
542 assertA(0 == archive_read_support_filter_all(a));
543 assertA(0 == archive_read_support_format_all(a));
544 assertA(0 == archive_read_open_filename(a, reffile, 10240));
547 assertA(0 == archive_read_next_header(a, &ae));
548 assertEqualString("multi_lzss_blocks_test.txt", archive_entry_pathname(ae));
549 assertA((int)archive_entry_mtime(ae));
550 assertA((int)archive_entry_ctime(ae));
551 assertA((int)archive_entry_atime(ae));
552 assertEqualInt(size, archive_entry_size(ae));
553 assertEqualInt(33188, archive_entry_mode(ae));
554 assertEqualInt(archive_entry_is_encrypted(ae), 0);
555 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
556 while (offset + (int)sizeof(buff) < size)
558 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
559 offset += sizeof(buff);
561 assertA(size - offset == archive_read_data(a, buff, size - offset));
562 assertEqualMem(buff, test_txt, size - offset);
565 assertA(1 == archive_read_next_header(a, &ae));
566 assertEqualInt(1, archive_file_count(a));
567 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
568 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
571 DEFINE_TEST(test_read_format_rar_compress_best)
573 const char reffile[] = "test_read_format_rar_compress_best.rar";
574 char file1_buff[20111];
575 int file1_size = sizeof(file1_buff);
576 const char file1_test_txt[] = "<P STYLE=\"margin-bottom: 0in\"><BR>\n"
581 int file2_size = sizeof(file2_buff);
582 const char file2_test_txt[] = "test text document\r\n";
583 struct archive_entry *ae;
586 extract_reference_file(reffile);
587 assert((a = archive_read_new()) != NULL);
588 assertA(0 == archive_read_support_filter_all(a));
589 assertA(0 == archive_read_support_format_all(a));
590 assertA(0 == archive_read_open_filename(a, reffile, 10240));
593 assertA(0 == archive_read_next_header(a, &ae));
594 assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
595 assertA((int)archive_entry_mtime(ae));
596 assertA((int)archive_entry_ctime(ae));
597 assertA((int)archive_entry_atime(ae));
598 assertEqualInt(file1_size, archive_entry_size(ae));
599 assertEqualInt(33188, archive_entry_mode(ae));
600 assertEqualInt(archive_entry_is_encrypted(ae), 0);
601 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
602 assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
603 assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
604 file1_test_txt, sizeof(file1_test_txt) - 1);
607 assertA(0 == archive_read_next_header(a, &ae));
608 assertEqualString("testlink", archive_entry_pathname(ae));
609 assertA((int)archive_entry_mtime(ae));
610 assertA((int)archive_entry_ctime(ae));
611 assertA((int)archive_entry_atime(ae));
612 assertEqualInt(0, archive_entry_size(ae));
613 assertEqualInt(41471, archive_entry_mode(ae));
614 assertEqualInt(archive_entry_is_encrypted(ae), 0);
615 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
616 assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
617 assertEqualIntA(a, 0, archive_read_data(a, file1_buff, 30));
620 assertA(0 == archive_read_next_header(a, &ae));
621 assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
622 assertA((int)archive_entry_mtime(ae));
623 assertA((int)archive_entry_ctime(ae));
624 assertA((int)archive_entry_atime(ae));
625 assertEqualInt(file2_size, archive_entry_size(ae));
626 assertEqualInt(33188, archive_entry_mode(ae));
627 assertEqualInt(archive_entry_is_encrypted(ae), 0);
628 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
629 assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
630 assertEqualMem(&file2_buff[file2_size + 1 - sizeof(file2_test_txt)],
631 file2_test_txt, sizeof(file2_test_txt) - 1);
634 assertA(0 == archive_read_next_header(a, &ae));
635 assertEqualString("testdir/LibarchiveAddingTest.html",
636 archive_entry_pathname(ae));
637 assertA((int)archive_entry_mtime(ae));
638 assertA((int)archive_entry_ctime(ae));
639 assertA((int)archive_entry_atime(ae));
640 assertEqualInt(file1_size, archive_entry_size(ae));
641 assertEqualInt(33188, archive_entry_mode(ae));
642 assertEqualInt(archive_entry_is_encrypted(ae), 0);
643 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
644 assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
645 assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
646 file1_test_txt, sizeof(file1_test_txt) - 1);
649 assertA(0 == archive_read_next_header(a, &ae));
650 assertEqualString("testdir", archive_entry_pathname(ae));
651 assertA((int)archive_entry_mtime(ae));
652 assertA((int)archive_entry_ctime(ae));
653 assertA((int)archive_entry_atime(ae));
654 assertEqualInt(0, archive_entry_size(ae));
655 assertEqualInt(16877, archive_entry_mode(ae));
656 assertEqualInt(archive_entry_is_encrypted(ae), 0);
657 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
660 assertA(0 == archive_read_next_header(a, &ae));
661 assertEqualString("testemptydir", archive_entry_pathname(ae));
662 assertA((int)archive_entry_mtime(ae));
663 assertA((int)archive_entry_ctime(ae));
664 assertA((int)archive_entry_atime(ae));
665 assertEqualInt(0, archive_entry_size(ae));
666 assertEqualInt(16877, archive_entry_mode(ae));
667 assertEqualInt(archive_entry_is_encrypted(ae), 0);
668 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
671 assertA(1 == archive_read_next_header(a, &ae));
672 assertEqualInt(6, archive_file_count(a));
673 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
674 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
677 /* This is a test for RAR files compressed using a technique where compression
678 * switches back and forth to and from ppmd and lzss decoding.
680 DEFINE_TEST(test_read_format_rar_ppmd_lzss_conversion)
682 const char reffile[] = "test_read_format_rar_ppmd_lzss_conversion.rar";
683 const char test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n</HTML>";
684 int size = 241647978, offset = 0;
686 struct archive_entry *ae;
689 extract_reference_file(reffile);
690 assert((a = archive_read_new()) != NULL);
691 assertA(0 == archive_read_support_filter_all(a));
692 assertA(0 == archive_read_support_format_all(a));
693 assertA(0 == archive_read_open_filename(a, reffile, 10240));
696 assertA(0 == archive_read_next_header(a, &ae));
697 assertEqualString("ppmd_lzss_conversion_test.txt",
698 archive_entry_pathname(ae));
699 assertA((int)archive_entry_mtime(ae));
700 assertA((int)archive_entry_ctime(ae));
701 assertA((int)archive_entry_atime(ae));
702 assertEqualInt(size, archive_entry_size(ae));
703 assertEqualInt(33188, archive_entry_mode(ae));
704 assertEqualInt(archive_entry_is_encrypted(ae), 0);
705 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
706 while (offset + (int)sizeof(buff) < size)
708 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
709 offset += sizeof(buff);
711 assertA(size - offset == archive_read_data(a, buff, size - offset));
712 assertEqualMem(buff, test_txt, size - offset);
715 assertA(1 == archive_read_next_header(a, &ae));
716 assertEqualInt(1, archive_file_count(a));
717 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
718 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
721 DEFINE_TEST(test_read_format_rar_binary)
723 const char reffile[] = "test_read_format_rar_binary_data.rar";
724 char *file1_buff = malloc(1048576);
725 int file1_size = 1048576;
726 const char file1_test_txt[] = "\x37\xef\xb2\xbe\x33\xf6\xcc\xcb\xee\x2a\x10"
727 "\x9d\x2e\x01\xe9\xf6\xf9\xe5\xe6\x67\x0c\x2b"
728 "\xd8\x6b\xa0\x26\x9a\xf7\x93\x87\x42\xf1\x08"
729 "\x42\xdc\x9b\x76\x91\x20\xa4\x01\xbe\x67\xbd"
731 char file2_buff[32618];
732 int file2_size = sizeof(file2_buff);
733 const char file2_test_txt[] = "\x00\xee\x78\x00\x00\x4d\x45\x54\x41\x2d\x49"
734 "\x4e\x46\x2f\x6d\x61\x6e\x69\x66\x65\x73\x74"
735 "\x2e\x78\x6d\x6c\x50\x4b\x05\x06\x00\x00\x00"
736 "\x00\x12\x00\x12\x00\xaa\x04\x00\x00\xaa\x7a"
738 struct archive_entry *ae;
741 extract_reference_file(reffile);
742 assert((a = archive_read_new()) != NULL);
743 assertA(0 == archive_read_support_filter_all(a));
744 assertA(0 == archive_read_support_format_all(a));
745 assertA(0 == archive_read_open_filename(a, reffile, 10240));
748 assertA(0 == archive_read_next_header(a, &ae));
749 assertEqualString("random_data.bin", archive_entry_pathname(ae));
750 assertA((int)archive_entry_mtime(ae));
751 assertA((int)archive_entry_ctime(ae));
752 assertA((int)archive_entry_atime(ae));
753 assertEqualInt(file1_size, archive_entry_size(ae));
754 assertEqualInt(33188, archive_entry_mode(ae));
755 assertEqualInt(archive_entry_is_encrypted(ae), 0);
756 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
757 assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
758 assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
759 file1_test_txt, sizeof(file1_test_txt) - 1);
762 assertA(0 == archive_read_next_header(a, &ae));
763 assertEqualString("LibarchiveAddingTest.odt", archive_entry_pathname(ae));
764 assertA((int)archive_entry_mtime(ae));
765 assertA((int)archive_entry_ctime(ae));
766 assertA((int)archive_entry_atime(ae));
767 assertEqualInt(file2_size, archive_entry_size(ae));
768 assertEqualInt(33188, archive_entry_mode(ae));
769 assertEqualInt(archive_entry_is_encrypted(ae), 0);
770 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
771 assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
772 assertEqualMem(&file2_buff[file2_size + 1 - sizeof(file2_test_txt)],
773 file2_test_txt, sizeof(file2_test_txt) - 1);
776 assertA(1 == archive_read_next_header(a, &ae));
777 assertEqualInt(2, archive_file_count(a));
778 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
779 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
784 DEFINE_TEST(test_read_format_rar_windows)
787 const char reffile[] = "test_read_format_rar_windows.rar";
788 const char test_txt[] = "test text file\r\n";
789 int size = sizeof(test_txt)-1;
790 struct archive_entry *ae;
793 extract_reference_file(reffile);
794 assert((a = archive_read_new()) != NULL);
795 assertA(0 == archive_read_support_filter_all(a));
796 assertA(0 == archive_read_support_format_all(a));
797 assertA(0 == archive_read_open_filename(a, reffile, 10240));
800 assertA(0 == archive_read_next_header(a, &ae));
801 assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
802 assertA((int)archive_entry_mtime(ae));
803 assertA((int)archive_entry_ctime(ae));
804 assertA((int)archive_entry_atime(ae));
805 assertEqualInt(16, archive_entry_size(ae));
806 assertEqualInt(33188, archive_entry_mode(ae));
807 assertEqualInt(archive_entry_is_encrypted(ae), 0);
808 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
809 assertA(size == archive_read_data(a, buff, size));
810 assertEqualMem(buff, test_txt, size);
813 assertA(0 == archive_read_next_header(a, &ae));
814 assertEqualString("test.txt", archive_entry_pathname(ae));
815 assertA((int)archive_entry_mtime(ae));
816 assertA((int)archive_entry_ctime(ae));
817 assertA((int)archive_entry_atime(ae));
818 assertEqualInt(16, archive_entry_size(ae));
819 assertEqualInt(33188, archive_entry_mode(ae));
820 assertEqualInt(archive_entry_is_encrypted(ae), 0);
821 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
822 assertA(size == archive_read_data(a, buff, size));
823 assertEqualMem(buff, test_txt, size);
826 assertA(0 == archive_read_next_header(a, &ae));
827 assertEqualString("testshortcut.lnk", archive_entry_pathname(ae));
828 assertA((int)archive_entry_mtime(ae));
829 assertA((int)archive_entry_ctime(ae));
830 assertA((int)archive_entry_atime(ae));
831 assertEqualInt(sizeof(buff), archive_entry_size(ae));
832 assertEqualInt(33188, archive_entry_mode(ae));
833 assertEqualInt(archive_entry_is_encrypted(ae), 0);
834 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
835 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
838 assertA(0 == archive_read_next_header(a, &ae));
839 assertEqualString("testdir", archive_entry_pathname(ae));
840 assertA((int)archive_entry_mtime(ae));
841 assertA((int)archive_entry_ctime(ae));
842 assertA((int)archive_entry_atime(ae));
843 assertEqualInt(0, archive_entry_size(ae));
844 assertEqualInt(16877, archive_entry_mode(ae));
845 assertEqualInt(archive_entry_is_encrypted(ae), 0);
846 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
849 assertA(0 == archive_read_next_header(a, &ae));
850 assertEqualString("testemptydir", archive_entry_pathname(ae));
851 assertA((int)archive_entry_mtime(ae));
852 assertA((int)archive_entry_ctime(ae));
853 assertA((int)archive_entry_atime(ae));
854 assertEqualInt(0, archive_entry_size(ae));
855 assertEqualInt(16877, archive_entry_mode(ae));
856 assertEqualInt(archive_entry_is_encrypted(ae), 0);
857 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
860 assertA(1 == archive_read_next_header(a, &ae));
861 assertEqualInt(5, archive_file_count(a));
862 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
863 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
866 DEFINE_TEST(test_read_format_rar_multivolume)
868 const char *reffiles[] =
870 "test_read_format_rar_multivolume.part0001.rar",
871 "test_read_format_rar_multivolume.part0002.rar",
872 "test_read_format_rar_multivolume.part0003.rar",
873 "test_read_format_rar_multivolume.part0004.rar",
876 int file1_size = 241647978, offset = 0;
878 const char file1_test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n"
880 char file2_buff[20111];
881 int file2_size = sizeof(file2_buff);
882 const char file2_test_txt[] = "<P STYLE=\"margin-bottom: 0in\"><BR>\n"
887 int file3_size = sizeof(file3_buff);
888 const char file3_test_txt[] = "test text document\r\n";
889 struct archive_entry *ae;
892 extract_reference_files(reffiles);
893 assert((a = archive_read_new()) != NULL);
894 assertA(0 == archive_read_support_filter_all(a));
895 assertA(0 == archive_read_support_format_all(a));
896 assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
899 assertA(0 == archive_read_next_header(a, &ae));
900 assertEqualString("ppmd_lzss_conversion_test.txt",
901 archive_entry_pathname(ae));
902 assertA((int)archive_entry_mtime(ae));
903 assertA((int)archive_entry_ctime(ae));
904 assertA((int)archive_entry_atime(ae));
905 assertEqualInt(file1_size, archive_entry_size(ae));
906 assertEqualInt(33188, archive_entry_mode(ae));
907 assertEqualInt(archive_entry_is_encrypted(ae), 0);
908 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
909 while (offset + (int)sizeof(buff) < file1_size)
911 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
912 offset += sizeof(buff);
914 assertA(file1_size - offset ==
915 archive_read_data(a, buff, file1_size - offset));
916 assertEqualMem(buff, file1_test_txt, file1_size - offset);
919 assertA(0 == archive_read_next_header(a, &ae));
920 assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
921 assertA((int)archive_entry_mtime(ae));
922 assertA((int)archive_entry_ctime(ae));
923 assertA((int)archive_entry_atime(ae));
924 assertEqualInt(file2_size, archive_entry_size(ae));
925 assertEqualInt(33188, archive_entry_mode(ae));
926 assertEqualInt(archive_entry_is_encrypted(ae), 0);
927 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
928 assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
929 assertEqualMem(&file2_buff[file2_size - sizeof(file2_test_txt) + 1],
930 file2_test_txt, sizeof(file2_test_txt) - 1);
933 assertA(0 == archive_read_next_header(a, &ae));
934 assertEqualString("testlink", archive_entry_pathname(ae));
935 assertA((int)archive_entry_mtime(ae));
936 assertA((int)archive_entry_ctime(ae));
937 assertA((int)archive_entry_atime(ae));
938 assertEqualInt(0, archive_entry_size(ae));
939 assertEqualInt(41471, archive_entry_mode(ae));
940 assertEqualInt(archive_entry_is_encrypted(ae), 0);
941 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
942 assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
943 assertEqualIntA(a, 0, archive_read_data(a, file2_buff, 30));
946 assertA(0 == archive_read_next_header(a, &ae));
947 assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
948 assertA((int)archive_entry_mtime(ae));
949 assertA((int)archive_entry_ctime(ae));
950 assertA((int)archive_entry_atime(ae));
951 assertEqualInt(file3_size, archive_entry_size(ae));
952 assertEqualInt(33188, archive_entry_mode(ae));
953 assertEqualInt(archive_entry_is_encrypted(ae), 0);
954 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
955 assertA(file3_size == archive_read_data(a, file3_buff, file3_size));
956 assertEqualMem(&file3_buff[file3_size + 1 - sizeof(file3_test_txt)],
957 file3_test_txt, sizeof(file3_test_txt) - 1);
960 assertA(0 == archive_read_next_header(a, &ae));
961 assertEqualString("testdir/LibarchiveAddingTest.html",
962 archive_entry_pathname(ae));
963 assertA((int)archive_entry_mtime(ae));
964 assertA((int)archive_entry_ctime(ae));
965 assertA((int)archive_entry_atime(ae));
966 assertEqualInt(file2_size, archive_entry_size(ae));
967 assertEqualInt(33188, archive_entry_mode(ae));
968 assertEqualInt(archive_entry_is_encrypted(ae), 0);
969 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
970 assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
971 assertEqualMem(&file2_buff[file2_size - sizeof(file2_test_txt) + 1],
972 file2_test_txt, sizeof(file2_test_txt) - 1);
975 assertA(0 == archive_read_next_header(a, &ae));
976 assertEqualString("testdir", archive_entry_pathname(ae));
977 assertA((int)archive_entry_mtime(ae));
978 assertA((int)archive_entry_ctime(ae));
979 assertA((int)archive_entry_atime(ae));
980 assertEqualInt(0, archive_entry_size(ae));
981 assertEqualInt(16877, archive_entry_mode(ae));
982 assertEqualInt(archive_entry_is_encrypted(ae), 0);
983 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
985 /* Seventh header. */
986 assertA(0 == archive_read_next_header(a, &ae));
987 assertEqualString("testemptydir", archive_entry_pathname(ae));
988 assertA((int)archive_entry_mtime(ae));
989 assertA((int)archive_entry_ctime(ae));
990 assertA((int)archive_entry_atime(ae));
991 assertEqualInt(0, archive_entry_size(ae));
992 assertEqualInt(16877, archive_entry_mode(ae));
993 assertEqualInt(archive_entry_is_encrypted(ae), 0);
994 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
997 assertA(1 == archive_read_next_header(a, &ae));
998 assertEqualInt(7, archive_file_count(a));
999 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
1000 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
1003 DEFINE_TEST(test_read_format_rar_multivolume_skip)
1005 const char *reffiles[] =
1007 "test_read_format_rar_multivolume.part0001.rar",
1008 "test_read_format_rar_multivolume.part0002.rar",
1009 "test_read_format_rar_multivolume.part0003.rar",
1010 "test_read_format_rar_multivolume.part0004.rar",
1013 int file1_size = 241647978;
1014 int file2_size = 20111;
1015 int file3_size = 20;
1016 struct archive_entry *ae;
1019 extract_reference_files(reffiles);
1020 assert((a = archive_read_new()) != NULL);
1021 assertA(0 == archive_read_support_filter_all(a));
1022 assertA(0 == archive_read_support_format_all(a));
1023 assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
1026 assertA(0 == archive_read_next_header(a, &ae));
1027 assertEqualString("ppmd_lzss_conversion_test.txt",
1028 archive_entry_pathname(ae));
1029 assertA((int)archive_entry_mtime(ae));
1030 assertA((int)archive_entry_ctime(ae));
1031 assertA((int)archive_entry_atime(ae));
1032 assertEqualInt(file1_size, archive_entry_size(ae));
1033 assertEqualInt(33188, archive_entry_mode(ae));
1034 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1035 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1037 /* Second header. */
1038 assertA(0 == archive_read_next_header(a, &ae));
1039 assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
1040 assertA((int)archive_entry_mtime(ae));
1041 assertA((int)archive_entry_ctime(ae));
1042 assertA((int)archive_entry_atime(ae));
1043 assertEqualInt(file2_size, archive_entry_size(ae));
1044 assertEqualInt(33188, archive_entry_mode(ae));
1045 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1046 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1049 assertA(0 == archive_read_next_header(a, &ae));
1050 assertEqualString("testlink", archive_entry_pathname(ae));
1051 assertA((int)archive_entry_mtime(ae));
1052 assertA((int)archive_entry_ctime(ae));
1053 assertA((int)archive_entry_atime(ae));
1054 assertEqualInt(0, archive_entry_size(ae));
1055 assertEqualInt(41471, archive_entry_mode(ae));
1056 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1057 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1058 assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
1060 /* Fourth header. */
1061 assertA(0 == archive_read_next_header(a, &ae));
1062 assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
1063 assertA((int)archive_entry_mtime(ae));
1064 assertA((int)archive_entry_ctime(ae));
1065 assertA((int)archive_entry_atime(ae));
1066 assertEqualInt(file3_size, archive_entry_size(ae));
1067 assertEqualInt(33188, archive_entry_mode(ae));
1068 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1069 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1072 assertA(0 == archive_read_next_header(a, &ae));
1073 assertEqualString("testdir/LibarchiveAddingTest.html",
1074 archive_entry_pathname(ae));
1075 assertA((int)archive_entry_mtime(ae));
1076 assertA((int)archive_entry_ctime(ae));
1077 assertA((int)archive_entry_atime(ae));
1078 assertEqualInt(file2_size, archive_entry_size(ae));
1079 assertEqualInt(33188, archive_entry_mode(ae));
1080 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1081 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1084 assertA(0 == archive_read_next_header(a, &ae));
1085 assertEqualString("testdir", archive_entry_pathname(ae));
1086 assertA((int)archive_entry_mtime(ae));
1087 assertA((int)archive_entry_ctime(ae));
1088 assertA((int)archive_entry_atime(ae));
1089 assertEqualInt(0, archive_entry_size(ae));
1090 assertEqualInt(16877, archive_entry_mode(ae));
1091 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1092 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1094 /* Seventh header. */
1095 assertA(0 == archive_read_next_header(a, &ae));
1096 assertEqualString("testemptydir", archive_entry_pathname(ae));
1097 assertA((int)archive_entry_mtime(ae));
1098 assertA((int)archive_entry_ctime(ae));
1099 assertA((int)archive_entry_atime(ae));
1100 assertEqualInt(0, archive_entry_size(ae));
1101 assertEqualInt(16877, archive_entry_mode(ae));
1102 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1103 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1106 assertA(1 == archive_read_next_header(a, &ae));
1107 assertEqualInt(7, archive_file_count(a));
1108 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
1109 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
1112 DEFINE_TEST(test_read_format_rar_sfx)
1115 const char reffile[] = "test_read_format_rar_sfx.exe";
1116 const char test_txt[] = "test text file\r\n";
1117 int size = sizeof(test_txt)-1;
1118 struct archive_entry *ae;
1121 extract_reference_file(reffile);
1122 assert((a = archive_read_new()) != NULL);
1123 assertA(0 == archive_read_support_filter_all(a));
1124 assertA(0 == archive_read_support_format_all(a));
1125 assertA(0 == archive_read_open_filename(a, reffile, 10240));
1128 assertA(0 == archive_read_next_header(a, &ae));
1129 assertEqualString("test.txt", archive_entry_pathname(ae));
1130 assertA((int)archive_entry_mtime(ae));
1131 assertA((int)archive_entry_ctime(ae));
1132 assertA((int)archive_entry_atime(ae));
1133 assertEqualInt(16, archive_entry_size(ae));
1134 assertEqualInt(33188, archive_entry_mode(ae));
1135 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1136 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1137 assertA(size == archive_read_data(a, buff, size));
1138 assertEqualMem(buff, test_txt, size);
1140 /* Second header. */
1141 assertA(0 == archive_read_next_header(a, &ae));
1142 assertEqualString("testshortcut.lnk", archive_entry_pathname(ae));
1143 assertA((int)archive_entry_mtime(ae));
1144 assertA((int)archive_entry_ctime(ae));
1145 assertA((int)archive_entry_atime(ae));
1146 assertEqualInt(sizeof(buff), archive_entry_size(ae));
1147 assertEqualInt(33188, archive_entry_mode(ae));
1148 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1149 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1150 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1153 assertA(0 == archive_read_next_header(a, &ae));
1154 assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
1155 assertA((int)archive_entry_mtime(ae));
1156 assertA((int)archive_entry_ctime(ae));
1157 assertA((int)archive_entry_atime(ae));
1158 assertEqualInt(16, archive_entry_size(ae));
1159 assertEqualInt(33188, archive_entry_mode(ae));
1160 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1161 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1162 assertA(size == archive_read_data(a, buff, size));
1163 assertEqualMem(buff, test_txt, size);
1165 /* Fourth header. */
1166 assertA(0 == archive_read_next_header(a, &ae));
1167 assertEqualString("testdir", archive_entry_pathname(ae));
1168 assertA((int)archive_entry_mtime(ae));
1169 assertA((int)archive_entry_ctime(ae));
1170 assertA((int)archive_entry_atime(ae));
1171 assertEqualInt(0, archive_entry_size(ae));
1172 assertEqualInt(16877, archive_entry_mode(ae));
1173 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1174 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1177 assertA(0 == archive_read_next_header(a, &ae));
1178 assertEqualString("testemptydir", archive_entry_pathname(ae));
1179 assertA((int)archive_entry_mtime(ae));
1180 assertA((int)archive_entry_ctime(ae));
1181 assertA((int)archive_entry_atime(ae));
1182 assertEqualInt(0, archive_entry_size(ae));
1183 assertEqualInt(16877, archive_entry_mode(ae));
1184 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1185 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1188 assertA(1 == archive_read_next_header(a, &ae));
1189 assertEqualInt(5, archive_file_count(a));
1190 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
1191 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
1194 DEFINE_TEST(test_read_format_rar_multivolume_stored_file)
1196 const char *reffiles[] =
1198 "test_rar_multivolume_single_file.part1.rar",
1199 "test_rar_multivolume_single_file.part2.rar",
1200 "test_rar_multivolume_single_file.part3.rar",
1203 char file_buff[20111];
1204 int file_size = sizeof(file_buff);
1205 const char file_test_txt[] = "<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1209 struct archive_entry *ae;
1212 extract_reference_files(reffiles);
1213 assert((a = archive_read_new()) != NULL);
1214 assertA(0 == archive_read_support_filter_all(a));
1215 assertA(0 == archive_read_support_format_all(a));
1216 assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
1219 assertA(0 == archive_read_next_header(a, &ae));
1220 assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
1221 assertA((int)archive_entry_mtime(ae));
1222 assertA((int)archive_entry_ctime(ae));
1223 assertA((int)archive_entry_atime(ae));
1224 assertEqualInt(file_size, archive_entry_size(ae));
1225 assertEqualInt(33188, archive_entry_mode(ae));
1226 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1227 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1228 assertA(file_size == archive_read_data(a, file_buff, file_size));
1229 assertEqualMem(&file_buff[file_size - sizeof(file_test_txt) + 1],
1230 file_test_txt, sizeof(file_test_txt) - 1);
1233 assertA(1 == archive_read_next_header(a, &ae));
1234 assertEqualInt(1, archive_file_count(a));
1235 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
1236 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
1239 DEFINE_TEST(test_read_format_rar_multivolume_stored_file_skip)
1241 const char *reffiles[] =
1243 "test_rar_multivolume_single_file.part1.rar",
1244 "test_rar_multivolume_single_file.part2.rar",
1245 "test_rar_multivolume_single_file.part3.rar",
1248 int file_size = 20111;
1249 struct archive_entry *ae;
1252 extract_reference_files(reffiles);
1253 assert((a = archive_read_new()) != NULL);
1254 assertA(0 == archive_read_support_filter_all(a));
1255 assertA(0 == archive_read_support_format_all(a));
1256 assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
1259 assertA(0 == archive_read_next_header(a, &ae));
1260 assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
1261 assertA((int)archive_entry_mtime(ae));
1262 assertA((int)archive_entry_ctime(ae));
1263 assertA((int)archive_entry_atime(ae));
1264 assertEqualInt(file_size, archive_entry_size(ae));
1265 assertEqualInt(33188, archive_entry_mode(ae));
1266 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1267 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1270 assertA(1 == archive_read_next_header(a, &ae));
1271 assertEqualInt(1, archive_file_count(a));
1272 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
1273 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
1276 DEFINE_TEST(test_read_format_rar_multivolume_seek_data)
1278 const char *reffiles[] =
1280 "test_rar_multivolume_single_file.part1.rar",
1281 "test_rar_multivolume_single_file.part2.rar",
1282 "test_rar_multivolume_single_file.part3.rar",
1286 int file_size = 20111;
1287 const char file_test_txt1[] = "d. \n</P>\n<P STYLE=\"margin-bottom: 0in\">"
1288 "<BR>\n</P>\n</BODY>\n</HTML>";
1289 const char file_test_txt2[] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4."
1290 "0 Transitional//EN\">\n<";
1291 const char file_test_txt3[] = "mplify writing such tests,\ntry to use plat"
1292 "form-independent codin";
1293 const char file_test_txt4[] = "lString</TT> in the example above)\ngenerat"
1294 "e detailed log message";
1295 const char file_test_txt5[] = "SS=\"western\">make check</TT> will usually"
1296 " run\n\tall of the tests.";
1297 struct archive_entry *ae;
1300 extract_reference_files(reffiles);
1301 assert((a = archive_read_new()) != NULL);
1302 assertA(0 == archive_read_support_filter_all(a));
1303 assertA(0 == archive_read_support_format_all(a));
1304 assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
1307 assertA(0 == archive_read_next_header(a, &ae));
1308 assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
1309 assertA((int)archive_entry_mtime(ae));
1310 assertA((int)archive_entry_ctime(ae));
1311 assertA((int)archive_entry_atime(ae));
1312 assertEqualInt(file_size, archive_entry_size(ae));
1313 assertEqualInt(33188, archive_entry_mode(ae));
1314 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1315 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1317 /* Seek to the end minus 64 bytes */
1318 assertA(file_size - (int)sizeof(buff) ==
1319 archive_seek_data(a, file_size - (int)sizeof(buff), SEEK_SET));
1320 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1321 assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1);
1323 /* Seek back to the beginning */
1324 assertA(0 == archive_seek_data(a, 0, SEEK_SET));
1325 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1326 assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1);
1328 /* Seek to the middle of the combined data block */
1329 assertA(10054 == archive_seek_data(a, 10054, SEEK_SET));
1330 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1331 assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1);
1333 /* Seek to 32 bytes before the end of the first data sub-block */
1334 assertA(6860 == archive_seek_data(a, 6860, SEEK_SET));
1335 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1336 assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1);
1338 /* Seek to 32 bytes before the end of the second data sub-block */
1339 assertA(13752 == archive_seek_data(a, 13752, SEEK_SET));
1340 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1341 assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1);
1343 /* Use various combinations of SEEK_SET, SEEK_CUR, and SEEK_END */
1344 assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
1345 assertEqualInt(0, archive_seek_data(a, 0, SEEK_SET));
1346 assertEqualInt(0, archive_seek_data(a, 0, SEEK_CUR));
1347 assertEqualInt(-1, archive_seek_data(a, -10, SEEK_CUR));
1348 assertEqualInt(10, archive_seek_data(a, 10, SEEK_CUR));
1349 assertEqualInt(-1, archive_seek_data(a, -20, SEEK_CUR));
1350 assertEqualInt(10, archive_seek_data(a, 0, SEEK_CUR));
1351 assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
1352 assertEqualInt(file_size - 20, archive_seek_data(a, -20, SEEK_END));
1353 assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_END));
1354 assertEqualInt(file_size + 40, archive_seek_data(a, 0, SEEK_CUR));
1355 assertEqualInt(file_size + 40 + 20, archive_seek_data(a, 20, SEEK_CUR));
1356 assertEqualInt(file_size + 40 + 20 + 20, archive_seek_data(a, 20, SEEK_CUR));
1357 assertEqualInt(file_size + 20, archive_seek_data(a, 20, SEEK_END));
1358 assertEqualInt(file_size - 20, archive_seek_data(a, -20, SEEK_END));
1361 * Attempt to read from the end of the file. These should return
1362 * 0 for end of file.
1364 assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
1365 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1366 assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
1367 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1369 /* Seek to the end minus 64 bytes */
1370 assertA(0 == archive_seek_data(a, 0, SEEK_SET));
1371 assertA(file_size - (int)sizeof(buff) ==
1372 archive_seek_data(a, -(int)sizeof(buff), SEEK_END));
1373 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1374 assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1);
1376 /* The file position should be at the end of the file here */
1377 assertA(file_size == archive_seek_data(a, 0, SEEK_CUR));
1379 /* Seek back to the beginning */
1380 assertA(0 == archive_seek_data(a, -file_size, SEEK_CUR));
1381 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1382 assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1);
1384 /* Seek to the middle of the combined data block */
1385 assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR));
1386 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1387 assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1);
1389 /* Seek to 32 bytes before the end of the first data sub-block */
1390 assertA(6860 == archive_seek_data(a, 6860 - (10054 + (int)sizeof(buff)),
1392 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1393 assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1);
1395 /* Seek to 32 bytes before the end of the second data sub-block */
1396 assertA(13752 == archive_seek_data(a, 13752 - file_size, SEEK_END));
1397 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1398 assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1);
1401 assertA(1 == archive_read_next_header(a, &ae));
1402 assertEqualInt(1, archive_file_count(a));
1403 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
1404 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
1407 DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files)
1409 const char *reffiles[] =
1411 "test_rar_multivolume_multiple_files.part1.rar",
1412 "test_rar_multivolume_multiple_files.part2.rar",
1413 "test_rar_multivolume_multiple_files.part3.rar",
1414 "test_rar_multivolume_multiple_files.part4.rar",
1415 "test_rar_multivolume_multiple_files.part5.rar",
1416 "test_rar_multivolume_multiple_files.part6.rar",
1420 int file_size = 20111;
1421 const char file_test_txt1[] = "d. \n</P>\n<P STYLE=\"margin-bottom: 0in\">"
1422 "<BR>\n</P>\n</BODY>\n</HTML>";
1423 const char file_test_txt2[] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4."
1424 "0 Transitional//EN\">\n<";
1425 const char file_test_txt3[] = "mplify writing such tests,\ntry to use plat"
1426 "form-independent codin";
1427 const char file_test_txt4[] = "\nfailures. \n</P>\n<H1 CLASS=\"western\"><"
1428 "A NAME=\"Life_cycle_of_a_te";
1429 const char file_test_txt5[] = "LE=\"margin-bottom: 0in\">DO use runtime te"
1430 "sts for platform\n\tfeatu";
1431 const char file_test_txt6[] = "rough test suite is essential\nboth for ver"
1432 "ifying new ports and f";
1433 const char file_test_txt7[] = "m: 0in\">Creates a temporary directory\n\tw"
1434 "hose name matches the na";
1435 const char file_test_txt8[] = "lt\ninput file and verify the results. Thes"
1436 "e use <TT CLASS=\"weste";
1437 struct archive_entry *ae;
1440 extract_reference_files(reffiles);
1441 assert((a = archive_read_new()) != NULL);
1442 assertA(0 == archive_read_support_filter_all(a));
1443 assertA(0 == archive_read_support_format_all(a));
1444 assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
1447 assertA(0 == archive_read_next_header(a, &ae));
1448 assertEqualString("LibarchiveAddingTest2.html", archive_entry_pathname(ae));
1449 assertA((int)archive_entry_mtime(ae));
1450 assertA((int)archive_entry_ctime(ae));
1451 assertA((int)archive_entry_atime(ae));
1452 assertEqualInt(file_size, archive_entry_size(ae));
1453 assertEqualInt(33188, archive_entry_mode(ae));
1454 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1455 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1457 /* Attempt to read past end of file */
1458 assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
1459 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1460 assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
1461 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1463 /* Seek to the end minus 64 bytes */
1464 assertA(file_size - (int)sizeof(buff) ==
1465 archive_seek_data(a, -(int)sizeof(buff), SEEK_END));
1466 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1467 assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1);
1469 /* Seek back to the beginning */
1470 assertA(0 == archive_seek_data(a, -file_size, SEEK_END));
1471 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1472 assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1);
1474 /* Seek to the middle of the combined data block */
1475 assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR));
1476 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1477 assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1);
1479 /* Seek to 32 bytes before the end of the first data sub-block */
1480 assertA(7027 == archive_seek_data(a, 7027 - (10054 + (int)sizeof(buff)),
1482 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1483 assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1);
1485 /* Seek to 32 bytes before the end of the second data sub-block */
1486 assertA(14086 == archive_seek_data(a, 14086 - file_size, SEEK_END));
1487 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1488 assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1);
1490 /* Attempt to read past end of file */
1491 assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
1492 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1493 assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
1494 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1496 /* Second header. */
1497 assertA(0 == archive_read_next_header(a, &ae));
1498 assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
1499 assertA((int)archive_entry_mtime(ae));
1500 assertA((int)archive_entry_ctime(ae));
1501 assertA((int)archive_entry_atime(ae));
1502 assertEqualInt(file_size, archive_entry_size(ae));
1503 assertEqualInt(33188, archive_entry_mode(ae));
1504 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1505 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1507 /* Attempt to read past end of file */
1508 assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
1509 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1510 assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
1511 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1513 /* Seek to the end minus 64 bytes */
1514 assertA(file_size - (int)sizeof(buff) ==
1515 archive_seek_data(a, file_size - (int)sizeof(buff), SEEK_SET));
1516 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1517 assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1);
1519 /* Seek back to the beginning */
1520 assertA(0 == archive_seek_data(a, 0, SEEK_SET));
1521 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1522 assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1);
1524 /* Seek to the middle of the combined data block */
1525 assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR));
1526 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1527 assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1);
1529 /* Seek to 32 bytes before the end of the first data sub-block */
1530 assertA(969 == archive_seek_data(a, 969 - (10054 + (int)sizeof(buff)), SEEK_CUR));
1531 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1532 assertEqualMem(buff, file_test_txt6, sizeof(file_test_txt4) - 1);
1534 /* Seek to 32 bytes before the end of the second data sub-block */
1535 assertA(8029 == archive_seek_data(a, 8029 - file_size, SEEK_END));
1536 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1537 assertEqualMem(buff, file_test_txt7, sizeof(file_test_txt5) - 1);
1539 /* Seek to 32 bytes before the end of the third data sub-block */
1540 assertA(15089 == archive_seek_data(a, 15089 - file_size, SEEK_END));
1541 assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
1542 assertEqualMem(buff, file_test_txt8, sizeof(file_test_txt5) - 1);
1544 /* Attempt to read past end of file */
1545 assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
1546 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1547 assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
1548 assertA(0 == archive_read_data(a, buff, sizeof(buff)));
1551 assertA(1 == archive_read_next_header(a, &ae));
1552 assertEqualInt(2, archive_file_count(a));
1553 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
1554 assertEqualInt(ARCHIVE_OK, archive_read_free(a));
1558 test_read_format_rar_multivolume_uncompressed_files_helper(struct archive *a)
1562 /* Do checks for seeks/reads past beginning and end of file */
1563 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
1564 memset(buff, 0, sizeof(buff));
1565 assertEqualIntA(a, -1, archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_SET));
1566 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_CUR));
1567 assertEqualIntA(a, (sizeof(buff)-1),
1568 archive_read_data(a, buff, (sizeof(buff)-1)));
1569 assertEqualIntA(a, (sizeof(buff)-1), archive_seek_data(a, 0, SEEK_CUR));
1570 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD "
1571 "HTML 4.0 Transitional//EN\">\n", buff);
1572 memset(buff, 0, sizeof(buff));
1573 assertEqualIntA(a, -1, archive_seek_data(a, -(((int)sizeof(buff)-1)*2), SEEK_CUR));
1574 assertEqualIntA(a, (sizeof(buff)-1), archive_seek_data(a, 0, SEEK_CUR));
1575 assertEqualIntA(a, (sizeof(buff)-1),
1576 archive_read_data(a, buff, (sizeof(buff)-1)));
1577 assertEqualIntA(a, ((sizeof(buff)-1)*2), archive_seek_data(a, 0, SEEK_CUR));
1578 assertEqualStringA(a, "<HTML>\n<HEAD>\n\t<META HTTP-EQUIV=\"CONTENT-TYPE\" "
1579 "CONTENT=\"text/ht", buff);
1580 memset(buff, 0, sizeof(buff));
1581 assertEqualIntA(a, -1, archive_seek_data(a, -(20111+32), SEEK_END));
1582 assertEqualIntA(a, ((sizeof(buff)-1)*2), archive_seek_data(a, 0, SEEK_CUR));
1583 assertEqualIntA(a, (sizeof(buff)-1),
1584 archive_read_data(a, buff, (sizeof(buff)-1)));
1585 assertEqualIntA(a, ((sizeof(buff)-1)*3), archive_seek_data(a, 0, SEEK_CUR));
1586 assertEqualStringA(a, "ml; charset=utf-8\">\n\t<TITLE></TITLE>\n\t<META "
1587 "NAME=\"GENERATOR\" CO", buff);
1589 memset(buff, 0, sizeof(buff));
1590 assertEqualIntA(a, 20111, archive_seek_data(a, 20111, SEEK_SET));
1591 assertEqualIntA(a, 20111, archive_seek_data(a, 0, SEEK_CUR));
1592 assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1)));
1593 assertEqualIntA(a, 20111, archive_seek_data(a, 0, SEEK_CUR));
1594 assertEqualStringA(a, "", buff);
1595 memset(buff, 0, sizeof(buff));
1596 assertEqualIntA(a, 20111 + (sizeof(buff)-1),
1597 archive_seek_data(a, (sizeof(buff)-1), SEEK_CUR));
1598 assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1)));
1599 assertEqualIntA(a, 20111 + (sizeof(buff)-1),
1600 archive_seek_data(a, 0, SEEK_CUR));
1601 assertEqualStringA(a, "", buff);
1602 memset(buff, 0, sizeof(buff));
1603 assertEqualIntA(a, 20111 + ((sizeof(buff)-1)*2),
1604 archive_seek_data(a, ((sizeof(buff)-1)*2), SEEK_END));
1605 assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1)));
1606 assertEqualIntA(a, 20111 + ((sizeof(buff)-1)*2),
1607 archive_seek_data(a, 0, SEEK_CUR));
1608 assertEqualStringA(a, "", buff);
1611 DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
1613 const char *reffiles[] =
1615 "test_rar_multivolume_uncompressed_files.part01.rar",
1616 "test_rar_multivolume_uncompressed_files.part02.rar",
1617 "test_rar_multivolume_uncompressed_files.part03.rar",
1618 "test_rar_multivolume_uncompressed_files.part04.rar",
1619 "test_rar_multivolume_uncompressed_files.part05.rar",
1620 "test_rar_multivolume_uncompressed_files.part06.rar",
1621 "test_rar_multivolume_uncompressed_files.part07.rar",
1622 "test_rar_multivolume_uncompressed_files.part08.rar",
1623 "test_rar_multivolume_uncompressed_files.part09.rar",
1624 "test_rar_multivolume_uncompressed_files.part10.rar",
1630 struct archive_entry *ae;
1632 extract_reference_files(reffiles);
1633 assert((a = archive_read_new()) != NULL);
1634 assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
1635 assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
1636 assertEqualIntA(a, ARCHIVE_OK,
1637 archive_read_open_filenames(a, reffiles, 10240));
1642 assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
1643 assertEqualStringA(a, "testdir/LibarchiveAddingTest2.html",
1644 archive_entry_pathname(ae));
1645 assertA((int)archive_entry_mtime(ae));
1646 assertA((int)archive_entry_ctime(ae));
1647 assertA((int)archive_entry_atime(ae));
1648 assertEqualIntA(a, 20111, archive_entry_size(ae));
1649 assertEqualIntA(a, 33188, archive_entry_mode(ae));
1650 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1651 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1653 test_read_format_rar_multivolume_uncompressed_files_helper(a);
1655 /* Read from the beginning to the end of the file */
1656 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
1659 memset(buff, 0, sizeof(buff));
1660 bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
1661 } while (bytes_read > 0);
1663 /* Seek to the end minus (sizeof(buff)-1) bytes */
1664 memset(buff, 0, sizeof(buff));
1665 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1666 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
1667 assertEqualIntA(a, (sizeof(buff)-1),
1668 archive_read_data(a, buff, (sizeof(buff)-1)));
1669 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1670 "</P>\n</BODY>\n</HTML>", buff);
1672 /* Seek back to the beginning */
1673 memset(buff, 0, sizeof(buff));
1674 assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
1675 assertEqualIntA(a, (sizeof(buff)-1),
1676 archive_read_data(a, buff, (sizeof(buff)-1)));
1677 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1678 "Transitional//EN\">\n", buff);
1680 /* Test that SEEK_SET works correctly between data blocks */
1681 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
1682 memset(buff, 0, sizeof(buff));
1683 assertEqualIntA(a, 13164,
1684 archive_seek_data(a, 13164, SEEK_SET));
1685 assertEqualIntA(a, (sizeof(buff)-1),
1686 archive_read_data(a, buff, (sizeof(buff)-1)));
1687 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1688 "assertEqualMem to test equalit", buff);
1690 memset(buff, 0, sizeof(buff));
1691 assertEqualIntA(a, 0,
1692 archive_seek_data(a, 0, SEEK_SET));
1693 assertEqualIntA(a, (sizeof(buff)-1),
1694 archive_read_data(a, buff, (sizeof(buff)-1)));
1695 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1696 "Transitional//EN\">\n", buff);
1698 memset(buff, 0, sizeof(buff));
1699 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1700 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
1701 assertEqualIntA(a, (sizeof(buff)-1),
1702 archive_read_data(a, buff, (sizeof(buff)-1)));
1703 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1704 "</P>\n</BODY>\n</HTML>", buff);
1706 memset(buff, 0, sizeof(buff));
1707 assertEqualIntA(a, 13164,
1708 archive_seek_data(a, 13164, SEEK_SET));
1709 assertEqualIntA(a, (sizeof(buff)-1),
1710 archive_read_data(a, buff, (sizeof(buff)-1)));
1711 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1712 "assertEqualMem to test equalit", buff);
1714 memset(buff, 0, sizeof(buff));
1715 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1716 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
1717 assertEqualIntA(a, (sizeof(buff)-1),
1718 archive_read_data(a, buff, (sizeof(buff)-1)));
1719 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1720 "</P>\n</BODY>\n</HTML>", buff);
1722 memset(buff, 0, sizeof(buff));
1723 assertEqualIntA(a, 0,
1724 archive_seek_data(a, 0, SEEK_SET));
1725 assertEqualIntA(a, (sizeof(buff)-1),
1726 archive_read_data(a, buff, (sizeof(buff)-1)));
1727 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1728 "Transitional//EN\">\n", buff);
1730 memset(buff, 0, sizeof(buff));
1731 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1732 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
1733 assertEqualIntA(a, (sizeof(buff)-1),
1734 archive_read_data(a, buff, (sizeof(buff)-1)));
1735 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1736 "</P>\n</BODY>\n</HTML>", buff);
1738 memset(buff, 0, sizeof(buff));
1739 assertEqualIntA(a, 13164,
1740 archive_seek_data(a, 13164, SEEK_SET));
1741 assertEqualIntA(a, (sizeof(buff)-1),
1742 archive_read_data(a, buff, (sizeof(buff)-1)));
1743 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1744 "assertEqualMem to test equalit", buff);
1746 memset(buff, 0, sizeof(buff));
1747 assertEqualIntA(a, 0,
1748 archive_seek_data(a, 0, SEEK_SET));
1749 assertEqualIntA(a, (sizeof(buff)-1),
1750 archive_read_data(a, buff, (sizeof(buff)-1)));
1751 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1752 "Transitional//EN\">\n", buff);
1754 /* Test that SEEK_CUR works correctly between data blocks */
1755 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
1756 memset(buff, 0, sizeof(buff));
1757 assertEqualIntA(a, 13164,
1758 archive_seek_data(a, 13164, SEEK_CUR));
1759 assertEqualIntA(a, (sizeof(buff)-1),
1760 archive_read_data(a, buff, (sizeof(buff)-1)));
1761 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1762 "assertEqualMem to test equalit", buff);
1764 memset(buff, 0, sizeof(buff));
1765 assertEqualIntA(a, 0,
1766 archive_seek_data(a, -13227, SEEK_CUR));
1767 assertEqualIntA(a, (sizeof(buff)-1),
1768 archive_read_data(a, buff, (sizeof(buff)-1)));
1769 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1770 "Transitional//EN\">\n", buff);
1772 memset(buff, 0, sizeof(buff));
1773 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1774 archive_seek_data(a, 19985, SEEK_CUR));
1775 assertEqualIntA(a, (sizeof(buff)-1),
1776 archive_read_data(a, buff, (sizeof(buff)-1)));
1777 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1778 "</P>\n</BODY>\n</HTML>", buff);
1780 memset(buff, 0, sizeof(buff));
1781 assertEqualIntA(a, 13164,
1782 archive_seek_data(a, -6947, SEEK_CUR));
1783 assertEqualIntA(a, (sizeof(buff)-1),
1784 archive_read_data(a, buff, (sizeof(buff)-1)));
1785 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1786 "assertEqualMem to test equalit", buff);
1788 memset(buff, 0, sizeof(buff));
1789 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1790 archive_seek_data(a, 6821, SEEK_CUR));
1791 assertEqualIntA(a, (sizeof(buff)-1),
1792 archive_read_data(a, buff, (sizeof(buff)-1)));
1793 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1794 "</P>\n</BODY>\n</HTML>", buff);
1796 memset(buff, 0, sizeof(buff));
1797 assertEqualIntA(a, 0,
1798 archive_seek_data(a, -20111, SEEK_CUR));
1799 assertEqualIntA(a, (sizeof(buff)-1),
1800 archive_read_data(a, buff, (sizeof(buff)-1)));
1801 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1802 "Transitional//EN\">\n", buff);
1804 memset(buff, 0, sizeof(buff));
1805 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1806 archive_seek_data(a, 19985, SEEK_CUR));
1807 assertEqualIntA(a, (sizeof(buff)-1),
1808 archive_read_data(a, buff, (sizeof(buff)-1)));
1809 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1810 "</P>\n</BODY>\n</HTML>", buff);
1812 memset(buff, 0, sizeof(buff));
1813 assertEqualIntA(a, 13164,
1814 archive_seek_data(a, -6947, SEEK_CUR));
1815 assertEqualIntA(a, (sizeof(buff)-1),
1816 archive_read_data(a, buff, (sizeof(buff)-1)));
1817 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1818 "assertEqualMem to test equalit", buff);
1820 memset(buff, 0, sizeof(buff));
1821 assertEqualIntA(a, 0,
1822 archive_seek_data(a, -13227, SEEK_CUR));
1823 assertEqualIntA(a, (sizeof(buff)-1),
1824 archive_read_data(a, buff, (sizeof(buff)-1)));
1825 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1826 "Transitional//EN\">\n", buff);
1828 /* Test that SEEK_END works correctly between data blocks */
1829 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
1830 memset(buff, 0, sizeof(buff));
1831 assertEqualIntA(a, 13164,
1832 archive_seek_data(a, -6947, SEEK_END));
1833 assertEqualIntA(a, (sizeof(buff)-1),
1834 archive_read_data(a, buff, (sizeof(buff)-1)));
1835 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1836 "assertEqualMem to test equalit", buff);
1838 memset(buff, 0, sizeof(buff));
1839 assertEqualIntA(a, 0,
1840 archive_seek_data(a, -20111, SEEK_END));
1841 assertEqualIntA(a, (sizeof(buff)-1),
1842 archive_read_data(a, buff, (sizeof(buff)-1)));
1843 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1844 "Transitional//EN\">\n", buff);
1846 memset(buff, 0, sizeof(buff));
1847 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1848 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
1849 assertEqualIntA(a, (sizeof(buff)-1),
1850 archive_read_data(a, buff, (sizeof(buff)-1)));
1851 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1852 "</P>\n</BODY>\n</HTML>", buff);
1854 memset(buff, 0, sizeof(buff));
1855 assertEqualIntA(a, 13164,
1856 archive_seek_data(a, -6947, SEEK_END));
1857 assertEqualIntA(a, (sizeof(buff)-1),
1858 archive_read_data(a, buff, (sizeof(buff)-1)));
1859 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1860 "assertEqualMem to test equalit", buff);
1862 memset(buff, 0, sizeof(buff));
1863 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1864 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
1865 assertEqualIntA(a, (sizeof(buff)-1),
1866 archive_read_data(a, buff, (sizeof(buff)-1)));
1867 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1868 "</P>\n</BODY>\n</HTML>", buff);
1870 memset(buff, 0, sizeof(buff));
1871 assertEqualIntA(a, 0,
1872 archive_seek_data(a, -20111, SEEK_END));
1873 assertEqualIntA(a, (sizeof(buff)-1),
1874 archive_read_data(a, buff, (sizeof(buff)-1)));
1875 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1876 "Transitional//EN\">\n", buff);
1878 memset(buff, 0, sizeof(buff));
1879 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1880 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
1881 assertEqualIntA(a, (sizeof(buff)-1),
1882 archive_read_data(a, buff, (sizeof(buff)-1)));
1883 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1884 "</P>\n</BODY>\n</HTML>", buff);
1886 memset(buff, 0, sizeof(buff));
1887 assertEqualIntA(a, 13164,
1888 archive_seek_data(a, -6947, SEEK_END));
1889 assertEqualIntA(a, (sizeof(buff)-1),
1890 archive_read_data(a, buff, (sizeof(buff)-1)));
1891 assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
1892 "assertEqualMem to test equalit", buff);
1894 memset(buff, 0, sizeof(buff));
1895 assertEqualIntA(a, 0,
1896 archive_seek_data(a, -20111, SEEK_END));
1897 assertEqualIntA(a, (sizeof(buff)-1),
1898 archive_read_data(a, buff, (sizeof(buff)-1)));
1899 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1900 "Transitional//EN\">\n", buff);
1902 test_read_format_rar_multivolume_uncompressed_files_helper(a);
1907 assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
1908 assertEqualStringA(a, "testdir/testsubdir/LibarchiveAddingTest2.html",
1909 archive_entry_pathname(ae));
1910 assertA((int)archive_entry_mtime(ae));
1911 assertA((int)archive_entry_ctime(ae));
1912 assertA((int)archive_entry_atime(ae));
1913 assertEqualIntA(a, 20111, archive_entry_size(ae));
1914 assertEqualIntA(a, 33188, archive_entry_mode(ae));
1915 assertEqualInt(archive_entry_is_encrypted(ae), 0);
1916 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
1918 test_read_format_rar_multivolume_uncompressed_files_helper(a);
1920 /* Read from the beginning to the end of the file */
1921 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
1924 memset(buff, 0, sizeof(buff));
1925 bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
1926 } while (bytes_read > 0);
1928 /* Seek to the end minus (sizeof(buff)-1) bytes */
1929 memset(buff, 0, sizeof(buff));
1930 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1931 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
1932 assertEqualIntA(a, (sizeof(buff)-1),
1933 archive_read_data(a, buff, (sizeof(buff)-1)));
1934 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1935 "</P>\n</BODY>\n</HTML>", buff);
1937 /* Seek back to the beginning */
1938 memset(buff, 0, sizeof(buff));
1939 assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
1940 assertEqualIntA(a, (sizeof(buff)-1),
1941 archive_read_data(a, buff, (sizeof(buff)-1)));
1942 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1943 "Transitional//EN\">\n", buff);
1945 /* Test that SEEK_SET works correctly between data blocks */
1946 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
1947 memset(buff, 0, sizeof(buff));
1948 assertEqualIntA(a, 6162,
1949 archive_seek_data(a, 6162, SEEK_SET));
1950 assertEqualIntA(a, (sizeof(buff)-1),
1951 archive_read_data(a, buff, (sizeof(buff)-1)));
1952 assertEqualStringA(a, "arguments satisfy certain conditions. "
1953 "If the assertion fails--f", buff);
1955 memset(buff, 0, sizeof(buff));
1956 assertEqualIntA(a, 19347,
1957 archive_seek_data(a, 19347, SEEK_SET));
1958 assertEqualIntA(a, (sizeof(buff)-1),
1959 archive_read_data(a, buff, (sizeof(buff)-1)));
1960 assertEqualStringA(a, " when a block being written out by\n"
1961 "the archive writer is the sa", buff);
1963 memset(buff, 0, sizeof(buff));
1964 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1965 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
1966 assertEqualIntA(a, (sizeof(buff)-1),
1967 archive_read_data(a, buff, (sizeof(buff)-1)));
1968 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
1969 "</P>\n</BODY>\n</HTML>", buff);
1971 memset(buff, 0, sizeof(buff));
1972 assertEqualIntA(a, 19347,
1973 archive_seek_data(a, 19347, SEEK_SET));
1974 assertEqualIntA(a, (sizeof(buff)-1),
1975 archive_read_data(a, buff, (sizeof(buff)-1)));
1976 assertEqualStringA(a, " when a block being written out by\n"
1977 "the archive writer is the sa", buff);
1979 memset(buff, 0, sizeof(buff));
1980 assertEqualIntA(a, 6162,
1981 archive_seek_data(a, 6162, SEEK_SET));
1982 assertEqualIntA(a, (sizeof(buff)-1),
1983 archive_read_data(a, buff, (sizeof(buff)-1)));
1984 assertEqualStringA(a, "arguments satisfy certain conditions. "
1985 "If the assertion fails--f", buff);
1987 memset(buff, 0, sizeof(buff));
1988 assertEqualIntA(a, 0,
1989 archive_seek_data(a, 0, SEEK_SET));
1990 assertEqualIntA(a, (sizeof(buff)-1),
1991 archive_read_data(a, buff, (sizeof(buff)-1)));
1992 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
1993 "Transitional//EN\">\n", buff);
1995 memset(buff, 0, sizeof(buff));
1996 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
1997 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
1998 assertEqualIntA(a, (sizeof(buff)-1),
1999 archive_read_data(a, buff, (sizeof(buff)-1)));
2000 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2001 "</P>\n</BODY>\n</HTML>", buff);
2003 memset(buff, 0, sizeof(buff));
2004 assertEqualIntA(a, 6162,
2005 archive_seek_data(a, 6162, SEEK_SET));
2006 assertEqualIntA(a, (sizeof(buff)-1),
2007 archive_read_data(a, buff, (sizeof(buff)-1)));
2008 assertEqualStringA(a, "arguments satisfy certain conditions. "
2009 "If the assertion fails--f", buff);
2011 memset(buff, 0, sizeof(buff));
2012 assertEqualIntA(a, 19347,
2013 archive_seek_data(a, 19347, SEEK_SET));
2014 assertEqualIntA(a, (sizeof(buff)-1),
2015 archive_read_data(a, buff, (sizeof(buff)-1)));
2016 assertEqualStringA(a, " when a block being written out by\n"
2017 "the archive writer is the sa", buff);
2019 memset(buff, 0, sizeof(buff));
2020 assertEqualIntA(a, 0,
2021 archive_seek_data(a, 0, SEEK_SET));
2022 assertEqualIntA(a, (sizeof(buff)-1),
2023 archive_read_data(a, buff, (sizeof(buff)-1)));
2024 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2025 "Transitional//EN\">\n", buff);
2027 memset(buff, 0, sizeof(buff));
2028 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2029 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
2030 assertEqualIntA(a, (sizeof(buff)-1),
2031 archive_read_data(a, buff, (sizeof(buff)-1)));
2032 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2033 "</P>\n</BODY>\n</HTML>", buff);
2035 memset(buff, 0, sizeof(buff));
2036 assertEqualIntA(a, 0,
2037 archive_seek_data(a, 0, SEEK_SET));
2038 assertEqualIntA(a, (sizeof(buff)-1),
2039 archive_read_data(a, buff, (sizeof(buff)-1)));
2040 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2041 "Transitional//EN\">\n", buff);
2043 memset(buff, 0, sizeof(buff));
2044 assertEqualIntA(a, 19347,
2045 archive_seek_data(a, 19347, SEEK_SET));
2046 assertEqualIntA(a, (sizeof(buff)-1),
2047 archive_read_data(a, buff, (sizeof(buff)-1)));
2048 assertEqualStringA(a, " when a block being written out by\n"
2049 "the archive writer is the sa", buff);
2051 memset(buff, 0, sizeof(buff));
2052 assertEqualIntA(a, 6162,
2053 archive_seek_data(a, 6162, SEEK_SET));
2054 assertEqualIntA(a, (sizeof(buff)-1),
2055 archive_read_data(a, buff, (sizeof(buff)-1)));
2056 assertEqualStringA(a, "arguments satisfy certain conditions. "
2057 "If the assertion fails--f", buff);
2059 /* Test that SEEK_CUR works correctly between data blocks */
2060 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2061 memset(buff, 0, sizeof(buff));
2062 assertEqualIntA(a, 6162,
2063 archive_seek_data(a, 6162, SEEK_CUR));
2064 assertEqualIntA(a, (sizeof(buff)-1),
2065 archive_read_data(a, buff, (sizeof(buff)-1)));
2066 assertEqualStringA(a, "arguments satisfy certain conditions. "
2067 "If the assertion fails--f", buff);
2069 memset(buff, 0, sizeof(buff));
2070 assertEqualIntA(a, 19347,
2071 archive_seek_data(a, 13122, SEEK_CUR));
2072 assertEqualIntA(a, (sizeof(buff)-1),
2073 archive_read_data(a, buff, (sizeof(buff)-1)));
2074 assertEqualStringA(a, " when a block being written out by\n"
2075 "the archive writer is the sa", buff);
2077 memset(buff, 0, sizeof(buff));
2078 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2079 archive_seek_data(a, 638, SEEK_CUR));
2080 assertEqualIntA(a, (sizeof(buff)-1),
2081 archive_read_data(a, buff, (sizeof(buff)-1)));
2082 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2083 "</P>\n</BODY>\n</HTML>", buff);
2085 memset(buff, 0, sizeof(buff));
2086 assertEqualIntA(a, 19347,
2087 archive_seek_data(a, -764, SEEK_CUR));
2088 assertEqualIntA(a, (sizeof(buff)-1),
2089 archive_read_data(a, buff, (sizeof(buff)-1)));
2090 assertEqualStringA(a, " when a block being written out by\n"
2091 "the archive writer is the sa", buff);
2093 memset(buff, 0, sizeof(buff));
2094 assertEqualIntA(a, 6162,
2095 archive_seek_data(a, -13248, SEEK_CUR));
2096 assertEqualIntA(a, (sizeof(buff)-1),
2097 archive_read_data(a, buff, (sizeof(buff)-1)));
2098 assertEqualStringA(a, "arguments satisfy certain conditions. "
2099 "If the assertion fails--f", buff);
2101 memset(buff, 0, sizeof(buff));
2102 assertEqualIntA(a, 0,
2103 archive_seek_data(a, -6225, SEEK_CUR));
2104 assertEqualIntA(a, (sizeof(buff)-1),
2105 archive_read_data(a, buff, (sizeof(buff)-1)));
2106 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2107 "Transitional//EN\">\n", buff);
2109 memset(buff, 0, sizeof(buff));
2110 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2111 archive_seek_data(a, 19985, SEEK_CUR));
2112 assertEqualIntA(a, (sizeof(buff)-1),
2113 archive_read_data(a, buff, (sizeof(buff)-1)));
2114 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2115 "</P>\n</BODY>\n</HTML>", buff);
2117 memset(buff, 0, sizeof(buff));
2118 assertEqualIntA(a, 6162,
2119 archive_seek_data(a, -13949, SEEK_CUR));
2120 assertEqualIntA(a, (sizeof(buff)-1),
2121 archive_read_data(a, buff, (sizeof(buff)-1)));
2122 assertEqualStringA(a, "arguments satisfy certain conditions. "
2123 "If the assertion fails--f", buff);
2125 memset(buff, 0, sizeof(buff));
2126 assertEqualIntA(a, 19347,
2127 archive_seek_data(a, 13122, SEEK_CUR));
2128 assertEqualIntA(a, (sizeof(buff)-1),
2129 archive_read_data(a, buff, (sizeof(buff)-1)));
2130 assertEqualStringA(a, " when a block being written out by\n"
2131 "the archive writer is the sa", buff);
2133 memset(buff, 0, sizeof(buff));
2134 assertEqualIntA(a, 0,
2135 archive_seek_data(a, -19410, SEEK_CUR));
2136 assertEqualIntA(a, (sizeof(buff)-1),
2137 archive_read_data(a, buff, (sizeof(buff)-1)));
2138 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2139 "Transitional//EN\">\n", buff);
2141 memset(buff, 0, sizeof(buff));
2142 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2143 archive_seek_data(a, 19985, SEEK_CUR));
2144 assertEqualIntA(a, (sizeof(buff)-1),
2145 archive_read_data(a, buff, (sizeof(buff)-1)));
2146 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2147 "</P>\n</BODY>\n</HTML>", buff);
2149 memset(buff, 0, sizeof(buff));
2150 assertEqualIntA(a, 0,
2151 archive_seek_data(a, -20111, SEEK_CUR));
2152 assertEqualIntA(a, (sizeof(buff)-1),
2153 archive_read_data(a, buff, (sizeof(buff)-1)));
2154 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2155 "Transitional//EN\">\n", buff);
2157 memset(buff, 0, sizeof(buff));
2158 assertEqualIntA(a, 19347,
2159 archive_seek_data(a, 19284, SEEK_CUR));
2160 assertEqualIntA(a, (sizeof(buff)-1),
2161 archive_read_data(a, buff, (sizeof(buff)-1)));
2162 assertEqualStringA(a, " when a block being written out by\n"
2163 "the archive writer is the sa", buff);
2165 memset(buff, 0, sizeof(buff));
2166 assertEqualIntA(a, 6162,
2167 archive_seek_data(a, -13248, SEEK_CUR));
2168 assertEqualIntA(a, (sizeof(buff)-1),
2169 archive_read_data(a, buff, (sizeof(buff)-1)));
2170 assertEqualStringA(a, "arguments satisfy certain conditions. "
2171 "If the assertion fails--f", buff);
2173 /* Test that SEEK_END works correctly between data blocks */
2174 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2175 memset(buff, 0, sizeof(buff));
2176 assertEqualIntA(a, 6162,
2177 archive_seek_data(a, -13949, SEEK_END));
2178 assertEqualIntA(a, (sizeof(buff)-1),
2179 archive_read_data(a, buff, (sizeof(buff)-1)));
2180 assertEqualStringA(a, "arguments satisfy certain conditions. "
2181 "If the assertion fails--f", buff);
2183 memset(buff, 0, sizeof(buff));
2184 assertEqualIntA(a, 19347,
2185 archive_seek_data(a, -764, SEEK_END));
2186 assertEqualIntA(a, (sizeof(buff)-1),
2187 archive_read_data(a, buff, (sizeof(buff)-1)));
2188 assertEqualStringA(a, " when a block being written out by\n"
2189 "the archive writer is the sa", buff);
2191 memset(buff, 0, sizeof(buff));
2192 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2193 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2194 assertEqualIntA(a, (sizeof(buff)-1),
2195 archive_read_data(a, buff, (sizeof(buff)-1)));
2196 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2197 "</P>\n</BODY>\n</HTML>", buff);
2199 memset(buff, 0, sizeof(buff));
2200 assertEqualIntA(a, 19347,
2201 archive_seek_data(a, -764, SEEK_END));
2202 assertEqualIntA(a, (sizeof(buff)-1),
2203 archive_read_data(a, buff, (sizeof(buff)-1)));
2204 assertEqualStringA(a, " when a block being written out by\n"
2205 "the archive writer is the sa", buff);
2207 memset(buff, 0, sizeof(buff));
2208 assertEqualIntA(a, 6162,
2209 archive_seek_data(a, -13949, SEEK_END));
2210 assertEqualIntA(a, (sizeof(buff)-1),
2211 archive_read_data(a, buff, (sizeof(buff)-1)));
2212 assertEqualStringA(a, "arguments satisfy certain conditions. "
2213 "If the assertion fails--f", buff);
2215 memset(buff, 0, sizeof(buff));
2216 assertEqualIntA(a, 0,
2217 archive_seek_data(a, -20111, SEEK_END));
2218 assertEqualIntA(a, (sizeof(buff)-1),
2219 archive_read_data(a, buff, (sizeof(buff)-1)));
2220 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2221 "Transitional//EN\">\n", buff);
2223 memset(buff, 0, sizeof(buff));
2224 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2225 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2226 assertEqualIntA(a, (sizeof(buff)-1),
2227 archive_read_data(a, buff, (sizeof(buff)-1)));
2228 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2229 "</P>\n</BODY>\n</HTML>", buff);
2231 memset(buff, 0, sizeof(buff));
2232 assertEqualIntA(a, 6162,
2233 archive_seek_data(a, -13949, SEEK_END));
2234 assertEqualIntA(a, (sizeof(buff)-1),
2235 archive_read_data(a, buff, (sizeof(buff)-1)));
2236 assertEqualStringA(a, "arguments satisfy certain conditions. "
2237 "If the assertion fails--f", buff);
2239 memset(buff, 0, sizeof(buff));
2240 assertEqualIntA(a, 19347,
2241 archive_seek_data(a, -764, SEEK_END));
2242 assertEqualIntA(a, (sizeof(buff)-1),
2243 archive_read_data(a, buff, (sizeof(buff)-1)));
2244 assertEqualStringA(a, " when a block being written out by\n"
2245 "the archive writer is the sa", buff);
2247 memset(buff, 0, sizeof(buff));
2248 assertEqualIntA(a, 0,
2249 archive_seek_data(a, -20111, SEEK_END));
2250 assertEqualIntA(a, (sizeof(buff)-1),
2251 archive_read_data(a, buff, (sizeof(buff)-1)));
2252 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2253 "Transitional//EN\">\n", buff);
2255 memset(buff, 0, sizeof(buff));
2256 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2257 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2258 assertEqualIntA(a, (sizeof(buff)-1),
2259 archive_read_data(a, buff, (sizeof(buff)-1)));
2260 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2261 "</P>\n</BODY>\n</HTML>", buff);
2263 memset(buff, 0, sizeof(buff));
2264 assertEqualIntA(a, 0,
2265 archive_seek_data(a, -20111, SEEK_END));
2266 assertEqualIntA(a, (sizeof(buff)-1),
2267 archive_read_data(a, buff, (sizeof(buff)-1)));
2268 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2269 "Transitional//EN\">\n", buff);
2271 memset(buff, 0, sizeof(buff));
2272 assertEqualIntA(a, 19347,
2273 archive_seek_data(a, -764, SEEK_END));
2274 assertEqualIntA(a, (sizeof(buff)-1),
2275 archive_read_data(a, buff, (sizeof(buff)-1)));
2276 assertEqualStringA(a, " when a block being written out by\n"
2277 "the archive writer is the sa", buff);
2279 memset(buff, 0, sizeof(buff));
2280 assertEqualIntA(a, 6162,
2281 archive_seek_data(a, -13949, SEEK_END));
2282 assertEqualIntA(a, (sizeof(buff)-1),
2283 archive_read_data(a, buff, (sizeof(buff)-1)));
2284 assertEqualStringA(a, "arguments satisfy certain conditions. "
2285 "If the assertion fails--f", buff);
2287 test_read_format_rar_multivolume_uncompressed_files_helper(a);
2292 assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
2293 assertEqualStringA(a, "LibarchiveAddingTest2.html",
2294 archive_entry_pathname(ae));
2295 assertA((int)archive_entry_mtime(ae));
2296 assertA((int)archive_entry_ctime(ae));
2297 assertA((int)archive_entry_atime(ae));
2298 assertEqualIntA(a, 20111, archive_entry_size(ae));
2299 assertEqualIntA(a, 33188, archive_entry_mode(ae));
2300 assertEqualInt(archive_entry_is_encrypted(ae), 0);
2301 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
2303 test_read_format_rar_multivolume_uncompressed_files_helper(a);
2305 /* Read from the beginning to the end of the file */
2306 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2309 memset(buff, 0, sizeof(buff));
2310 bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
2311 } while (bytes_read > 0);
2313 /* Seek to the end minus (sizeof(buff)-1) bytes */
2314 memset(buff, 0, sizeof(buff));
2315 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2316 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2317 assertEqualIntA(a, (sizeof(buff)-1),
2318 archive_read_data(a, buff, (sizeof(buff)-1)));
2319 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2320 "</P>\n</BODY>\n</HTML>", buff);
2322 /* Seek back to the beginning */
2323 memset(buff, 0, sizeof(buff));
2324 assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
2325 assertEqualIntA(a, (sizeof(buff)-1),
2326 archive_read_data(a, buff, (sizeof(buff)-1)));
2327 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2328 "Transitional//EN\">\n", buff);
2330 /* Test that SEEK_SET works correctly between data blocks */
2331 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2332 memset(buff, 0, sizeof(buff));
2333 assertEqualIntA(a, 12353,
2334 archive_seek_data(a, 12353, SEEK_SET));
2335 assertEqualIntA(a, (sizeof(buff)-1),
2336 archive_read_data(a, buff, (sizeof(buff)-1)));
2337 assertEqualStringA(a, " 0.2in\"> "
2338 "extract_reference_file("test_foo.tar", buff);
2340 memset(buff, 0, sizeof(buff));
2341 assertEqualIntA(a, 0,
2342 archive_seek_data(a, 0, SEEK_SET));
2343 assertEqualIntA(a, (sizeof(buff)-1),
2344 archive_read_data(a, buff, (sizeof(buff)-1)));
2345 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2346 "Transitional//EN\">\n", buff);
2348 memset(buff, 0, sizeof(buff));
2349 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2350 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
2351 assertEqualIntA(a, (sizeof(buff)-1),
2352 archive_read_data(a, buff, (sizeof(buff)-1)));
2353 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2354 "</P>\n</BODY>\n</HTML>", buff);
2356 memset(buff, 0, sizeof(buff));
2357 assertEqualIntA(a, 12353,
2358 archive_seek_data(a, 12353, SEEK_SET));
2359 assertEqualIntA(a, (sizeof(buff)-1),
2360 archive_read_data(a, buff, (sizeof(buff)-1)));
2361 assertEqualStringA(a, " 0.2in\"> "
2362 "extract_reference_file("test_foo.tar", buff);
2364 memset(buff, 0, sizeof(buff));
2365 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2366 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
2367 assertEqualIntA(a, (sizeof(buff)-1),
2368 archive_read_data(a, buff, (sizeof(buff)-1)));
2369 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2370 "</P>\n</BODY>\n</HTML>", buff);
2372 memset(buff, 0, sizeof(buff));
2373 assertEqualIntA(a, 0,
2374 archive_seek_data(a, 0, SEEK_SET));
2375 assertEqualIntA(a, (sizeof(buff)-1),
2376 archive_read_data(a, buff, (sizeof(buff)-1)));
2377 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2378 "Transitional//EN\">\n", buff);
2380 memset(buff, 0, sizeof(buff));
2381 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2382 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
2383 assertEqualIntA(a, (sizeof(buff)-1),
2384 archive_read_data(a, buff, (sizeof(buff)-1)));
2385 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2386 "</P>\n</BODY>\n</HTML>", buff);
2388 memset(buff, 0, sizeof(buff));
2389 assertEqualIntA(a, 12353,
2390 archive_seek_data(a, 12353, SEEK_SET));
2391 assertEqualIntA(a, (sizeof(buff)-1),
2392 archive_read_data(a, buff, (sizeof(buff)-1)));
2393 assertEqualStringA(a, " 0.2in\"> "
2394 "extract_reference_file("test_foo.tar", buff);
2396 memset(buff, 0, sizeof(buff));
2397 assertEqualIntA(a, 0,
2398 archive_seek_data(a, 0, SEEK_SET));
2399 assertEqualIntA(a, (sizeof(buff)-1),
2400 archive_read_data(a, buff, (sizeof(buff)-1)));
2401 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2402 "Transitional//EN\">\n", buff);
2404 /* Test that SEEK_CUR works correctly between data blocks */
2405 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2406 memset(buff, 0, sizeof(buff));
2407 assertEqualIntA(a, 12353,
2408 archive_seek_data(a, 12353, SEEK_CUR));
2409 assertEqualIntA(a, (sizeof(buff)-1),
2410 archive_read_data(a, buff, (sizeof(buff)-1)));
2411 assertEqualStringA(a, " 0.2in\"> "
2412 "extract_reference_file("test_foo.tar", buff);
2414 memset(buff, 0, sizeof(buff));
2415 assertEqualIntA(a, 0,
2416 archive_seek_data(a, -12416, SEEK_CUR));
2417 assertEqualIntA(a, (sizeof(buff)-1),
2418 archive_read_data(a, buff, (sizeof(buff)-1)));
2419 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2420 "Transitional//EN\">\n", buff);
2422 memset(buff, 0, sizeof(buff));
2423 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2424 archive_seek_data(a, 19985, SEEK_CUR));
2425 assertEqualIntA(a, (sizeof(buff)-1),
2426 archive_read_data(a, buff, (sizeof(buff)-1)));
2427 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2428 "</P>\n</BODY>\n</HTML>", buff);
2430 memset(buff, 0, sizeof(buff));
2431 assertEqualIntA(a, 12353,
2432 archive_seek_data(a, -7758, SEEK_CUR));
2433 assertEqualIntA(a, (sizeof(buff)-1),
2434 archive_read_data(a, buff, (sizeof(buff)-1)));
2435 assertEqualStringA(a, " 0.2in\"> "
2436 "extract_reference_file("test_foo.tar", buff);
2438 memset(buff, 0, sizeof(buff));
2439 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2440 archive_seek_data(a, 7632, SEEK_CUR));
2441 assertEqualIntA(a, (sizeof(buff)-1),
2442 archive_read_data(a, buff, (sizeof(buff)-1)));
2443 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2444 "</P>\n</BODY>\n</HTML>", buff);
2446 memset(buff, 0, sizeof(buff));
2447 assertEqualIntA(a, 0,
2448 archive_seek_data(a, -20111, SEEK_CUR));
2449 assertEqualIntA(a, (sizeof(buff)-1),
2450 archive_read_data(a, buff, (sizeof(buff)-1)));
2451 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2452 "Transitional//EN\">\n", buff);
2454 memset(buff, 0, sizeof(buff));
2455 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2456 archive_seek_data(a, 19985, SEEK_CUR));
2457 assertEqualIntA(a, (sizeof(buff)-1),
2458 archive_read_data(a, buff, (sizeof(buff)-1)));
2459 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2460 "</P>\n</BODY>\n</HTML>", buff);
2462 memset(buff, 0, sizeof(buff));
2463 assertEqualIntA(a, 12353,
2464 archive_seek_data(a, -7758, SEEK_CUR));
2465 assertEqualIntA(a, (sizeof(buff)-1),
2466 archive_read_data(a, buff, (sizeof(buff)-1)));
2467 assertEqualStringA(a, " 0.2in\"> "
2468 "extract_reference_file("test_foo.tar", buff);
2470 memset(buff, 0, sizeof(buff));
2471 assertEqualIntA(a, 0,
2472 archive_seek_data(a, -12416, SEEK_CUR));
2473 assertEqualIntA(a, (sizeof(buff)-1),
2474 archive_read_data(a, buff, (sizeof(buff)-1)));
2475 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2476 "Transitional//EN\">\n", buff);
2478 /* Test that SEEK_END works correctly between data blocks */
2479 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2480 memset(buff, 0, sizeof(buff));
2481 assertEqualIntA(a, 12353,
2482 archive_seek_data(a, -7758, SEEK_END));
2483 assertEqualIntA(a, (sizeof(buff)-1),
2484 archive_read_data(a, buff, (sizeof(buff)-1)));
2485 assertEqualStringA(a, " 0.2in\"> "
2486 "extract_reference_file("test_foo.tar", buff);
2488 memset(buff, 0, sizeof(buff));
2489 assertEqualIntA(a, 0,
2490 archive_seek_data(a, -20111, SEEK_END));
2491 assertEqualIntA(a, (sizeof(buff)-1),
2492 archive_read_data(a, buff, (sizeof(buff)-1)));
2493 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2494 "Transitional//EN\">\n", buff);
2496 memset(buff, 0, sizeof(buff));
2497 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2498 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2499 assertEqualIntA(a, (sizeof(buff)-1),
2500 archive_read_data(a, buff, (sizeof(buff)-1)));
2501 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2502 "</P>\n</BODY>\n</HTML>", buff);
2504 memset(buff, 0, sizeof(buff));
2505 assertEqualIntA(a, 12353,
2506 archive_seek_data(a, -7758, SEEK_END));
2507 assertEqualIntA(a, (sizeof(buff)-1),
2508 archive_read_data(a, buff, (sizeof(buff)-1)));
2509 assertEqualStringA(a, " 0.2in\"> "
2510 "extract_reference_file("test_foo.tar", buff);
2512 memset(buff, 0, sizeof(buff));
2513 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2514 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2515 assertEqualIntA(a, (sizeof(buff)-1),
2516 archive_read_data(a, buff, (sizeof(buff)-1)));
2517 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2518 "</P>\n</BODY>\n</HTML>", buff);
2520 memset(buff, 0, sizeof(buff));
2521 assertEqualIntA(a, 0,
2522 archive_seek_data(a, -20111, SEEK_END));
2523 assertEqualIntA(a, (sizeof(buff)-1),
2524 archive_read_data(a, buff, (sizeof(buff)-1)));
2525 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2526 "Transitional//EN\">\n", buff);
2528 memset(buff, 0, sizeof(buff));
2529 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2530 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2531 assertEqualIntA(a, (sizeof(buff)-1),
2532 archive_read_data(a, buff, (sizeof(buff)-1)));
2533 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2534 "</P>\n</BODY>\n</HTML>", buff);
2536 memset(buff, 0, sizeof(buff));
2537 assertEqualIntA(a, 12353,
2538 archive_seek_data(a, -7758, SEEK_END));
2539 assertEqualIntA(a, (sizeof(buff)-1),
2540 archive_read_data(a, buff, (sizeof(buff)-1)));
2541 assertEqualStringA(a, " 0.2in\"> "
2542 "extract_reference_file("test_foo.tar", buff);
2544 memset(buff, 0, sizeof(buff));
2545 assertEqualIntA(a, 0,
2546 archive_seek_data(a, -20111, SEEK_END));
2547 assertEqualIntA(a, (sizeof(buff)-1),
2548 archive_read_data(a, buff, (sizeof(buff)-1)));
2549 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2550 "Transitional//EN\">\n", buff);
2552 test_read_format_rar_multivolume_uncompressed_files_helper(a);
2557 assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
2558 assertEqualStringA(a, "testdir/LibarchiveAddingTest.html",
2559 archive_entry_pathname(ae));
2560 assertA((int)archive_entry_mtime(ae));
2561 assertA((int)archive_entry_ctime(ae));
2562 assertA((int)archive_entry_atime(ae));
2563 assertEqualIntA(a, 20111, archive_entry_size(ae));
2564 assertEqualIntA(a, 33188, archive_entry_mode(ae));
2565 assertEqualInt(archive_entry_is_encrypted(ae), 0);
2566 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
2568 test_read_format_rar_multivolume_uncompressed_files_helper(a);
2570 /* Read from the beginning to the end of the file */
2571 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2574 memset(buff, 0, sizeof(buff));
2575 bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
2576 } while (bytes_read > 0);
2578 /* Seek to the end minus (sizeof(buff)-1) bytes */
2579 memset(buff, 0, sizeof(buff));
2580 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2581 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2582 assertEqualIntA(a, (sizeof(buff)-1),
2583 archive_read_data(a, buff, (sizeof(buff)-1)));
2584 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2585 "</P>\n</BODY>\n</HTML>", buff);
2587 /* Seek back to the beginning */
2588 memset(buff, 0, sizeof(buff));
2589 assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
2590 assertEqualIntA(a, (sizeof(buff)-1),
2591 archive_read_data(a, buff, (sizeof(buff)-1)));
2592 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2593 "Transitional//EN\">\n", buff);
2595 /* Test that SEEK_SET works correctly between data blocks */
2596 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2597 memset(buff, 0, sizeof(buff));
2598 assertEqualIntA(a, 5371,
2599 archive_seek_data(a, 5371, SEEK_SET));
2600 assertEqualIntA(a, (sizeof(buff)-1),
2601 archive_read_data(a, buff, (sizeof(buff)-1)));
2602 assertEqualStringA(a, "zip)\n {\n "
2603 "/* ... setup omitted ... */\n ", buff);
2605 memset(buff, 0, sizeof(buff));
2606 assertEqualIntA(a, 13165,
2607 archive_seek_data(a, 13165, SEEK_SET));
2608 assertEqualIntA(a, (sizeof(buff)-1),
2609 archive_read_data(a, buff, (sizeof(buff)-1)));
2610 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2611 "assertEqualMem to test equality", buff);
2613 memset(buff, 0, sizeof(buff));
2614 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2615 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
2616 assertEqualIntA(a, (sizeof(buff)-1),
2617 archive_read_data(a, buff, (sizeof(buff)-1)));
2618 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2619 "</P>\n</BODY>\n</HTML>", buff);
2621 memset(buff, 0, sizeof(buff));
2622 assertEqualIntA(a, 13165,
2623 archive_seek_data(a, 13165, SEEK_SET));
2624 assertEqualIntA(a, (sizeof(buff)-1),
2625 archive_read_data(a, buff, (sizeof(buff)-1)));
2626 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2627 "assertEqualMem to test equality", buff);
2629 memset(buff, 0, sizeof(buff));
2630 assertEqualIntA(a, 5371,
2631 archive_seek_data(a, 5371, SEEK_SET));
2632 assertEqualIntA(a, (sizeof(buff)-1),
2633 archive_read_data(a, buff, (sizeof(buff)-1)));
2634 assertEqualStringA(a, "zip)\n {\n "
2635 "/* ... setup omitted ... */\n ", buff);
2637 memset(buff, 0, sizeof(buff));
2638 assertEqualIntA(a, 0,
2639 archive_seek_data(a, 0, SEEK_SET));
2640 assertEqualIntA(a, (sizeof(buff)-1),
2641 archive_read_data(a, buff, (sizeof(buff)-1)));
2642 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2643 "Transitional//EN\">\n", buff);
2645 memset(buff, 0, sizeof(buff));
2646 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2647 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
2648 assertEqualIntA(a, (sizeof(buff)-1),
2649 archive_read_data(a, buff, (sizeof(buff)-1)));
2650 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2651 "</P>\n</BODY>\n</HTML>", buff);
2653 memset(buff, 0, sizeof(buff));
2654 assertEqualIntA(a, 5371,
2655 archive_seek_data(a, 5371, SEEK_SET));
2656 assertEqualIntA(a, (sizeof(buff)-1),
2657 archive_read_data(a, buff, (sizeof(buff)-1)));
2658 assertEqualStringA(a, "zip)\n {\n "
2659 "/* ... setup omitted ... */\n ", buff);
2661 memset(buff, 0, sizeof(buff));
2662 assertEqualIntA(a, 13165,
2663 archive_seek_data(a, 13165, SEEK_SET));
2664 assertEqualIntA(a, (sizeof(buff)-1),
2665 archive_read_data(a, buff, (sizeof(buff)-1)));
2666 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2667 "assertEqualMem to test equality", buff);
2669 memset(buff, 0, sizeof(buff));
2670 assertEqualIntA(a, 0,
2671 archive_seek_data(a, 0, SEEK_SET));
2672 assertEqualIntA(a, (sizeof(buff)-1),
2673 archive_read_data(a, buff, (sizeof(buff)-1)));
2674 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2675 "Transitional//EN\">\n", buff);
2677 memset(buff, 0, sizeof(buff));
2678 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2679 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
2680 assertEqualIntA(a, (sizeof(buff)-1),
2681 archive_read_data(a, buff, (sizeof(buff)-1)));
2682 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2683 "</P>\n</BODY>\n</HTML>", buff);
2685 memset(buff, 0, sizeof(buff));
2686 assertEqualIntA(a, 0,
2687 archive_seek_data(a, 0, SEEK_SET));
2688 assertEqualIntA(a, (sizeof(buff)-1),
2689 archive_read_data(a, buff, (sizeof(buff)-1)));
2690 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2691 "Transitional//EN\">\n", buff);
2693 memset(buff, 0, sizeof(buff));
2694 assertEqualIntA(a, 13165,
2695 archive_seek_data(a, 13165, SEEK_SET));
2696 assertEqualIntA(a, (sizeof(buff)-1),
2697 archive_read_data(a, buff, (sizeof(buff)-1)));
2698 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2699 "assertEqualMem to test equality", buff);
2701 memset(buff, 0, sizeof(buff));
2702 assertEqualIntA(a, 5371,
2703 archive_seek_data(a, 5371, SEEK_SET));
2704 assertEqualIntA(a, (sizeof(buff)-1),
2705 archive_read_data(a, buff, (sizeof(buff)-1)));
2706 assertEqualStringA(a, "zip)\n {\n "
2707 "/* ... setup omitted ... */\n ", buff);
2709 /* Test that SEEK_CUR works correctly between data blocks */
2710 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2711 memset(buff, 0, sizeof(buff));
2712 assertEqualIntA(a, 5371,
2713 archive_seek_data(a, 5371, SEEK_CUR));
2714 assertEqualIntA(a, (sizeof(buff)-1),
2715 archive_read_data(a, buff, (sizeof(buff)-1)));
2716 assertEqualStringA(a, "zip)\n {\n "
2717 "/* ... setup omitted ... */\n ", buff);
2719 memset(buff, 0, sizeof(buff));
2720 assertEqualIntA(a, 13165,
2721 archive_seek_data(a, 7731, SEEK_CUR));
2722 assertEqualIntA(a, (sizeof(buff)-1),
2723 archive_read_data(a, buff, (sizeof(buff)-1)));
2724 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2725 "assertEqualMem to test equality", buff);
2727 memset(buff, 0, sizeof(buff));
2728 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2729 archive_seek_data(a, 6820, SEEK_CUR));
2730 assertEqualIntA(a, (sizeof(buff)-1),
2731 archive_read_data(a, buff, (sizeof(buff)-1)));
2732 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2733 "</P>\n</BODY>\n</HTML>", buff);
2735 memset(buff, 0, sizeof(buff));
2736 assertEqualIntA(a, 13165,
2737 archive_seek_data(a, -6946, SEEK_CUR));
2738 assertEqualIntA(a, (sizeof(buff)-1),
2739 archive_read_data(a, buff, (sizeof(buff)-1)));
2740 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2741 "assertEqualMem to test equality", buff);
2743 memset(buff, 0, sizeof(buff));
2744 assertEqualIntA(a, 5371,
2745 archive_seek_data(a, -7857, SEEK_CUR));
2746 assertEqualIntA(a, (sizeof(buff)-1),
2747 archive_read_data(a, buff, (sizeof(buff)-1)));
2748 assertEqualStringA(a, "zip)\n {\n "
2749 "/* ... setup omitted ... */\n ", buff);
2751 memset(buff, 0, sizeof(buff));
2752 assertEqualIntA(a, 0,
2753 archive_seek_data(a, -5434, SEEK_CUR));
2754 assertEqualIntA(a, (sizeof(buff)-1),
2755 archive_read_data(a, buff, (sizeof(buff)-1)));
2756 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2757 "Transitional//EN\">\n", buff);
2759 memset(buff, 0, sizeof(buff));
2760 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2761 archive_seek_data(a, 19985, SEEK_CUR));
2762 assertEqualIntA(a, (sizeof(buff)-1),
2763 archive_read_data(a, buff, (sizeof(buff)-1)));
2764 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2765 "</P>\n</BODY>\n</HTML>", buff);
2767 memset(buff, 0, sizeof(buff));
2768 assertEqualIntA(a, 5371,
2769 archive_seek_data(a, -14740, SEEK_CUR));
2770 assertEqualIntA(a, (sizeof(buff)-1),
2771 archive_read_data(a, buff, (sizeof(buff)-1)));
2772 assertEqualStringA(a, "zip)\n {\n "
2773 "/* ... setup omitted ... */\n ", buff);
2775 memset(buff, 0, sizeof(buff));
2776 assertEqualIntA(a, 13165,
2777 archive_seek_data(a, 7731, SEEK_CUR));
2778 assertEqualIntA(a, (sizeof(buff)-1),
2779 archive_read_data(a, buff, (sizeof(buff)-1)));
2780 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2781 "assertEqualMem to test equality", buff);
2783 memset(buff, 0, sizeof(buff));
2784 assertEqualIntA(a, 0,
2785 archive_seek_data(a, -13228, SEEK_CUR));
2786 assertEqualIntA(a, (sizeof(buff)-1),
2787 archive_read_data(a, buff, (sizeof(buff)-1)));
2788 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2789 "Transitional//EN\">\n", buff);
2791 memset(buff, 0, sizeof(buff));
2792 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2793 archive_seek_data(a, 19985, SEEK_CUR));
2794 assertEqualIntA(a, (sizeof(buff)-1),
2795 archive_read_data(a, buff, (sizeof(buff)-1)));
2796 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2797 "</P>\n</BODY>\n</HTML>", buff);
2799 memset(buff, 0, sizeof(buff));
2800 assertEqualIntA(a, 0,
2801 archive_seek_data(a, -20111, SEEK_CUR));
2802 assertEqualIntA(a, (sizeof(buff)-1),
2803 archive_read_data(a, buff, (sizeof(buff)-1)));
2804 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2805 "Transitional//EN\">\n", buff);
2807 memset(buff, 0, sizeof(buff));
2808 assertEqualIntA(a, 13165,
2809 archive_seek_data(a, 13102, SEEK_CUR));
2810 assertEqualIntA(a, (sizeof(buff)-1),
2811 archive_read_data(a, buff, (sizeof(buff)-1)));
2812 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2813 "assertEqualMem to test equality", buff);
2815 memset(buff, 0, sizeof(buff));
2816 assertEqualIntA(a, 5371,
2817 archive_seek_data(a, -7857, SEEK_CUR));
2818 assertEqualIntA(a, (sizeof(buff)-1),
2819 archive_read_data(a, buff, (sizeof(buff)-1)));
2820 assertEqualStringA(a, "zip)\n {\n "
2821 "/* ... setup omitted ... */\n ", buff);
2823 /* Test that SEEK_END works correctly between data blocks */
2824 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2825 memset(buff, 0, sizeof(buff));
2826 assertEqualIntA(a, 5371,
2827 archive_seek_data(a, -14740, SEEK_END));
2828 assertEqualIntA(a, (sizeof(buff)-1),
2829 archive_read_data(a, buff, (sizeof(buff)-1)));
2830 assertEqualStringA(a, "zip)\n {\n "
2831 "/* ... setup omitted ... */\n ", buff);
2833 memset(buff, 0, sizeof(buff));
2834 assertEqualIntA(a, 13165,
2835 archive_seek_data(a, -6946, SEEK_END));
2836 assertEqualIntA(a, (sizeof(buff)-1),
2837 archive_read_data(a, buff, (sizeof(buff)-1)));
2838 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2839 "assertEqualMem to test equality", buff);
2841 memset(buff, 0, sizeof(buff));
2842 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2843 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2844 assertEqualIntA(a, (sizeof(buff)-1),
2845 archive_read_data(a, buff, (sizeof(buff)-1)));
2846 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2847 "</P>\n</BODY>\n</HTML>", buff);
2849 memset(buff, 0, sizeof(buff));
2850 assertEqualIntA(a, 13165,
2851 archive_seek_data(a, -6946, SEEK_END));
2852 assertEqualIntA(a, (sizeof(buff)-1),
2853 archive_read_data(a, buff, (sizeof(buff)-1)));
2854 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2855 "assertEqualMem to test equality", buff);
2857 memset(buff, 0, sizeof(buff));
2858 assertEqualIntA(a, 5371,
2859 archive_seek_data(a, -14740, SEEK_END));
2860 assertEqualIntA(a, (sizeof(buff)-1),
2861 archive_read_data(a, buff, (sizeof(buff)-1)));
2862 assertEqualStringA(a, "zip)\n {\n "
2863 "/* ... setup omitted ... */\n ", buff);
2865 memset(buff, 0, sizeof(buff));
2866 assertEqualIntA(a, 0,
2867 archive_seek_data(a, -20111, SEEK_END));
2868 assertEqualIntA(a, (sizeof(buff)-1),
2869 archive_read_data(a, buff, (sizeof(buff)-1)));
2870 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2871 "Transitional//EN\">\n", buff);
2873 memset(buff, 0, sizeof(buff));
2874 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2875 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2876 assertEqualIntA(a, (sizeof(buff)-1),
2877 archive_read_data(a, buff, (sizeof(buff)-1)));
2878 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2879 "</P>\n</BODY>\n</HTML>", buff);
2881 memset(buff, 0, sizeof(buff));
2882 assertEqualIntA(a, 5371,
2883 archive_seek_data(a, -14740, SEEK_END));
2884 assertEqualIntA(a, (sizeof(buff)-1),
2885 archive_read_data(a, buff, (sizeof(buff)-1)));
2886 assertEqualStringA(a, "zip)\n {\n "
2887 "/* ... setup omitted ... */\n ", buff);
2889 memset(buff, 0, sizeof(buff));
2890 assertEqualIntA(a, 13165,
2891 archive_seek_data(a, -6946, SEEK_END));
2892 assertEqualIntA(a, (sizeof(buff)-1),
2893 archive_read_data(a, buff, (sizeof(buff)-1)));
2894 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2895 "assertEqualMem to test equality", buff);
2897 memset(buff, 0, sizeof(buff));
2898 assertEqualIntA(a, 0,
2899 archive_seek_data(a, -20111, SEEK_END));
2900 assertEqualIntA(a, (sizeof(buff)-1),
2901 archive_read_data(a, buff, (sizeof(buff)-1)));
2902 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2903 "Transitional//EN\">\n", buff);
2905 memset(buff, 0, sizeof(buff));
2906 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2907 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2908 assertEqualIntA(a, (sizeof(buff)-1),
2909 archive_read_data(a, buff, (sizeof(buff)-1)));
2910 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2911 "</P>\n</BODY>\n</HTML>", buff);
2913 memset(buff, 0, sizeof(buff));
2914 assertEqualIntA(a, 0,
2915 archive_seek_data(a, -20111, SEEK_END));
2916 assertEqualIntA(a, (sizeof(buff)-1),
2917 archive_read_data(a, buff, (sizeof(buff)-1)));
2918 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2919 "Transitional//EN\">\n", buff);
2921 memset(buff, 0, sizeof(buff));
2922 assertEqualIntA(a, 13165,
2923 archive_seek_data(a, -6946, SEEK_END));
2924 assertEqualIntA(a, (sizeof(buff)-1),
2925 archive_read_data(a, buff, (sizeof(buff)-1)));
2926 assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
2927 "assertEqualMem to test equality", buff);
2929 memset(buff, 0, sizeof(buff));
2930 assertEqualIntA(a, 5371,
2931 archive_seek_data(a, -14740, SEEK_END));
2932 assertEqualIntA(a, (sizeof(buff)-1),
2933 archive_read_data(a, buff, (sizeof(buff)-1)));
2934 assertEqualStringA(a, "zip)\n {\n "
2935 "/* ... setup omitted ... */\n ", buff);
2937 test_read_format_rar_multivolume_uncompressed_files_helper(a);
2942 assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
2943 assertEqualStringA(a, "testdir/testsubdir/LibarchiveAddingTest.html",
2944 archive_entry_pathname(ae));
2945 assertA((int)archive_entry_mtime(ae));
2946 assertA((int)archive_entry_ctime(ae));
2947 assertA((int)archive_entry_atime(ae));
2948 assertEqualIntA(a, 20111, archive_entry_size(ae));
2949 assertEqualIntA(a, 33188, archive_entry_mode(ae));
2950 assertEqualInt(archive_entry_is_encrypted(ae), 0);
2951 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
2953 test_read_format_rar_multivolume_uncompressed_files_helper(a);
2955 /* Read from the beginning to the end of the file */
2956 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2959 memset(buff, 0, sizeof(buff));
2960 bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
2961 } while (bytes_read > 0);
2963 /* Seek to the end minus (sizeof(buff)-1) bytes */
2964 memset(buff, 0, sizeof(buff));
2965 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
2966 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
2967 assertEqualIntA(a, (sizeof(buff)-1),
2968 archive_read_data(a, buff, (sizeof(buff)-1)));
2969 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
2970 "</P>\n</BODY>\n</HTML>", buff);
2972 /* Seek back to the beginning */
2973 memset(buff, 0, sizeof(buff));
2974 assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
2975 assertEqualIntA(a, (sizeof(buff)-1),
2976 archive_read_data(a, buff, (sizeof(buff)-1)));
2977 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2978 "Transitional//EN\">\n", buff);
2980 /* Test that SEEK_SET works correctly between data blocks */
2981 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
2982 memset(buff, 0, sizeof(buff));
2983 assertEqualIntA(a, 11568,
2984 archive_seek_data(a, 11568, SEEK_SET));
2985 assertEqualIntA(a, (sizeof(buff)-1),
2986 archive_read_data(a, buff, (sizeof(buff)-1)));
2987 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
2988 "\n\t<TT CLASS=\"west", buff);
2990 memset(buff, 0, sizeof(buff));
2991 assertEqualIntA(a, 0,
2992 archive_seek_data(a, 0, SEEK_SET));
2993 assertEqualIntA(a, (sizeof(buff)-1),
2994 archive_read_data(a, buff, (sizeof(buff)-1)));
2995 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
2996 "Transitional//EN\">\n", buff);
2998 memset(buff, 0, sizeof(buff));
2999 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3000 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
3001 assertEqualIntA(a, (sizeof(buff)-1),
3002 archive_read_data(a, buff, (sizeof(buff)-1)));
3003 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3004 "</P>\n</BODY>\n</HTML>", buff);
3006 memset(buff, 0, sizeof(buff));
3007 assertEqualIntA(a, 11568,
3008 archive_seek_data(a, 11568, SEEK_SET));
3009 assertEqualIntA(a, (sizeof(buff)-1),
3010 archive_read_data(a, buff, (sizeof(buff)-1)));
3011 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
3012 "\n\t<TT CLASS=\"west", buff);
3014 memset(buff, 0, sizeof(buff));
3015 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3016 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
3017 assertEqualIntA(a, (sizeof(buff)-1),
3018 archive_read_data(a, buff, (sizeof(buff)-1)));
3019 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3020 "</P>\n</BODY>\n</HTML>", buff);
3022 memset(buff, 0, sizeof(buff));
3023 assertEqualIntA(a, 0,
3024 archive_seek_data(a, 0, SEEK_SET));
3025 assertEqualIntA(a, (sizeof(buff)-1),
3026 archive_read_data(a, buff, (sizeof(buff)-1)));
3027 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3028 "Transitional//EN\">\n", buff);
3030 memset(buff, 0, sizeof(buff));
3031 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3032 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
3033 assertEqualIntA(a, (sizeof(buff)-1),
3034 archive_read_data(a, buff, (sizeof(buff)-1)));
3035 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3036 "</P>\n</BODY>\n</HTML>", buff);
3038 memset(buff, 0, sizeof(buff));
3039 assertEqualIntA(a, 11568,
3040 archive_seek_data(a, 11568, SEEK_SET));
3041 assertEqualIntA(a, (sizeof(buff)-1),
3042 archive_read_data(a, buff, (sizeof(buff)-1)));
3043 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
3044 "\n\t<TT CLASS=\"west", buff);
3046 memset(buff, 0, sizeof(buff));
3047 assertEqualIntA(a, 0,
3048 archive_seek_data(a, 0, SEEK_SET));
3049 assertEqualIntA(a, (sizeof(buff)-1),
3050 archive_read_data(a, buff, (sizeof(buff)-1)));
3051 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3052 "Transitional//EN\">\n", buff);
3054 /* Test that SEEK_CUR works correctly between data blocks */
3055 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
3056 memset(buff, 0, sizeof(buff));
3057 assertEqualIntA(a, 11568,
3058 archive_seek_data(a, 11568, SEEK_CUR));
3059 assertEqualIntA(a, (sizeof(buff)-1),
3060 archive_read_data(a, buff, (sizeof(buff)-1)));
3061 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
3062 "\n\t<TT CLASS=\"west", buff);
3064 memset(buff, 0, sizeof(buff));
3065 assertEqualIntA(a, 0,
3066 archive_seek_data(a, -11631, SEEK_CUR));
3067 assertEqualIntA(a, (sizeof(buff)-1),
3068 archive_read_data(a, buff, (sizeof(buff)-1)));
3069 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3070 "Transitional//EN\">\n", buff);
3072 memset(buff, 0, sizeof(buff));
3073 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3074 archive_seek_data(a, 19985, SEEK_CUR));
3075 assertEqualIntA(a, (sizeof(buff)-1),
3076 archive_read_data(a, buff, (sizeof(buff)-1)));
3077 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3078 "</P>\n</BODY>\n</HTML>", buff);
3080 memset(buff, 0, sizeof(buff));
3081 assertEqualIntA(a, 11568,
3082 archive_seek_data(a, -8543, SEEK_CUR));
3083 assertEqualIntA(a, (sizeof(buff)-1),
3084 archive_read_data(a, buff, (sizeof(buff)-1)));
3085 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
3086 "\n\t<TT CLASS=\"west", buff);
3088 memset(buff, 0, sizeof(buff));
3089 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3090 archive_seek_data(a, 8417, SEEK_CUR));
3091 assertEqualIntA(a, (sizeof(buff)-1),
3092 archive_read_data(a, buff, (sizeof(buff)-1)));
3093 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3094 "</P>\n</BODY>\n</HTML>", buff);
3096 memset(buff, 0, sizeof(buff));
3097 assertEqualIntA(a, 0,
3098 archive_seek_data(a, -20111, SEEK_CUR));
3099 assertEqualIntA(a, (sizeof(buff)-1),
3100 archive_read_data(a, buff, (sizeof(buff)-1)));
3101 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3102 "Transitional//EN\">\n", buff);
3104 memset(buff, 0, sizeof(buff));
3105 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3106 archive_seek_data(a, 19985, SEEK_CUR));
3107 assertEqualIntA(a, (sizeof(buff)-1),
3108 archive_read_data(a, buff, (sizeof(buff)-1)));
3109 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3110 "</P>\n</BODY>\n</HTML>", buff);
3112 memset(buff, 0, sizeof(buff));
3113 assertEqualIntA(a, 11568,
3114 archive_seek_data(a, -8543, SEEK_CUR));
3115 assertEqualIntA(a, (sizeof(buff)-1),
3116 archive_read_data(a, buff, (sizeof(buff)-1)));
3117 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
3118 "\n\t<TT CLASS=\"west", buff);
3120 memset(buff, 0, sizeof(buff));
3121 assertEqualIntA(a, 0,
3122 archive_seek_data(a, -11631, SEEK_CUR));
3123 assertEqualIntA(a, (sizeof(buff)-1),
3124 archive_read_data(a, buff, (sizeof(buff)-1)));
3125 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3126 "Transitional//EN\">\n", buff);
3128 /* Test that SEEK_END works correctly between data blocks */
3129 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
3130 memset(buff, 0, sizeof(buff));
3131 assertEqualIntA(a, 11568,
3132 archive_seek_data(a, -8543, SEEK_END));
3133 assertEqualIntA(a, (sizeof(buff)-1),
3134 archive_read_data(a, buff, (sizeof(buff)-1)));
3135 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
3136 "\n\t<TT CLASS=\"west", buff);
3138 memset(buff, 0, sizeof(buff));
3139 assertEqualIntA(a, 0,
3140 archive_seek_data(a, -20111, SEEK_END));
3141 assertEqualIntA(a, (sizeof(buff)-1),
3142 archive_read_data(a, buff, (sizeof(buff)-1)));
3143 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3144 "Transitional//EN\">\n", buff);
3146 memset(buff, 0, sizeof(buff));
3147 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3148 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
3149 assertEqualIntA(a, (sizeof(buff)-1),
3150 archive_read_data(a, buff, (sizeof(buff)-1)));
3151 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3152 "</P>\n</BODY>\n</HTML>", buff);
3154 memset(buff, 0, sizeof(buff));
3155 assertEqualIntA(a, 11568,
3156 archive_seek_data(a, -8543, SEEK_END));
3157 assertEqualIntA(a, (sizeof(buff)-1),
3158 archive_read_data(a, buff, (sizeof(buff)-1)));
3159 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
3160 "\n\t<TT CLASS=\"west", buff);
3162 memset(buff, 0, sizeof(buff));
3163 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3164 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
3165 assertEqualIntA(a, (sizeof(buff)-1),
3166 archive_read_data(a, buff, (sizeof(buff)-1)));
3167 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3168 "</P>\n</BODY>\n</HTML>", buff);
3170 memset(buff, 0, sizeof(buff));
3171 assertEqualIntA(a, 0,
3172 archive_seek_data(a, -20111, SEEK_END));
3173 assertEqualIntA(a, (sizeof(buff)-1),
3174 archive_read_data(a, buff, (sizeof(buff)-1)));
3175 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3176 "Transitional//EN\">\n", buff);
3178 memset(buff, 0, sizeof(buff));
3179 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3180 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
3181 assertEqualIntA(a, (sizeof(buff)-1),
3182 archive_read_data(a, buff, (sizeof(buff)-1)));
3183 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3184 "</P>\n</BODY>\n</HTML>", buff);
3186 memset(buff, 0, sizeof(buff));
3187 assertEqualIntA(a, 11568,
3188 archive_seek_data(a, -8543, SEEK_END));
3189 assertEqualIntA(a, (sizeof(buff)-1),
3190 archive_read_data(a, buff, (sizeof(buff)-1)));
3191 assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
3192 "\n\t<TT CLASS=\"west", buff);
3194 memset(buff, 0, sizeof(buff));
3195 assertEqualIntA(a, 0,
3196 archive_seek_data(a, -20111, SEEK_END));
3197 assertEqualIntA(a, (sizeof(buff)-1),
3198 archive_read_data(a, buff, (sizeof(buff)-1)));
3199 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3200 "Transitional//EN\">\n", buff);
3202 test_read_format_rar_multivolume_uncompressed_files_helper(a);
3207 assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
3208 assertEqualStringA(a, "LibarchiveAddingTest.html",
3209 archive_entry_pathname(ae));
3210 assertA((int)archive_entry_mtime(ae));
3211 assertA((int)archive_entry_ctime(ae));
3212 assertA((int)archive_entry_atime(ae));
3213 assertEqualIntA(a, 20111, archive_entry_size(ae));
3214 assertEqualIntA(a, 33188, archive_entry_mode(ae));
3215 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3216 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3218 test_read_format_rar_multivolume_uncompressed_files_helper(a);
3220 /* Read from the beginning to the end of the file */
3221 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
3224 memset(buff, 0, sizeof(buff));
3225 bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
3226 } while (bytes_read > 0);
3228 /* Seek to the end minus (sizeof(buff)-1) bytes */
3229 memset(buff, 0, sizeof(buff));
3230 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3231 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
3232 assertEqualIntA(a, (sizeof(buff)-1),
3233 archive_read_data(a, buff, (sizeof(buff)-1)));
3234 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3235 "</P>\n</BODY>\n</HTML>", buff);
3237 /* Seek back to the beginning */
3238 memset(buff, 0, sizeof(buff));
3239 assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
3240 assertEqualIntA(a, (sizeof(buff)-1),
3241 archive_read_data(a, buff, (sizeof(buff)-1)));
3242 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3243 "Transitional//EN\">\n", buff);
3245 /* Test that SEEK_SET works correctly between data blocks */
3246 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
3247 memset(buff, 0, sizeof(buff));
3248 assertEqualIntA(a, 4576,
3249 archive_seek_data(a, 4576, SEEK_SET));
3250 assertEqualIntA(a, (sizeof(buff)-1),
3251 archive_read_data(a, buff, (sizeof(buff)-1)));
3252 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3253 "NAME=\"Basic_test", buff);
3255 memset(buff, 0, sizeof(buff));
3256 assertEqualIntA(a, 17749,
3257 archive_seek_data(a, 17749, SEEK_SET));
3258 assertEqualIntA(a, (sizeof(buff)-1),
3259 archive_read_data(a, buff, (sizeof(buff)-1)));
3260 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3261 "large tar tester attempts to", buff);
3263 memset(buff, 0, sizeof(buff));
3264 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3265 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
3266 assertEqualIntA(a, (sizeof(buff)-1),
3267 archive_read_data(a, buff, (sizeof(buff)-1)));
3268 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3269 "</P>\n</BODY>\n</HTML>", buff);
3271 memset(buff, 0, sizeof(buff));
3272 assertEqualIntA(a, 17749,
3273 archive_seek_data(a, 17749, SEEK_SET));
3274 assertEqualIntA(a, (sizeof(buff)-1),
3275 archive_read_data(a, buff, (sizeof(buff)-1)));
3276 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3277 "large tar tester attempts to", buff);
3279 memset(buff, 0, sizeof(buff));
3280 assertEqualIntA(a, 4576,
3281 archive_seek_data(a, 4576, SEEK_SET));
3282 assertEqualIntA(a, (sizeof(buff)-1),
3283 archive_read_data(a, buff, (sizeof(buff)-1)));
3284 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3285 "NAME=\"Basic_test", buff);
3287 memset(buff, 0, sizeof(buff));
3288 assertEqualIntA(a, 0,
3289 archive_seek_data(a, 0, SEEK_SET));
3290 assertEqualIntA(a, (sizeof(buff)-1),
3291 archive_read_data(a, buff, (sizeof(buff)-1)));
3292 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3293 "Transitional//EN\">\n", buff);
3295 memset(buff, 0, sizeof(buff));
3296 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3297 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
3298 assertEqualIntA(a, (sizeof(buff)-1),
3299 archive_read_data(a, buff, (sizeof(buff)-1)));
3300 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3301 "</P>\n</BODY>\n</HTML>", buff);
3303 memset(buff, 0, sizeof(buff));
3304 assertEqualIntA(a, 4576,
3305 archive_seek_data(a, 4576, SEEK_SET));
3306 assertEqualIntA(a, (sizeof(buff)-1),
3307 archive_read_data(a, buff, (sizeof(buff)-1)));
3308 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3309 "NAME=\"Basic_test", buff);
3311 memset(buff, 0, sizeof(buff));
3312 assertEqualIntA(a, 17749,
3313 archive_seek_data(a, 17749, SEEK_SET));
3314 assertEqualIntA(a, (sizeof(buff)-1),
3315 archive_read_data(a, buff, (sizeof(buff)-1)));
3316 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3317 "large tar tester attempts to", buff);
3319 memset(buff, 0, sizeof(buff));
3320 assertEqualIntA(a, 0,
3321 archive_seek_data(a, 0, SEEK_SET));
3322 assertEqualIntA(a, (sizeof(buff)-1),
3323 archive_read_data(a, buff, (sizeof(buff)-1)));
3324 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3325 "Transitional//EN\">\n", buff);
3327 memset(buff, 0, sizeof(buff));
3328 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3329 archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
3330 assertEqualIntA(a, (sizeof(buff)-1),
3331 archive_read_data(a, buff, (sizeof(buff)-1)));
3332 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3333 "</P>\n</BODY>\n</HTML>", buff);
3335 memset(buff, 0, sizeof(buff));
3336 assertEqualIntA(a, 0,
3337 archive_seek_data(a, 0, SEEK_SET));
3338 assertEqualIntA(a, (sizeof(buff)-1),
3339 archive_read_data(a, buff, (sizeof(buff)-1)));
3340 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3341 "Transitional//EN\">\n", buff);
3343 memset(buff, 0, sizeof(buff));
3344 assertEqualIntA(a, 17749,
3345 archive_seek_data(a, 17749, SEEK_SET));
3346 assertEqualIntA(a, (sizeof(buff)-1),
3347 archive_read_data(a, buff, (sizeof(buff)-1)));
3348 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3349 "large tar tester attempts to", buff);
3351 memset(buff, 0, sizeof(buff));
3352 assertEqualIntA(a, 4576,
3353 archive_seek_data(a, 4576, SEEK_SET));
3354 assertEqualIntA(a, (sizeof(buff)-1),
3355 archive_read_data(a, buff, (sizeof(buff)-1)));
3356 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3357 "NAME=\"Basic_test", buff);
3359 /* Test that SEEK_CUR works correctly between data blocks */
3360 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
3361 memset(buff, 0, sizeof(buff));
3362 assertEqualIntA(a, 4576,
3363 archive_seek_data(a, 4576, SEEK_CUR));
3364 assertEqualIntA(a, (sizeof(buff)-1),
3365 archive_read_data(a, buff, (sizeof(buff)-1)));
3366 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3367 "NAME=\"Basic_test", buff);
3369 memset(buff, 0, sizeof(buff));
3370 assertEqualIntA(a, 17749,
3371 archive_seek_data(a, 13110, SEEK_CUR));
3372 assertEqualIntA(a, (sizeof(buff)-1),
3373 archive_read_data(a, buff, (sizeof(buff)-1)));
3374 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3375 "large tar tester attempts to", buff);
3377 memset(buff, 0, sizeof(buff));
3378 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3379 archive_seek_data(a, 2236, SEEK_CUR));
3380 assertEqualIntA(a, (sizeof(buff)-1),
3381 archive_read_data(a, buff, (sizeof(buff)-1)));
3382 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3383 "</P>\n</BODY>\n</HTML>", buff);
3385 memset(buff, 0, sizeof(buff));
3386 assertEqualIntA(a, 17749,
3387 archive_seek_data(a, -2362, SEEK_CUR));
3388 assertEqualIntA(a, (sizeof(buff)-1),
3389 archive_read_data(a, buff, (sizeof(buff)-1)));
3390 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3391 "large tar tester attempts to", buff);
3393 memset(buff, 0, sizeof(buff));
3394 assertEqualIntA(a, 4576,
3395 archive_seek_data(a, -13236, SEEK_CUR));
3396 assertEqualIntA(a, (sizeof(buff)-1),
3397 archive_read_data(a, buff, (sizeof(buff)-1)));
3398 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3399 "NAME=\"Basic_test", buff);
3401 memset(buff, 0, sizeof(buff));
3402 assertEqualIntA(a, 0,
3403 archive_seek_data(a, -4639, SEEK_CUR));
3404 assertEqualIntA(a, (sizeof(buff)-1),
3405 archive_read_data(a, buff, (sizeof(buff)-1)));
3406 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3407 "Transitional//EN\">\n", buff);
3409 memset(buff, 0, sizeof(buff));
3410 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3411 archive_seek_data(a, 19985, SEEK_CUR));
3412 assertEqualIntA(a, (sizeof(buff)-1),
3413 archive_read_data(a, buff, (sizeof(buff)-1)));
3414 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3415 "</P>\n</BODY>\n</HTML>", buff);
3417 memset(buff, 0, sizeof(buff));
3418 assertEqualIntA(a, 4576,
3419 archive_seek_data(a, -15535, SEEK_CUR));
3420 assertEqualIntA(a, (sizeof(buff)-1),
3421 archive_read_data(a, buff, (sizeof(buff)-1)));
3422 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3423 "NAME=\"Basic_test", buff);
3425 memset(buff, 0, sizeof(buff));
3426 assertEqualIntA(a, 17749,
3427 archive_seek_data(a, 13110, SEEK_CUR));
3428 assertEqualIntA(a, (sizeof(buff)-1),
3429 archive_read_data(a, buff, (sizeof(buff)-1)));
3430 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3431 "large tar tester attempts to", buff);
3433 memset(buff, 0, sizeof(buff));
3434 assertEqualIntA(a, 0,
3435 archive_seek_data(a, -17812, SEEK_CUR));
3436 assertEqualIntA(a, (sizeof(buff)-1),
3437 archive_read_data(a, buff, (sizeof(buff)-1)));
3438 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3439 "Transitional//EN\">\n", buff);
3441 memset(buff, 0, sizeof(buff));
3442 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3443 archive_seek_data(a, 19985, SEEK_CUR));
3444 assertEqualIntA(a, (sizeof(buff)-1),
3445 archive_read_data(a, buff, (sizeof(buff)-1)));
3446 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3447 "</P>\n</BODY>\n</HTML>", buff);
3449 memset(buff, 0, sizeof(buff));
3450 assertEqualIntA(a, 0,
3451 archive_seek_data(a, -20111, SEEK_CUR));
3452 assertEqualIntA(a, (sizeof(buff)-1),
3453 archive_read_data(a, buff, (sizeof(buff)-1)));
3454 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3455 "Transitional//EN\">\n", buff);
3457 memset(buff, 0, sizeof(buff));
3458 assertEqualIntA(a, 17749,
3459 archive_seek_data(a, 17686, SEEK_CUR));
3460 assertEqualIntA(a, (sizeof(buff)-1),
3461 archive_read_data(a, buff, (sizeof(buff)-1)));
3462 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3463 "large tar tester attempts to", buff);
3465 memset(buff, 0, sizeof(buff));
3466 assertEqualIntA(a, 4576,
3467 archive_seek_data(a, -13236, SEEK_CUR));
3468 assertEqualIntA(a, (sizeof(buff)-1),
3469 archive_read_data(a, buff, (sizeof(buff)-1)));
3470 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3471 "NAME=\"Basic_test", buff);
3473 /* Test that SEEK_END works correctly between data blocks */
3474 assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
3475 memset(buff, 0, sizeof(buff));
3476 assertEqualIntA(a, 4576,
3477 archive_seek_data(a, -15535, SEEK_END));
3478 assertEqualIntA(a, (sizeof(buff)-1),
3479 archive_read_data(a, buff, (sizeof(buff)-1)));
3480 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3481 "NAME=\"Basic_test", buff);
3483 memset(buff, 0, sizeof(buff));
3484 assertEqualIntA(a, 17749,
3485 archive_seek_data(a, -2362, SEEK_END));
3486 assertEqualIntA(a, (sizeof(buff)-1),
3487 archive_read_data(a, buff, (sizeof(buff)-1)));
3488 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3489 "large tar tester attempts to", buff);
3491 memset(buff, 0, sizeof(buff));
3492 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3493 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
3494 assertEqualIntA(a, (sizeof(buff)-1),
3495 archive_read_data(a, buff, (sizeof(buff)-1)));
3496 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3497 "</P>\n</BODY>\n</HTML>", buff);
3499 memset(buff, 0, sizeof(buff));
3500 assertEqualIntA(a, 17749,
3501 archive_seek_data(a, -2362, SEEK_END));
3502 assertEqualIntA(a, (sizeof(buff)-1),
3503 archive_read_data(a, buff, (sizeof(buff)-1)));
3504 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3505 "large tar tester attempts to", buff);
3507 memset(buff, 0, sizeof(buff));
3508 assertEqualIntA(a, 4576,
3509 archive_seek_data(a, -15535, SEEK_END));
3510 assertEqualIntA(a, (sizeof(buff)-1),
3511 archive_read_data(a, buff, (sizeof(buff)-1)));
3512 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3513 "NAME=\"Basic_test", buff);
3515 memset(buff, 0, sizeof(buff));
3516 assertEqualIntA(a, 0,
3517 archive_seek_data(a, -20111, SEEK_END));
3518 assertEqualIntA(a, (sizeof(buff)-1),
3519 archive_read_data(a, buff, (sizeof(buff)-1)));
3520 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3521 "Transitional//EN\">\n", buff);
3523 memset(buff, 0, sizeof(buff));
3524 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3525 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
3526 assertEqualIntA(a, (sizeof(buff)-1),
3527 archive_read_data(a, buff, (sizeof(buff)-1)));
3528 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3529 "</P>\n</BODY>\n</HTML>", buff);
3531 memset(buff, 0, sizeof(buff));
3532 assertEqualIntA(a, 4576,
3533 archive_seek_data(a, -15535, SEEK_END));
3534 assertEqualIntA(a, (sizeof(buff)-1),
3535 archive_read_data(a, buff, (sizeof(buff)-1)));
3536 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3537 "NAME=\"Basic_test", buff);
3539 memset(buff, 0, sizeof(buff));
3540 assertEqualIntA(a, 17749,
3541 archive_seek_data(a, -2362, SEEK_END));
3542 assertEqualIntA(a, (sizeof(buff)-1),
3543 archive_read_data(a, buff, (sizeof(buff)-1)));
3544 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3545 "large tar tester attempts to", buff);
3547 memset(buff, 0, sizeof(buff));
3548 assertEqualIntA(a, 0,
3549 archive_seek_data(a, -20111, SEEK_END));
3550 assertEqualIntA(a, (sizeof(buff)-1),
3551 archive_read_data(a, buff, (sizeof(buff)-1)));
3552 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3553 "Transitional//EN\">\n", buff);
3555 memset(buff, 0, sizeof(buff));
3556 assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
3557 archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
3558 assertEqualIntA(a, (sizeof(buff)-1),
3559 archive_read_data(a, buff, (sizeof(buff)-1)));
3560 assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
3561 "</P>\n</BODY>\n</HTML>", buff);
3563 memset(buff, 0, sizeof(buff));
3564 assertEqualIntA(a, 0,
3565 archive_seek_data(a, -20111, SEEK_END));
3566 assertEqualIntA(a, (sizeof(buff)-1),
3567 archive_read_data(a, buff, (sizeof(buff)-1)));
3568 assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
3569 "Transitional//EN\">\n", buff);
3571 memset(buff, 0, sizeof(buff));
3572 assertEqualIntA(a, 17749,
3573 archive_seek_data(a, -2362, SEEK_END));
3574 assertEqualIntA(a, (sizeof(buff)-1),
3575 archive_read_data(a, buff, (sizeof(buff)-1)));
3576 assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
3577 "large tar tester attempts to", buff);
3579 memset(buff, 0, sizeof(buff));
3580 assertEqualIntA(a, 4576,
3581 archive_seek_data(a, -15535, SEEK_END));
3582 assertEqualIntA(a, (sizeof(buff)-1),
3583 archive_read_data(a, buff, (sizeof(buff)-1)));
3584 assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
3585 "NAME=\"Basic_test", buff);
3587 test_read_format_rar_multivolume_uncompressed_files_helper(a);
3592 assertA(0 == archive_read_next_header(a, &ae));
3593 assertEqualString("testdir/testsymlink5", archive_entry_pathname(ae));
3594 assertA((int)archive_entry_mtime(ae));
3595 assertA((int)archive_entry_ctime(ae));
3596 assertA((int)archive_entry_atime(ae));
3597 assertEqualInt(0, archive_entry_size(ae));
3598 assertEqualInt(41471, archive_entry_mode(ae));
3599 assertEqualString("testsubdir/LibarchiveAddingTest.html",
3600 archive_entry_symlink(ae));
3601 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3602 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3603 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
3608 assertA(0 == archive_read_next_header(a, &ae));
3609 assertEqualString("testdir/testsymlink6", archive_entry_pathname(ae));
3610 assertA((int)archive_entry_mtime(ae));
3611 assertA((int)archive_entry_ctime(ae));
3612 assertA((int)archive_entry_atime(ae));
3613 assertEqualInt(0, archive_entry_size(ae));
3614 assertEqualInt(41471, archive_entry_mode(ae));
3615 assertEqualString("testsubdir/LibarchiveAddingTest2.html",
3616 archive_entry_symlink(ae));
3617 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3618 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3619 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
3624 assertA(0 == archive_read_next_header(a, &ae));
3625 assertEqualString("testsymlink", archive_entry_pathname(ae));
3626 assertA((int)archive_entry_mtime(ae));
3627 assertA((int)archive_entry_ctime(ae));
3628 assertA((int)archive_entry_atime(ae));
3629 assertEqualInt(0, archive_entry_size(ae));
3630 assertEqualInt(41471, archive_entry_mode(ae));
3631 assertEqualString("testdir/LibarchiveAddingTest.html",
3632 archive_entry_symlink(ae));
3633 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3634 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3635 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
3640 assertA(0 == archive_read_next_header(a, &ae));
3641 assertEqualString("testsymlink2", archive_entry_pathname(ae));
3642 assertA((int)archive_entry_mtime(ae));
3643 assertA((int)archive_entry_ctime(ae));
3644 assertA((int)archive_entry_atime(ae));
3645 assertEqualInt(0, archive_entry_size(ae));
3646 assertEqualInt(41471, archive_entry_mode(ae));
3647 assertEqualString("testdir/LibarchiveAddingTest2.html",
3648 archive_entry_symlink(ae));
3649 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3650 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3651 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
3656 assertA(0 == archive_read_next_header(a, &ae));
3657 assertEqualString("testsymlink3", archive_entry_pathname(ae));
3658 assertA((int)archive_entry_mtime(ae));
3659 assertA((int)archive_entry_ctime(ae));
3660 assertA((int)archive_entry_atime(ae));
3661 assertEqualInt(0, archive_entry_size(ae));
3662 assertEqualInt(41471, archive_entry_mode(ae));
3663 assertEqualString("testdir/testsubdir/LibarchiveAddingTest.html",
3664 archive_entry_symlink(ae));
3665 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3666 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3667 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
3672 assertA(0 == archive_read_next_header(a, &ae));
3673 assertEqualString("testsymlink4", archive_entry_pathname(ae));
3674 assertA((int)archive_entry_mtime(ae));
3675 assertA((int)archive_entry_ctime(ae));
3676 assertA((int)archive_entry_atime(ae));
3677 assertEqualInt(0, archive_entry_size(ae));
3678 assertEqualInt(41471, archive_entry_mode(ae));
3679 assertEqualString("testdir/testsubdir/LibarchiveAddingTest2.html",
3680 archive_entry_symlink(ae));
3681 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3682 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3683 assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
3686 * Thirteenth header.
3688 assertA(0 == archive_read_next_header(a, &ae));
3689 assertEqualString("testdir/testemptysubdir", archive_entry_pathname(ae));
3690 assertA((int)archive_entry_mtime(ae));
3691 assertA((int)archive_entry_ctime(ae));
3692 assertA((int)archive_entry_atime(ae));
3693 assertEqualInt(0, archive_entry_size(ae));
3694 assertEqualInt(16877, archive_entry_mode(ae));
3695 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3696 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3699 * Fourteenth header.
3701 assertA(0 == archive_read_next_header(a, &ae));
3702 assertEqualString("testdir/testsubdir", archive_entry_pathname(ae));
3703 assertA((int)archive_entry_mtime(ae));
3704 assertA((int)archive_entry_ctime(ae));
3705 assertA((int)archive_entry_atime(ae));
3706 assertEqualInt(0, archive_entry_size(ae));
3707 assertEqualInt(16877, archive_entry_mode(ae));
3708 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3709 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3714 assertA(0 == archive_read_next_header(a, &ae));
3715 assertEqualString("testdir", archive_entry_pathname(ae));
3716 assertA((int)archive_entry_mtime(ae));
3717 assertA((int)archive_entry_ctime(ae));
3718 assertA((int)archive_entry_atime(ae));
3719 assertEqualInt(0, archive_entry_size(ae));
3720 assertEqualInt(16877, archive_entry_mode(ae));
3721 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3722 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3727 assertA(0 == archive_read_next_header(a, &ae));
3728 assertEqualString("testemptydir", archive_entry_pathname(ae));
3729 assertA((int)archive_entry_mtime(ae));
3730 assertA((int)archive_entry_ctime(ae));
3731 assertA((int)archive_entry_atime(ae));
3732 assertEqualInt(0, archive_entry_size(ae));
3733 assertEqualInt(16877, archive_entry_mode(ae));
3734 assertEqualInt(archive_entry_is_encrypted(ae), 0);
3735 assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
3738 assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
3739 assertEqualIntA(a, 16, archive_file_count(a));
3740 assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
3741 assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));