Blame libarchive/test/test_read_format_tar.c

Packit Service 1d0348
/*-
Packit Service 1d0348
 * Copyright (c) 2003-2007 Tim Kientzle
Packit Service 1d0348
 * All rights reserved.
Packit Service 1d0348
 *
Packit Service 1d0348
 * Redistribution and use in source and binary forms, with or without
Packit Service 1d0348
 * modification, are permitted provided that the following conditions
Packit Service 1d0348
 * are met:
Packit Service 1d0348
 * 1. Redistributions of source code must retain the above copyright
Packit Service 1d0348
 *    notice, this list of conditions and the following disclaimer.
Packit Service 1d0348
 * 2. Redistributions in binary form must reproduce the above copyright
Packit Service 1d0348
 *    notice, this list of conditions and the following disclaimer in the
Packit Service 1d0348
 *    documentation and/or other materials provided with the distribution.
Packit Service 1d0348
 *
Packit Service 1d0348
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
Packit Service 1d0348
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
Packit Service 1d0348
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
Packit Service 1d0348
 * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
Packit Service 1d0348
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
Packit Service 1d0348
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
Packit Service 1d0348
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
Packit Service 1d0348
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Packit Service 1d0348
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
Packit Service 1d0348
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit Service 1d0348
 */
Packit Service 1d0348
#include "test.h"
Packit Service 1d0348
__FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_format_tar.c 201247 2009-12-30 05:59:21Z kientzle $");
Packit Service 1d0348
Packit Service 1d0348
/*
Packit Service 1d0348
 * Each of these archives is a short archive with a single entry.  The
Packit Service 1d0348
 * corresponding verify function verifies the entry structure returned
Packit Service 1d0348
 * from libarchive is what it should be.  The support functions pad with
Packit Service 1d0348
 * lots of zeros, so we can trim trailing zero bytes from each hardcoded
Packit Service 1d0348
 * archive to save space.
Packit Service 1d0348
 *
Packit Service 1d0348
 * The naming here follows the tar file type flags.  E.g. '1' is a hardlink,
Packit Service 1d0348
 * '2' is a symlink, '5' is a dir, etc.
Packit Service 1d0348
 */
Packit Service 1d0348
Packit Service 1d0348
/* Empty archive. */
Packit Service 1d0348
static unsigned char archiveEmpty[] = {
Packit Service 1d0348
	/* 512 zero bytes */
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
Packit Service 1d0348
	0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0
Packit Service 1d0348
};
Packit Service 1d0348
Packit Service 1d0348
static void verifyEmpty(void)
Packit Service 1d0348
{
Packit Service 1d0348
	struct archive_entry *ae;
Packit Service 1d0348
	struct archive *a;
Packit Service 1d0348
Packit Service 1d0348
	assert((a = archive_read_new()) != NULL);
Packit Service 1d0348
	assertA(0 == archive_read_support_filter_all(a));
Packit Service 1d0348
	assertA(0 == archive_read_support_format_all(a));
Packit Service 1d0348
	assertA(0 == archive_read_open_memory(a, archiveEmpty, 512));
Packit Service 1d0348
	assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae);;
Packit Service 1d0348
	assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
Packit Service 1d0348
	assertEqualString(archive_filter_name(a, 0), "none");
Packit Service 1d0348
	failure("512 zero bytes should be recognized as a tar archive.");
Packit Service 1d0348
	assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR);
Packit Service 1d0348
	assertEqualInt(archive_entry_is_encrypted(ae), 0);
Packit Service 1d0348
	assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
Packit Service 1d0348
Packit Service 1d0348
	assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
Packit Service 1d0348
	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
/* Single entry with a hardlink. */
Packit Service 1d0348
static unsigned char archive1[] = {
Packit Service 1d0348
'h','a','r','d','l','i','n','k',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','0',
Packit Service 1d0348
'0','6','4','4',' ',0,'0','0','1','7','5','0',' ',0,'0','0','1','7','5','0',
Packit Service 1d0348
' ',0,'0','0','0','0','0','0','0','0','0','0','0',' ','1','0','6','4','6',
Packit Service 1d0348
'0','5','2','6','6','2',' ','0','1','3','0','5','7',0,' ','1','f','i','l',
Packit Service 1d0348
'e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'u','s','t','a','r',0,'0',
Packit Service 1d0348
'0','t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
't','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0',
Packit Service 1d0348
'0','0','0','0','0',' ',0,'0','0','0','0','0','0',' '};
Packit Service 1d0348
Packit Service 1d0348
static void verify1(struct archive_entry *ae)
Packit Service 1d0348
{
Packit Service 1d0348
	/* A hardlink is not a symlink. */
Packit Service 1d0348
	assert(archive_entry_filetype(ae) != AE_IFLNK);
Packit Service 1d0348
	/* Nor is it a directory. */
Packit Service 1d0348
	assert(archive_entry_filetype(ae) != AE_IFDIR);
Packit Service 1d0348
	assertEqualInt(archive_entry_mode(ae) & 0777, 0644);
Packit Service 1d0348
	assertEqualInt(archive_entry_uid(ae), 1000);
Packit Service 1d0348
	assertEqualInt(archive_entry_gid(ae), 1000);
Packit Service 1d0348
	assertEqualString(archive_entry_uname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_gname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_pathname(ae), "hardlink");
Packit Service 1d0348
	assertEqualString(archive_entry_hardlink(ae), "file");
Packit Service 1d0348
	assert(archive_entry_symlink(ae) == NULL);
Packit Service 1d0348
	assertEqualInt(archive_entry_mtime(ae), 1184388530);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
/* Verify that symlinks are read correctly. */
Packit Service 1d0348
static unsigned char archive2[] = {
Packit Service 1d0348
's','y','m','l','i','n','k',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','0',
Packit Service 1d0348
'0','0','7','5','5',' ','0','0','0','1','7','5','0',' ','0','0','0','1','7',
Packit Service 1d0348
'5','0',' ','0','0','0','0','0','0','0','0','0','0','0',' ','1','0','6','4',
Packit Service 1d0348
'6','0','5','4','1','0','1',' ','0','0','1','3','3','2','3',' ','2','f','i',
Packit Service 1d0348
'l','e',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'u','s','t','a','r',0,
Packit Service 1d0348
'0','0','t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,'t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
'0','0','0','0','0','0','0',' ','0','0','0','0','0','0','0',' '};
Packit Service 1d0348
Packit Service 1d0348
static void verify2(struct archive_entry *ae)
Packit Service 1d0348
{
Packit Service 1d0348
	assertEqualInt(archive_entry_filetype(ae), AE_IFLNK);
Packit Service 1d0348
	assertEqualInt(archive_entry_mode(ae) & 0777, 0755);
Packit Service 1d0348
	assertEqualInt(archive_entry_uid(ae), 1000);
Packit Service 1d0348
	assertEqualInt(archive_entry_gid(ae), 1000);
Packit Service 1d0348
	assertEqualString(archive_entry_uname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_gname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_pathname(ae), "symlink");
Packit Service 1d0348
	assertEqualString(archive_entry_symlink(ae), "file");
Packit Service 1d0348
	assert(archive_entry_hardlink(ae) == NULL);
Packit Service 1d0348
	assertEqualInt(archive_entry_mtime(ae), 1184389185);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
/* Character device node. */
Packit Service 1d0348
static unsigned char archive3[] = {
Packit Service 1d0348
'd','e','v','c','h','a','r',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','0',
Packit Service 1d0348
'0','0','7','5','5',' ','0','0','0','1','7','5','0',' ','0','0','0','1','7',
Packit Service 1d0348
'5','0',' ','0','0','0','0','0','0','0','0','0','0','0',' ','1','0','6','4',
Packit Service 1d0348
'6','0','5','4','1','0','1',' ','0','0','1','2','4','1','2',' ','3',0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'u','s','t','a','r',0,
Packit Service 1d0348
'0','0','t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,'t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
'0','0','0','0','0','0','0',' ','0','0','0','0','0','0','0',' '};
Packit Service 1d0348
Packit Service 1d0348
static void verify3(struct archive_entry *ae)
Packit Service 1d0348
{
Packit Service 1d0348
	assertEqualInt(archive_entry_filetype(ae), AE_IFCHR);
Packit Service 1d0348
	assertEqualInt(archive_entry_mode(ae) & 0777, 0755);
Packit Service 1d0348
	assertEqualInt(archive_entry_uid(ae), 1000);
Packit Service 1d0348
	assertEqualInt(archive_entry_gid(ae), 1000);
Packit Service 1d0348
	assertEqualString(archive_entry_uname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_gname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_pathname(ae), "devchar");
Packit Service 1d0348
	assert(archive_entry_symlink(ae) == NULL);
Packit Service 1d0348
	assert(archive_entry_hardlink(ae) == NULL);
Packit Service 1d0348
	assertEqualInt(archive_entry_mtime(ae), 1184389185);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
/* Block device node. */
Packit Service 1d0348
static unsigned char archive4[] = {
Packit Service 1d0348
'd','e','v','b','l','o','c','k',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','0',
Packit Service 1d0348
'0','0','7','5','5',' ','0','0','0','1','7','5','0',' ','0','0','0','1','7',
Packit Service 1d0348
'5','0',' ','0','0','0','0','0','0','0','0','0','0','0',' ','1','0','6','4',
Packit Service 1d0348
'6','0','5','4','1','0','1',' ','0','0','1','2','5','7','0',' ','4',0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'u','s','t','a','r',0,
Packit Service 1d0348
'0','0','t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,'t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
'0','0','0','0','0','0','0',' ','0','0','0','0','0','0','0',' '};
Packit Service 1d0348
Packit Service 1d0348
static void verify4(struct archive_entry *ae)
Packit Service 1d0348
{
Packit Service 1d0348
	assertEqualInt(archive_entry_filetype(ae), AE_IFBLK);
Packit Service 1d0348
	assertEqualInt(archive_entry_mode(ae) & 0777, 0755);
Packit Service 1d0348
	assertEqualInt(archive_entry_uid(ae), 1000);
Packit Service 1d0348
	assertEqualInt(archive_entry_gid(ae), 1000);
Packit Service 1d0348
	assertEqualString(archive_entry_uname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_gname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_pathname(ae), "devblock");
Packit Service 1d0348
	assert(archive_entry_symlink(ae) == NULL);
Packit Service 1d0348
	assert(archive_entry_hardlink(ae) == NULL);
Packit Service 1d0348
	assertEqualInt(archive_entry_mtime(ae), 1184389185);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
/* Directory. */
Packit Service 1d0348
static unsigned char archive5[] = {
Packit Service 1d0348
'.',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','0','0',
Packit Service 1d0348
'7','5','5',' ',0,'0','0','1','7','5','0',' ',0,'0','0','1','7','5','0',
Packit Service 1d0348
' ',0,'0','0','0','0','0','0','0','0','0','0','0',' ','1','0','3','3',
Packit Service 1d0348
'4','0','4','1','7','3','6',' ','0','1','0','5','6','1',0,' ','5',0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'u','s','t','a','r',0,
Packit Service 1d0348
'0','0','t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,'t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,'0','0','0','0','0','0',' ',0,'0','0','0','0','0','0',' '};
Packit Service 1d0348
Packit Service 1d0348
static void verify5(struct archive_entry *ae)
Packit Service 1d0348
{
Packit Service 1d0348
	assertEqualInt(archive_entry_filetype(ae), AE_IFDIR);
Packit Service 1d0348
	assertEqualInt(archive_entry_mtime(ae), 1131430878);
Packit Service 1d0348
	assertEqualInt(archive_entry_mode(ae) & 0777, 0755);
Packit Service 1d0348
	assertEqualInt(archive_entry_uid(ae), 1000);
Packit Service 1d0348
	assertEqualInt(archive_entry_gid(ae), 1000);
Packit Service 1d0348
	assertEqualString(archive_entry_uname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_gname(ae), "tim");
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
/* fifo */
Packit Service 1d0348
static unsigned char archive6[] = {
Packit Service 1d0348
'f','i','f','o',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','0',
Packit Service 1d0348
'0','0','7','5','5',' ','0','0','0','1','7','5','0',' ','0','0','0','1','7',
Packit Service 1d0348
'5','0',' ','0','0','0','0','0','0','0','0','0','0','0',' ','1','0','6','4',
Packit Service 1d0348
'6','0','5','4','1','0','1',' ','0','0','1','1','7','2','4',' ','6',0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'u','s','t','a','r',0,
Packit Service 1d0348
'0','0','t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,'t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
'0','0','0','0','0','0','0',' ','0','0','0','0','0','0','0',' '};
Packit Service 1d0348
Packit Service 1d0348
static void verify6(struct archive_entry *ae)
Packit Service 1d0348
{
Packit Service 1d0348
	assertEqualInt(archive_entry_filetype(ae), AE_IFIFO);
Packit Service 1d0348
	assertEqualInt(archive_entry_mode(ae) & 0777, 0755);
Packit Service 1d0348
	assertEqualInt(archive_entry_uid(ae), 1000);
Packit Service 1d0348
	assertEqualInt(archive_entry_gid(ae), 1000);
Packit Service 1d0348
	assertEqualString(archive_entry_uname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_gname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_pathname(ae), "fifo");
Packit Service 1d0348
	assert(archive_entry_symlink(ae) == NULL);
Packit Service 1d0348
	assert(archive_entry_hardlink(ae) == NULL);
Packit Service 1d0348
	assertEqualInt(archive_entry_mtime(ae), 1184389185);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
/* GNU long link name */
Packit Service 1d0348
static unsigned char archiveK[] = {
Packit Service 1d0348
'.','/','.','/','@','L','o','n','g','L','i','n','k',0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,'0','0','0','0','0','0','0',0,'0','0','0','0','0','0','0',0,'0','0','0',
Packit Service 1d0348
'0','0','0','0',0,'0','0','0','0','0','0','0','0','6','6','6',0,'0','0','0',
Packit Service 1d0348
'0','0','0','0','0','0','0','0',0,'0','1','1','7','1','5',0,' ','K',0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'u','s','t','a','r',' ',' ',
Packit Service 1d0348
0,'r','o','o','t',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
'w','h','e','e','l',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'t',
Packit Service 1d0348
'h','i','s','_','i','s','_','a','_','v','e','r','y','_','l','o','n','g','_',
Packit Service 1d0348
's','y','m','l','i','n','k','_','b','o','d','y','_','a','b','c','d','e','f',
Packit Service 1d0348
'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y',
Packit Service 1d0348
'z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
Packit Service 1d0348
'r','s','t','u','v','w','x','y','z','_','a','b','c','d','e','f','g','h','i',
Packit Service 1d0348
'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','a',
Packit Service 1d0348
'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t',
Packit Service 1d0348
'u','v','w','x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l',
Packit Service 1d0348
'm','n','o','p','q','r','s','t','u','v','w','x','y','z','_','a','b','c','d',
Packit Service 1d0348
'e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w',
Packit Service 1d0348
'x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
Packit Service 1d0348
'p','q','r','s','t','u','v','w','x','y','z','_','a','b','c','d','e','f','g',
Packit Service 1d0348
'h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
Packit Service 1d0348
'_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
Packit Service 1d0348
's','t','u','v','w','x','y','z','_','a','b','c','d','e','f','g','h','i','j',
Packit Service 1d0348
'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','a','b',
Packit Service 1d0348
'c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u',
Packit Service 1d0348
'v','w','x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l','m',
Packit Service 1d0348
'n','o','p','q','r','s','t','u','v','w','x','y','z','_','a','b','c','d','e',
Packit Service 1d0348
'f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x',
Packit Service 1d0348
'y','z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
Packit Service 1d0348
'q','r','s','t','u','v','w','x','y','z','_','a','b','c','d','e','f','g','h',
Packit Service 1d0348
'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
's','y','m','l','i','n','k',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','1',
Packit Service 1d0348
'2','0','7','5','5',0,'0','0','0','1','7','5','0',0,'0','0','0','1','7','5',
Packit Service 1d0348
'0',0,'0','0','0','0','0','0','0','0','0','0','0',0,'1','0','6','4','6','0',
Packit Service 1d0348
'5','6','7','7','0',0,'0','3','5','4','4','7',0,' ','2','t','h','i','s','_',
Packit Service 1d0348
'i','s','_','a','_','v','e','r','y','_','l','o','n','g','_','s','y','m','l',
Packit Service 1d0348
'i','n','k','_','b','o','d','y','_','a','b','c','d','e','f','g','h','i','j',
Packit Service 1d0348
'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','a','b',
Packit Service 1d0348
'c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u',
Packit Service 1d0348
'v','w','x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l',0,
Packit Service 1d0348
'u','s','t','a','r',' ',' ',0,'t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,'t','i','m'};
Packit Service 1d0348
Packit Service 1d0348
static void verifyK(struct archive_entry *ae)
Packit Service 1d0348
{
Packit Service 1d0348
	assertEqualInt(archive_entry_filetype(ae), AE_IFLNK);
Packit Service 1d0348
	assertEqualInt(archive_entry_mode(ae) & 0777, 0755);
Packit Service 1d0348
	assertEqualInt(archive_entry_uid(ae), 1000);
Packit Service 1d0348
	assertEqualInt(archive_entry_gid(ae), 1000);
Packit Service 1d0348
	assertEqualString(archive_entry_uname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_gname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_pathname(ae), "symlink");
Packit Service 1d0348
	assertEqualString(archive_entry_symlink(ae),
Packit Service 1d0348
	    "this_is_a_very_long_symlink_body_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz");
Packit Service 1d0348
	assert(archive_entry_hardlink(ae) == NULL);
Packit Service 1d0348
	assertEqualInt(archive_entry_mtime(ae), 1184390648);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
/* TODO: GNU long name */
Packit Service 1d0348
Packit Service 1d0348
/* TODO: Solaris ACL */
Packit Service 1d0348
Packit Service 1d0348
/* Pax extended long link name */
Packit Service 1d0348
static unsigned char archivexL[] = {
Packit Service 1d0348
'.','/','P','a','x','H','e','a','d','e','r','s','.','8','6','9','7','5','/',
Packit Service 1d0348
's','y','m','l','i','n','k',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','0','0','0','6','4','4',0,'0','0','0','1',
Packit Service 1d0348
'7','5','0',0,'0','0','0','1','7','5','0',0,'0','0','0','0','0','0','0','0',
Packit Service 1d0348
'7','5','3',0,'1','0','6','4','6','0','5','7','6','1','1',0,'0','1','3','7',
Packit Service 1d0348
'1','4',0,' ','x',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'u',
Packit Service 1d0348
's','t','a','r',0,'0','0',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,'0','0','0','0','0','0','0',0,'0','0','0','0','0','0','0',0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'4','5','1',' ','l','i','n','k','p','a','t',
Packit Service 1d0348
'h','=','t','h','i','s','_','i','s','_','a','_','v','e','r','y','_','l','o',
Packit Service 1d0348
'n','g','_','s','y','m','l','i','n','k','_','b','o','d','y','_','a','b','c',
Packit Service 1d0348
'd','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
Packit Service 1d0348
'w','x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n',
Packit Service 1d0348
'o','p','q','r','s','t','u','v','w','x','y','z','_','a','b','c','d','e','f',
Packit Service 1d0348
'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y',
Packit Service 1d0348
'z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
Packit Service 1d0348
'r','s','t','u','v','w','x','y','z','_','a','b','c','d','e','f','g','h','i',
Packit Service 1d0348
'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','a',
Packit Service 1d0348
'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t',
Packit Service 1d0348
'u','v','w','x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l',
Packit Service 1d0348
'm','n','o','p','q','r','s','t','u','v','w','x','y','z','_','a','b','c','d',
Packit Service 1d0348
'e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w',
Packit Service 1d0348
'x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
Packit Service 1d0348
'p','q','r','s','t','u','v','w','x','y','z','_','a','b','c','d','e','f','g',
Packit Service 1d0348
'h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
Packit Service 1d0348
'_','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
Packit Service 1d0348
's','t','u','v','w','x','y','z','_','a','b','c','d','e','f','g','h','i','j',
Packit Service 1d0348
'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','_','a','b',
Packit Service 1d0348
'c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u',
Packit Service 1d0348
'v','w','x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l','m',
Packit Service 1d0348
'n','o','p','q','r','s','t','u','v','w','x','y','z','_','a','b','c','d','e',
Packit Service 1d0348
'f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x',
Packit Service 1d0348
'y','z',10,'2','0',' ','a','t','i','m','e','=','1','1','8','4','3','9','1',
Packit Service 1d0348
'0','2','5',10,'2','0',' ','c','t','i','m','e','=','1','1','8','4','3','9',
Packit Service 1d0348
'0','6','4','8',10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'s','y','m',
Packit Service 1d0348
'l','i','n','k',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'0','0','0','0','7',
Packit Service 1d0348
'5','5',0,'0','0','0','1','7','5','0',0,'0','0','0','1','7','5','0',0,'0',
Packit Service 1d0348
'0','0','0','0','0','0','0','0','0','0',0,'1','0','6','4','6','0','5','6',
Packit Service 1d0348
'7','7','0',0,'0','3','7','1','2','1',0,' ','2','t','h','i','s','_','i','s',
Packit Service 1d0348
'_','a','_','v','e','r','y','_','l','o','n','g','_','s','y','m','l','i','n',
Packit Service 1d0348
'k','_','b','o','d','y','_','a','b','c','d','e','f','g','h','i','j','k','l',
Packit Service 1d0348
'm','n','o','p','q','r','s','t','u','v','w','x','y','z','_','a','b','c','d',
Packit Service 1d0348
'e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w',
Packit Service 1d0348
'x','y','z','_','a','b','c','d','e','f','g','h','i','j','k','l','m','u','s',
Packit Service 1d0348
't','a','r',0,'0','0','t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,0,0,'t','i','m',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
Packit Service 1d0348
0,0,0,0,0,0,0,'0','0','0','0','0','0','0',0,'0','0','0','0','0','0','0'};
Packit Service 1d0348
Packit Service 1d0348
static void verifyxL(struct archive_entry *ae)
Packit Service 1d0348
{
Packit Service 1d0348
	assertEqualInt(archive_entry_filetype(ae), AE_IFLNK);
Packit Service 1d0348
	assertEqualInt(archive_entry_mode(ae) & 0777, 0755);
Packit Service 1d0348
	assertEqualInt(archive_entry_uid(ae), 1000);
Packit Service 1d0348
	assertEqualInt(archive_entry_gid(ae), 1000);
Packit Service 1d0348
	assertEqualString(archive_entry_uname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_gname(ae), "tim");
Packit Service 1d0348
	assertEqualString(archive_entry_pathname(ae), "symlink");
Packit Service 1d0348
	assertEqualString(archive_entry_symlink(ae),
Packit Service 1d0348
	    "this_is_a_very_long_symlink_body_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz_"
Packit Service 1d0348
	    "abcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyz");
Packit Service 1d0348
	assert(archive_entry_hardlink(ae) == NULL);
Packit Service 1d0348
	assertEqualInt(archive_entry_mtime(ae), 1184390648);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
Packit Service 1d0348
/* TODO: Any other types of headers? */
Packit Service 1d0348
Packit Service 1d0348
static void verify(unsigned char *d, size_t s,
Packit Service 1d0348
    void (*f)(struct archive_entry *),
Packit Service 1d0348
    int compression, int format)
Packit Service 1d0348
{
Packit Service 1d0348
	struct archive_entry *ae;
Packit Service 1d0348
	struct archive *a;
Packit Service 1d0348
	unsigned char *buff = malloc(100000);
Packit Service 1d0348
Packit Service 1d0348
	memcpy(buff, d, s);
Packit Service 1d0348
	memset(buff + s, 0, 2048);
Packit Service 1d0348
Packit Service 1d0348
	assert((a = archive_read_new()) != NULL);
Packit Service 1d0348
	assertA(0 == archive_read_support_filter_all(a));
Packit Service 1d0348
	assertA(0 == archive_read_support_format_all(a));
Packit Service 1d0348
	assertA(0 == archive_read_open_memory(a, buff, s + 1024));
Packit Service 1d0348
	assertA(0 == archive_read_next_header(a, &ae);;
Packit Service 1d0348
	assertEqualInt(archive_filter_code(a, 0), compression);
Packit Service 1d0348
	assertEqualInt(archive_format(a), format);
Packit Service 1d0348
	assertEqualInt(archive_entry_is_encrypted(ae), 0);
Packit Service 1d0348
	assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
Packit Service 1d0348
Packit Service 1d0348
	/* Verify the only entry. */
Packit Service 1d0348
	f(ae);
Packit Service 1d0348
Packit Service 1d0348
	assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
Packit Service 1d0348
	assertEqualInt(ARCHIVE_OK, archive_read_free(a));
Packit Service 1d0348
	free(buff);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348
DEFINE_TEST(test_read_format_tar)
Packit Service 1d0348
{
Packit Service 1d0348
	verifyEmpty();
Packit Service 1d0348
	verify(archive1, sizeof(archive1), verify1,
Packit Service 1d0348
	    ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
Packit Service 1d0348
	verify(archive2, sizeof(archive2), verify2,
Packit Service 1d0348
	    ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
Packit Service 1d0348
	verify(archive3, sizeof(archive3), verify3,
Packit Service 1d0348
	    ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
Packit Service 1d0348
	verify(archive4, sizeof(archive4), verify4,
Packit Service 1d0348
	    ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
Packit Service 1d0348
	verify(archive5, sizeof(archive5), verify5,
Packit Service 1d0348
	    ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
Packit Service 1d0348
	verify(archive6, sizeof(archive6), verify6,
Packit Service 1d0348
	    ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
Packit Service 1d0348
	verify(archiveK, sizeof(archiveK), verifyK,
Packit Service 1d0348
	    ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_GNUTAR);
Packit Service 1d0348
	verify(archivexL, sizeof(archivexL), verifyxL,
Packit Service 1d0348
	    ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE);
Packit Service 1d0348
}
Packit Service 1d0348
Packit Service 1d0348