1228753Smm/*- 2228753Smm * Copyright (c) 2003-2009 Tim Kientzle 3228753Smm * All rights reserved. 4228753Smm * 5228753Smm * Redistribution and use in source and binary forms, with or without 6228753Smm * modification, are permitted provided that the following conditions 7228753Smm * are met: 8228753Smm * 1. Redistributions of source code must retain the above copyright 9228753Smm * notice, this list of conditions and the following disclaimer. 10228753Smm * 2. Redistributions in binary form must reproduce the above copyright 11228753Smm * notice, this list of conditions and the following disclaimer in the 12228753Smm * documentation and/or other materials provided with the distribution. 13228753Smm * 14228753Smm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 15228753Smm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16228753Smm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17228753Smm * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 18228753Smm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19228753Smm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20228753Smm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21228753Smm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22228753Smm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23228753Smm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24228753Smm */ 25228753Smm#include "test.h" 26228763Smm__FBSDID("$FreeBSD$"); 27228753Smm 28228753Smmstatic const char * 29232153Smmgname_lookup(void *d, int64_t g) 30228753Smm{ 31228753Smm (void)d; /* UNUSED */ 32228753Smm (void)g; /* UNUSED */ 33228753Smm return ("FOOGROUP"); 34228753Smm} 35228753Smm 36228753Smmstatic const char * 37232153Smmuname_lookup(void *d, int64_t u) 38228753Smm{ 39228753Smm (void)d; /* UNUSED */ 40228753Smm (void)u; /* UNUSED */ 41228753Smm return ("FOO"); 42228753Smm} 43228753Smm 44228753SmmDEFINE_TEST(test_read_disk_entry_from_file) 45228753Smm{ 46228753Smm struct archive *a; 47228753Smm struct archive_entry *entry; 48228753Smm FILE *f; 49228753Smm 50228753Smm assert((a = archive_read_disk_new()) != NULL); 51228753Smm 52228753Smm assertEqualInt(ARCHIVE_OK, archive_read_disk_set_uname_lookup(a, 53228753Smm NULL, &uname_lookup, NULL)); 54228753Smm assertEqualInt(ARCHIVE_OK, archive_read_disk_set_gname_lookup(a, 55228753Smm NULL, &gname_lookup, NULL)); 56228753Smm assertEqualString(archive_read_disk_uname(a, 0), "FOO"); 57228753Smm assertEqualString(archive_read_disk_gname(a, 0), "FOOGROUP"); 58228753Smm 59228753Smm /* Create a file on disk. */ 60228753Smm f = fopen("foo", "wb"); 61228753Smm assert(f != NULL); 62228753Smm assertEqualInt(4, fwrite("1234", 1, 4, f)); 63228753Smm fclose(f); 64228753Smm 65228753Smm /* Use archive_read_disk_entry_from_file to get information about it. */ 66228753Smm entry = archive_entry_new(); 67228753Smm assert(entry != NULL); 68228753Smm archive_entry_copy_pathname(entry, "foo"); 69232153Smm assertEqualIntA(a, ARCHIVE_OK, 70228753Smm archive_read_disk_entry_from_file(a, entry, -1, NULL)); 71228753Smm 72228753Smm /* Verify the information we got back. */ 73228753Smm assertEqualString(archive_entry_uname(entry), "FOO"); 74228753Smm assertEqualString(archive_entry_gname(entry), "FOOGROUP"); 75228753Smm assertEqualInt(archive_entry_size(entry), 4); 76228753Smm 77228753Smm /* Destroy the archive. */ 78228753Smm archive_entry_free(entry); 79232153Smm assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 80228753Smm} 81