Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Mar 2017 22:46:04 +0000 (UTC)
From:      Martin Matuska <mm@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r314570 - vendor/libarchive/dist/tar/test
Message-ID:  <201703022246.v22Mk4Qv026337@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mm
Date: Thu Mar  2 22:46:03 2017
New Revision: 314570
URL: https://svnweb.freebsd.org/changeset/base/314570

Log:
  Update vendor/libarchive to git f4b9b3fe89b4acfef5e3a2283d3bc542315ddb57
  
  Fixes for test_options_fflags tar test

Modified:
  vendor/libarchive/dist/tar/test/test_option_fflags.c

Modified: vendor/libarchive/dist/tar/test/test_option_fflags.c
==============================================================================
--- vendor/libarchive/dist/tar/test/test_option_fflags.c	Thu Mar  2 22:42:59 2017	(r314569)
+++ vendor/libarchive/dist/tar/test/test_option_fflags.c	Thu Mar  2 22:46:03 2017	(r314570)
@@ -25,6 +25,31 @@
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
+static void
+clear_fflags(const char *pathname)
+{
+#if defined(HAVE_STRUCT_STAT_ST_FLAGS)
+	chflags(pathname, 0);
+#elif (defined(FS_IOC_GETFLAGS) && defined(HAVE_WORKING_FS_IOC_GETFLAGS)) || \
+      (defined(EXT2_IOC_GETFLAGS) && defined(HAVE_WORKING_EXT2_IOC_GETFLAGS))
+	int fd;
+
+	fd = open(pathname, O_RDONLY | O_NONBLOCK);
+	if (fd < 0)
+		return;
+	ioctl(fd,
+#ifdef FS_IOC_GETFLAGS
+	    FS_IOC_GETFLAGS,
+#else
+	    EXT2_IOC_GETFLAGS,
+#endif
+	    0);
+#else
+	(void)pathname; /* UNUSED */
+#endif
+	return;
+}
+
 DEFINE_TEST(test_option_fflags)
 {
 	int r;
@@ -40,6 +65,9 @@ DEFINE_TEST(test_option_fflags)
 	/* Set nodump flag on the file */
 	assertSetNodump("f");
 
+	/* FreeBSD ZFS workaround: ZFS sets uarch on all touched files and dirs */
+	chmod("f", 0644);
+
 	/* Archive it with fflags */
 	r = systemf("%s -c --fflags -f fflags.tar f >fflags.out 2>fflags.err", testprog);
 	assertEqualInt(r, 0);
@@ -50,24 +78,28 @@ DEFINE_TEST(test_option_fflags)
 
 	/* Extract fflags with fflags */
 	assertMakeDir("fflags_fflags", 0755);
+	clear_fflags("fflags_fflags");
 	r = systemf("%s -x -C fflags_fflags --no-same-permissions --fflags -f fflags.tar >fflags_fflags.out 2>fflags_fflags.err", testprog);
 	assertEqualInt(r, 0);
 	assertEqualFflags("f", "fflags_fflags/f");
 
 	/* Extract fflags without fflags */
 	assertMakeDir("fflags_nofflags", 0755);
+	clear_fflags("fflags_nofflags");
 	r = systemf("%s -x -C fflags_nofflags -p --no-fflags -f fflags.tar >fflags_nofflags.out 2>fflags_nofflags.err", testprog);
 	assertEqualInt(r, 0);
 	assertUnequalFflags("f", "fflags_nofflags/f");
 
 	/* Extract nofflags with fflags */
 	assertMakeDir("nofflags_fflags", 0755);
+	clear_fflags("nofflags_fflags");
 	r = systemf("%s -x -C nofflags_fflags --no-same-permissions --fflags -f nofflags.tar >nofflags_fflags.out 2>nofflags_fflags.err", testprog);
 	assertEqualInt(r, 0);	
 	assertUnequalFflags("f", "nofflags_fflags/f");
 
 	/* Extract nofflags with nofflags */
 	assertMakeDir("nofflags_nofflags", 0755);
+	clear_fflags("nofflags_nofflags");
 	r = systemf("%s -x -C nofflags_nofflags -p --no-fflags -f nofflags.tar >nofflags_nofflags.out 2>nofflags_nofflags.err", testprog);
 	assertEqualInt(r, 0);
 	assertUnequalFflags("f", "nofflags_nofflags/f");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201703022246.v22Mk4Qv026337>