Don't write data into an empty "file."
In particular, this check avoids a warning when extracting directory entries from certain GNU tar archives that store directory contents. MFC after: 3 days
This commit is contained in:
parent
5d964b5cc9
commit
bb7c5fa31c
@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
|
||||
#endif
|
||||
|
||||
#include "archive.h"
|
||||
#include "archive_entry.h"
|
||||
#include "archive_private.h"
|
||||
#include "archive_read_private.h"
|
||||
#include "archive_write_disk_private.h"
|
||||
@ -107,7 +108,7 @@ archive_read_extract2(struct archive *_a, struct archive_entry *entry,
|
||||
if (r != ARCHIVE_OK)
|
||||
/* If _write_header failed, copy the error. */
|
||||
archive_copy_error(&a->archive, ad);
|
||||
else
|
||||
else if (archive_entry_size(entry) > 0)
|
||||
/* Otherwise, pour data into the entry. */
|
||||
r = copy_data(_a, ad);
|
||||
r2 = archive_write_finish_entry(ad);
|
||||
|
@ -2,10 +2,6 @@
|
||||
|
||||
# Where to find the libarchive sources
|
||||
LA_SRCDIR=${.CURDIR}/..
|
||||
.PATH: ${LA_SRCDIR}
|
||||
|
||||
# Get a list of all libarchive source files
|
||||
LA_SRCS!=make -f ${LA_SRCDIR}/Makefile -V SRCS
|
||||
|
||||
TESTS= \
|
||||
test_acl_basic.c \
|
||||
@ -113,8 +109,8 @@ TESTS= \
|
||||
test_write_open_memory.c
|
||||
|
||||
|
||||
# Build the test program using all libarchive sources + the test sources.
|
||||
SRCS= ${LA_SRCS} \
|
||||
# Build the test program.
|
||||
SRCS= \
|
||||
${TESTS} \
|
||||
list.h \
|
||||
main.c \
|
||||
@ -125,14 +121,11 @@ NO_MAN=yes
|
||||
PROG=libarchive_test
|
||||
INTERNALPROG=yes # Don't install this; it's just for testing
|
||||
DPADD=${LIBBZ2} ${LIBZ} ${LIBMD} ${LIBCRYPTO} ${LIBBSDXML}
|
||||
CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\"
|
||||
LDADD= -lz -lbz2 -lmd -lcrypto -lbsdxml
|
||||
LDADD= -L ${.OBJDIR}/.. -larchive
|
||||
LDADD+= -lz -lbz2 -llzma -lmd -lcrypto -lbsdxml
|
||||
CFLAGS+= -g
|
||||
CFLAGS+= -I${LA_SRCDIR} -I.
|
||||
|
||||
# Uncomment to build and test lzma and xz support via liblzma
|
||||
#CFLAGS+= -I/usr/local/include -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1
|
||||
#LDADD+= -L/usr/local/lib -llzma
|
||||
CFLAGS+= -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1
|
||||
|
||||
# Uncomment to link against dmalloc
|
||||
#LDADD+= -L/usr/local/lib -ldmalloc
|
||||
|
@ -220,6 +220,11 @@ DEFINE_TEST(test_acl_freebsd)
|
||||
skipping("ACL tests require that ACL support be enabled on the filesystem");
|
||||
return;
|
||||
}
|
||||
if (n != 0 && errno == EINVAL) {
|
||||
close(fd);
|
||||
skipping("POSIX.1e ACL tests require that POSIX.1e ACL support be enabled on the filesystem");
|
||||
return;
|
||||
}
|
||||
failure("acl_set_fd(): errno = %d (%s)",
|
||||
errno, strerror(errno));
|
||||
assertEqualInt(0, n);
|
||||
|
Loading…
Reference in New Issue
Block a user