summaryrefslogtreecommitdiff
path: root/libarchive/libarchive-2.7.1/cpio/test
diff options
context:
space:
mode:
Diffstat (limited to 'libarchive/libarchive-2.7.1/cpio/test')
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/CMakeLists.txt66
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/list.h25
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/main.c1191
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test.h171
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_0.c67
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_basic.c260
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_cmdline.c107
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_format_newc.c289
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat.c144
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.bin.uu16
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.crc.uu27
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.newc.uu27
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.ustar.uu84
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_B_upper.c54
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_C_upper.c68
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_L_upper.c106
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_Z_upper.c59
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_a.c163
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_c.c227
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_d.c68
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_f.c76
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_f.cpio.uu16
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_help.c81
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_l.c60
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_m.c70
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_m.cpio.uu16
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_t.c85
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_t.cpio.uu16
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_t.stdout.uu5
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_tnv.stdout.uu5
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_tv.stdout.uu6
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_u.c88
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_version.c109
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_y.c59
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_option_z.c59
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_owner_parse.c112
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_passthrough_dotdot.c93
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_passthrough_reverse.c112
-rw-r--r--libarchive/libarchive-2.7.1/cpio/test/test_pathmatch.c243
39 files changed, 0 insertions, 4530 deletions
diff --git a/libarchive/libarchive-2.7.1/cpio/test/CMakeLists.txt b/libarchive/libarchive-2.7.1/cpio/test/CMakeLists.txt
deleted file mode 100644
index 4f9522e..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/CMakeLists.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-############################################
-#
-# How to build bsdcpio_test
-#
-############################################
-IF(ENABLE_CPIO AND ENABLE_TEST)
- SET(bsdcpio_test_SOURCES
- ../cmdline.c
- ../err.c
- ../pathmatch.c
- main.c
- test.h
- test_0.c
- test_basic.c
- test_cmdline.c
- test_format_newc.c
- test_gcpio_compat.c
- test_option_B_upper.c
- test_option_C_upper.c
- test_option_L_upper.c
- test_option_Z_upper.c
- test_option_a.c
- test_option_c.c
- test_option_d.c
- test_option_f.c
- test_option_help.c
- test_option_l.c
- test_option_m.c
- test_option_t.c
- test_option_u.c
- test_option_version.c
- test_option_y.c
- test_option_z.c
- test_owner_parse.c
- test_passthrough_dotdot.c
- test_passthrough_reverse.c
- test_pathmatch.c
- )
- IF(WIN32 AND NOT CYGWIN)
- LIST(APPEND bsdcpio_test_SOURCES ../cpio_windows.c)
- LIST(APPEND bsdcpio_test_SOURCES ../cpio_windows.h)
- ENDIF(WIN32 AND NOT CYGWIN)
-
- #
- # Generate the list.h
- #
- GENERATE_LIST_H(${CMAKE_CURRENT_BINARY_DIR}/list.h
- ${CMAKE_CURRENT_LIST_FILE} ${bsdcpio_test_SOURCES})
- SET_PROPERTY(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES
- ${CMAKE_CURRENT_BINARY_DIR})
- #
- # Register target
- #
- ADD_EXECUTABLE(bsdcpio_test ${bsdcpio_test_SOURCES})
- SET_PROPERTY(TARGET bsdcpio_test PROPERTY COMPILE_DEFINITIONS LIST_H)
- SET(num 0)
- FOREACH(test ${bsdcpio_test_SOURCES})
- IF(test MATCHES "^test_[^/]+[.]c$")
- STRING(REGEX REPLACE "^(test_[^/]+)[.]c$" "\\1" testname ${test})
- ADD_TEST("bsdcpio_${testname}" bsdcpio_test
- -q -v -p ${BSDCPIO} -r ${CMAKE_CURRENT_SOURCE_DIR} ${num})
- MATH(EXPR num "${num} + 1")
- ENDIF(test MATCHES "^test_[^/]+[.]c$")
- ENDFOREACH(test)
-ENDIF(ENABLE_CPIO AND ENABLE_TEST)
-
diff --git a/libarchive/libarchive-2.7.1/cpio/test/list.h b/libarchive/libarchive-2.7.1/cpio/test/list.h
deleted file mode 100644
index 01b11df..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/list.h
+++ /dev/null
@@ -1,25 +0,0 @@
-DEFINE_TEST(test_0)
-DEFINE_TEST(test_basic)
-DEFINE_TEST(test_cmdline)
-DEFINE_TEST(test_format_newc)
-DEFINE_TEST(test_gcpio_compat)
-DEFINE_TEST(test_option_B_upper)
-DEFINE_TEST(test_option_C_upper)
-DEFINE_TEST(test_option_L_upper)
-DEFINE_TEST(test_option_Z_upper)
-DEFINE_TEST(test_option_a)
-DEFINE_TEST(test_option_c)
-DEFINE_TEST(test_option_d)
-DEFINE_TEST(test_option_f)
-DEFINE_TEST(test_option_help)
-DEFINE_TEST(test_option_l)
-DEFINE_TEST(test_option_m)
-DEFINE_TEST(test_option_t)
-DEFINE_TEST(test_option_u)
-DEFINE_TEST(test_option_version)
-DEFINE_TEST(test_option_y)
-DEFINE_TEST(test_option_z)
-DEFINE_TEST(test_owner_parse)
-DEFINE_TEST(test_passthrough_dotdot)
-DEFINE_TEST(test_passthrough_reverse)
-DEFINE_TEST(test_pathmatch)
diff --git a/libarchive/libarchive-2.7.1/cpio/test/main.c b/libarchive/libarchive-2.7.1/cpio/test/main.c
deleted file mode 100644
index 9e35481..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/main.c
+++ /dev/null
@@ -1,1191 +0,0 @@
-/*
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Various utility routines useful for test programs.
- * Each test program is linked against this file.
- */
-#include "test.h"
-
-#include <errno.h>
-#include <locale.h>
-#include <stdarg.h>
-#include <time.h>
-
-/*
- * This same file is used pretty much verbatim for all test harnesses.
- *
- * The next few lines are the only differences.
- */
-#define PROGRAM "bsdcpio" /* Name of program being tested. */
-#define ENVBASE "BSDCPIO" /* Prefix for environment variables. */
-#undef EXTRA_DUMP /* How to dump extra data */
-/* How to generate extra version info. */
-#define EXTRA_VERSION (systemf("%s --version", testprog) ? "" : "")
-#define KNOWNREF "test_option_f.cpio.uu"
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/main.c,v 1.3 2008/08/24 04:58:22 kientzle Exp $");
-
-/*
- * "list.h" is simply created by "grep DEFINE_TEST"; it has
- * a line like
- * DEFINE_TEST(test_function)
- * for each test.
- * Include it here with a suitable DEFINE_TEST to declare all of the
- * test functions.
- */
-#undef DEFINE_TEST
-#define DEFINE_TEST(name) void name(void);
-#include "list.h"
-
-/* Interix doesn't define these in a standard header. */
-#if __INTERIX__
-extern char *optarg;
-extern int optind;
-#endif
-
-/* Enable core dump on failure. */
-static int dump_on_failure = 0;
-/* Default is to remove temp dirs for successful tests. */
-static int keep_temp_files = 0;
-/* Default is to print some basic information about each test. */
-static int quiet_flag = 0;
-/* Default is to summarize repeated failures. */
-static int verbose = 0;
-/* Cumulative count of component failures. */
-static int failures = 0;
-/* Cumulative count of skipped component tests. */
-static int skips = 0;
-/* Cumulative count of assertions. */
-static int assertions = 0;
-
-/* Directory where uuencoded reference files can be found. */
-static const char *refdir;
-
-/*
- * My own implementation of the standard assert() macro emits the
- * message in the same format as GCC (file:line: message).
- * It also includes some additional useful information.
- * This makes it a lot easier to skim through test failures in
- * Emacs. ;-)
- *
- * It also supports a few special features specifically to simplify
- * test harnesses:
- * failure(fmt, args) -- Stores a text string that gets
- * printed if the following assertion fails, good for
- * explaining subtle tests.
- */
-static char msg[4096];
-
-/*
- * For each test source file, we remember how many times each
- * failure was reported.
- */
-static const char *failed_filename = NULL;
-static struct line {
- int line;
- int count;
-} failed_lines[1000];
-
-/*
- * Count this failure; return the number of previous failures.
- */
-static int
-previous_failures(const char *filename, int line)
-{
- unsigned int i;
- int count;
-
- if (failed_filename == NULL || strcmp(failed_filename, filename) != 0)
- memset(failed_lines, 0, sizeof(failed_lines));
- failed_filename = filename;
-
- for (i = 0; i < sizeof(failed_lines)/sizeof(failed_lines[0]); i++) {
- if (failed_lines[i].line == line) {
- count = failed_lines[i].count;
- failed_lines[i].count++;
- return (count);
- }
- if (failed_lines[i].line == 0) {
- failed_lines[i].line = line;
- failed_lines[i].count = 1;
- return (0);
- }
- }
- return (0);
-}
-
-/*
- * Copy arguments into file-local variables.
- */
-static const char *test_filename;
-static int test_line;
-static void *test_extra;
-void test_setup(const char *filename, int line)
-{
- test_filename = filename;
- test_line = line;
-}
-
-/*
- * Inform user that we're skipping a test.
- */
-void
-test_skipping(const char *fmt, ...)
-{
- va_list ap;
-
- if (previous_failures(test_filename, test_line))
- return;
-
- va_start(ap, fmt);
- fprintf(stderr, " *** SKIPPING: ");
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n");
- va_end(ap);
- ++skips;
-}
-
-/* Common handling of failed tests. */
-static void
-report_failure(void *extra)
-{
- if (msg[0] != '\0') {
- fprintf(stderr, " Description: %s\n", msg);
- msg[0] = '\0';
- }
-
-#ifdef EXTRA_DUMP
- if (extra != NULL)
- fprintf(stderr, " detail: %s\n", EXTRA_DUMP(extra));
-#else
- (void)extra; /* UNUSED */
-#endif
-
- if (dump_on_failure) {
- fprintf(stderr,
- " *** forcing core dump so failure can be debugged ***\n");
- *(char *)(NULL) = 0;
- exit(1);
- }
-}
-
-/*
- * Summarize repeated failures in the just-completed test file.
- * The reports above suppress multiple failures from the same source
- * line; this reports on any tests that did fail multiple times.
- */
-static int
-summarize_comparator(const void *a0, const void *b0)
-{
- const struct line *a = a0, *b = b0;
- if (a->line == 0 && b->line == 0)
- return (0);
- if (a->line == 0)
- return (1);
- if (b->line == 0)
- return (-1);
- return (a->line - b->line);
-}
-
-static void
-summarize(void)
-{
- unsigned int i;
-
- qsort(failed_lines, sizeof(failed_lines)/sizeof(failed_lines[0]),
- sizeof(failed_lines[0]), summarize_comparator);
- for (i = 0; i < sizeof(failed_lines)/sizeof(failed_lines[0]); i++) {
- if (failed_lines[i].line == 0)
- break;
- if (failed_lines[i].count > 1)
- fprintf(stderr, "%s:%d: Failed %d times\n",
- failed_filename, failed_lines[i].line,
- failed_lines[i].count);
- }
- /* Clear the failure history for the next file. */
- memset(failed_lines, 0, sizeof(failed_lines));
-}
-
-/* Set up a message to display only after a test fails. */
-void
-failure(const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- vsprintf(msg, fmt, ap);
- va_end(ap);
-}
-
-/* Generic assert() just displays the failed condition. */
-int
-test_assert(const char *file, int line, int value, const char *condition, void *extra)
-{
- ++assertions;
- if (value) {
- msg[0] = '\0';
- return (value);
- }
- failures ++;
- if (!verbose && previous_failures(file, line))
- return (value);
- fprintf(stderr, "%s:%d: Assertion failed\n", file, line);
- fprintf(stderr, " Condition: %s\n", condition);
- report_failure(extra);
- return (value);
-}
-
-/* assertEqualInt() displays the values of the two integers. */
-int
-test_assert_equal_int(const char *file, int line,
- int v1, const char *e1, int v2, const char *e2, void *extra)
-{
- ++assertions;
- if (v1 == v2) {
- msg[0] = '\0';
- return (1);
- }
- failures ++;
- if (!verbose && previous_failures(file, line))
- return (0);
- fprintf(stderr, "%s:%d: Assertion failed: Ints not equal\n",
- file, line);
- fprintf(stderr, " %s=%d\n", e1, v1);
- fprintf(stderr, " %s=%d\n", e2, v2);
- report_failure(extra);
- return (0);
-}
-
-static void strdump(const char *p)
-{
- if (p == NULL) {
- fprintf(stderr, "(null)");
- return;
- }
- fprintf(stderr, "\"");
- while (*p != '\0') {
- unsigned int c = 0xff & *p++;
- switch (c) {
- case '\a': fprintf(stderr, "\a"); break;
- case '\b': fprintf(stderr, "\b"); break;
- case '\n': fprintf(stderr, "\n"); break;
- case '\r': fprintf(stderr, "\r"); break;
- default:
- if (c >= 32 && c < 127)
- fprintf(stderr, "%c", c);
- else
- fprintf(stderr, "\\x%02X", c);
- }
- }
- fprintf(stderr, "\"");
-}
-
-/* assertEqualString() displays the values of the two strings. */
-int
-test_assert_equal_string(const char *file, int line,
- const char *v1, const char *e1,
- const char *v2, const char *e2,
- void *extra)
-{
- ++assertions;
- if (v1 == NULL || v2 == NULL) {
- if (v1 == v2) {
- msg[0] = '\0';
- return (1);
- }
- } else if (strcmp(v1, v2) == 0) {
- msg[0] = '\0';
- return (1);
- }
- failures ++;
- if (!verbose && previous_failures(file, line))
- return (0);
- fprintf(stderr, "%s:%d: Assertion failed: Strings not equal\n",
- file, line);
- fprintf(stderr, " %s = ", e1);
- strdump(v1);
- fprintf(stderr, " (length %d)\n", v1 == NULL ? 0 : (int)strlen(v1));
- fprintf(stderr, " %s = ", e2);
- strdump(v2);
- fprintf(stderr, " (length %d)\n", v2 == NULL ? 0 : (int)strlen(v2));
- report_failure(extra);
- return (0);
-}
-
-static void wcsdump(const wchar_t *w)
-{
- if (w == NULL) {
- fprintf(stderr, "(null)");
- return;
- }
- fprintf(stderr, "\"");
- while (*w != L'\0') {
- unsigned int c = *w++;
- if (c >= 32 && c < 127)
- fprintf(stderr, "%c", c);
- else if (c < 256)
- fprintf(stderr, "\\x%02X", c);
- else if (c < 0x10000)
- fprintf(stderr, "\\u%04X", c);
- else
- fprintf(stderr, "\\U%08X", c);
- }
- fprintf(stderr, "\"");
-}
-
-/* assertEqualWString() displays the values of the two strings. */
-int
-test_assert_equal_wstring(const char *file, int line,
- const wchar_t *v1, const char *e1,
- const wchar_t *v2, const char *e2,
- void *extra)
-{
- ++assertions;
- if (v1 == NULL) {
- if (v2 == NULL) {
- msg[0] = '\0';
- return (1);
- }
- } else if (v2 == NULL) {
- if (v1 == NULL) {
- msg[0] = '\0';
- return (1);
- }
- } else if (wcscmp(v1, v2) == 0) {
- msg[0] = '\0';
- return (1);
- }
- failures ++;
- if (!verbose && previous_failures(file, line))
- return (0);
- fprintf(stderr, "%s:%d: Assertion failed: Unicode strings not equal\n",
- file, line);
- fprintf(stderr, " %s = ", e1);
- wcsdump(v1);
- fprintf(stderr, "\n");
- fprintf(stderr, " %s = ", e2);
- wcsdump(v2);
- fprintf(stderr, "\n");
- report_failure(extra);
- return (0);
-}
-
-/*
- * Pretty standard hexdump routine. As a bonus, if ref != NULL, then
- * any bytes in p that differ from ref will be highlighted with '_'
- * before and after the hex value.
- */
-static void
-hexdump(const char *p, const char *ref, size_t l, size_t offset)
-{
- size_t i, j;
- char sep;
-
- for(i=0; i < l; i+=16) {
- fprintf(stderr, "%04x", (unsigned)(i + offset));
- sep = ' ';
- for (j = 0; j < 16 && i + j < l; j++) {
- if (ref != NULL && p[i + j] != ref[i + j])
- sep = '_';
- fprintf(stderr, "%c%02x", sep, 0xff & (int)p[i+j]);
- if (ref != NULL && p[i + j] == ref[i + j])
- sep = ' ';
- }
- for (; j < 16; j++) {
- fprintf(stderr, "%c ", sep);
- sep = ' ';
- }
- fprintf(stderr, "%c", sep);
- for (j=0; j < 16 && i + j < l; j++) {
- int c = p[i + j];
- if (c >= ' ' && c <= 126)
- fprintf(stderr, "%c", c);
- else
- fprintf(stderr, ".");
- }
- fprintf(stderr, "\n");
- }
-}
-
-/* assertEqualMem() displays the values of the two memory blocks. */
-/* TODO: For long blocks, hexdump the first bytes that actually differ. */
-int
-test_assert_equal_mem(const char *file, int line,
- const char *v1, const char *e1,
- const char *v2, const char *e2,
- size_t l, const char *ld, void *extra)
-{
- ++assertions;
- if (v1 == NULL || v2 == NULL) {
- if (v1 == v2) {
- msg[0] = '\0';
- return (1);
- }
- } else if (memcmp(v1, v2, l) == 0) {
- msg[0] = '\0';
- return (1);
- }
- failures ++;
- if (!verbose && previous_failures(file, line))
- return (0);
- fprintf(stderr, "%s:%d: Assertion failed: memory not equal\n",
- file, line);
- fprintf(stderr, " size %s = %d\n", ld, (int)l);
- fprintf(stderr, " Dump of %s\n", e1);
- hexdump(v1, v2, l < 32 ? l : 32, 0);
- fprintf(stderr, " Dump of %s\n", e2);
- hexdump(v2, v1, l < 32 ? l : 32, 0);
- fprintf(stderr, "\n");
- report_failure(extra);
- return (0);
-}
-
-int
-test_assert_empty_file(const char *f1fmt, ...)
-{
- char buff[1024];
- char f1[1024];
- struct stat st;
- va_list ap;
- ssize_t s;
- int fd;
-
-
- va_start(ap, f1fmt);
- vsprintf(f1, f1fmt, ap);
- va_end(ap);
-
- if (stat(f1, &st) != 0) {
- fprintf(stderr, "%s:%d: Could not stat: %s\n", test_filename, test_line, f1);
- report_failure(NULL);
- return (0);
- }
- if (st.st_size == 0)
- return (1);
-
- failures ++;
- if (!verbose && previous_failures(test_filename, test_line))
- return (0);
-
- fprintf(stderr, "%s:%d: File not empty: %s\n", test_filename, test_line, f1);
- fprintf(stderr, " File size: %d\n", (int)st.st_size);
- fprintf(stderr, " Contents:\n");
- fd = open(f1, O_RDONLY);
- if (fd < 0) {
- fprintf(stderr, " Unable to open %s\n", f1);
- } else {
- s = sizeof(buff) < st.st_size ? sizeof(buff) : st.st_size;
- s = read(fd, buff, s);
- hexdump(buff, NULL, s, 0);
- close(fd);
- }
- report_failure(NULL);
- return (0);
-}
-
-/* assertEqualFile() asserts that two files have the same contents. */
-/* TODO: hexdump the first bytes that actually differ. */
-int
-test_assert_equal_file(const char *f1, const char *f2pattern, ...)
-{
- char f2[1024];
- va_list ap;
- char buff1[1024];
- char buff2[1024];
- int fd1, fd2;
- int n1, n2;
-
- va_start(ap, f2pattern);
- vsprintf(f2, f2pattern, ap);
- va_end(ap);
-
- fd1 = open(f1, O_RDONLY);
- fd2 = open(f2, O_RDONLY);
- for (;;) {
- n1 = read(fd1, buff1, sizeof(buff1));
- n2 = read(fd2, buff2, sizeof(buff2));
- if (n1 != n2)
- break;
- if (n1 == 0 && n2 == 0) {
- close(fd1);
- close(fd2);
- return (1);
- }
- if (memcmp(buff1, buff2, n1) != 0)
- break;
- }
- close(fd1);
- close(fd2);
- failures ++;
- if (!verbose && previous_failures(test_filename, test_line))
- return (0);
- fprintf(stderr, "%s:%d: Files are not identical\n",
- test_filename, test_line);
- fprintf(stderr, " file1=\"%s\"\n", f1);
- fprintf(stderr, " file2=\"%s\"\n", f2);
- report_failure(test_extra);
- return (0);
-}
-
-int
-test_assert_file_exists(const char *fpattern, ...)
-{
- char f[1024];
- va_list ap;
-
- va_start(ap, fpattern);
- vsprintf(f, fpattern, ap);
- va_end(ap);
-
- if (!access(f, F_OK))
- return (1);
- if (!previous_failures(test_filename, test_line)) {
- fprintf(stderr, "%s:%d: File doesn't exist\n",
- test_filename, test_line);
- fprintf(stderr, " file=\"%s\"\n", f);
- report_failure(test_extra);
- }
- return (0);
-}
-
-int
-test_assert_file_not_exists(const char *fpattern, ...)
-{
- char f[1024];
- va_list ap;
-
- va_start(ap, fpattern);
- vsprintf(f, fpattern, ap);
- va_end(ap);
-
- if (access(f, F_OK))
- return (1);
- if (!previous_failures(test_filename, test_line)) {
- fprintf(stderr, "%s:%d: File exists and shouldn't\n",
- test_filename, test_line);
- fprintf(stderr, " file=\"%s\"\n", f);
- report_failure(test_extra);
- }
- return (0);
-}
-
-/* assertFileContents() asserts the contents of a file. */
-int
-test_assert_file_contents(const void *buff, int s, const char *fpattern, ...)
-{
- char f[1024];
- va_list ap;
- char *contents;
- int fd;
- int n;
-
- va_start(ap, fpattern);
- vsprintf(f, fpattern, ap);
- va_end(ap);
-
- fd = open(f, O_RDONLY);
- contents = malloc(s * 2 + 128);
- n = read(fd, contents, s * 2 + 128);
- close(fd);
- if (n == s && memcmp(buff, contents, s) == 0) {
- free(contents);
- return (1);
- }
- failures ++;
- if (!previous_failures(test_filename, test_line)) {
- fprintf(stderr, "%s:%d: File contents don't match\n",
- test_filename, test_line);
- fprintf(stderr, " file=\"%s\"\n", f);
- if (n > 0)
- hexdump(contents, buff, n, 0);
- else {
- fprintf(stderr, " File empty, contents should be:\n");
- hexdump(buff, NULL, s, 0);
- }
- report_failure(test_extra);
- }
- free(contents);
- return (0);
-}
-
-/* assertTextFileContents() asserts the contents of a text file. */
-int
-test_assert_text_file_contents(const char *buff, const char *f)
-{
- char *contents;
- const char *btxt, *ftxt;
- int fd;
- int n, s;
-
- fd = open(f, O_RDONLY);
- s = strlen(buff);
- contents = malloc(s * 2 + 128);
- n = read(fd, contents, s * 2 + 128 -1);
- if (n >= 0)
- contents[n] = '\0';
- close(fd);
- /* Compare texts. */
- btxt = buff;
- ftxt = (const char *)contents;
- while (*btxt != '\0' && *ftxt != '\0') {
- if (*btxt == *ftxt) {
- ++btxt;
- ++ftxt;
- continue;
- }
- if (btxt[0] == '\n' && ftxt[0] == '\r' && ftxt[1] == '\n') {
- /* Pass over different new line characters. */
- ++btxt;
- ftxt += 2;
- continue;
- }
- break;
- }
- if (*btxt == '\0' && *ftxt == '\0') {
- free(contents);
- return (1);
- }
- failures ++;
- if (!previous_failures(test_filename, test_line)) {
- fprintf(stderr, "%s:%d: File contents don't match\n",
- test_filename, test_line);
- fprintf(stderr, " file=\"%s\"\n", f);
- if (n > 0)
- hexdump(contents, buff, n, 0);
- else {
- fprintf(stderr, " File empty, contents should be:\n");
- hexdump(buff, NULL, s, 0);
- }
- report_failure(test_extra);
- }
- free(contents);
- return (0);
-}
-
-/*
- * Call standard system() call, but build up the command line using
- * sprintf() conventions.
- */
-int
-systemf(const char *fmt, ...)
-{
- char buff[8192];
- va_list ap;
- int r;
-
- va_start(ap, fmt);
- vsprintf(buff, fmt, ap);
- r = system(buff);
- va_end(ap);
- return (r);
-}
-
-/*
- * Slurp a file into memory for ease of comparison and testing.
- * Returns size of file in 'sizep' if non-NULL, null-terminates
- * data in memory for ease of use.
- */
-char *
-slurpfile(size_t * sizep, const char *fmt, ...)
-{
- char filename[8192];
- struct stat st;
- va_list ap;
- char *p;
- ssize_t bytes_read;
- int fd;
- int r;
-
- va_start(ap, fmt);
- vsprintf(filename, fmt, ap);
- va_end(ap);
-
- fd = open(filename, O_RDONLY);
- if (fd < 0) {
- /* Note: No error; non-existent file is okay here. */
- return (NULL);
- }
- r = fstat(fd, &st);
- if (r != 0) {
- fprintf(stderr, "Can't stat file %s\n", filename);
- close(fd);
- return (NULL);
- }
- p = malloc(st.st_size + 1);
- if (p == NULL) {
- fprintf(stderr, "Can't allocate %ld bytes of memory to read file %s\n", (long int)st.st_size, filename);
- close(fd);
- return (NULL);
- }
- bytes_read = read(fd, p, st.st_size);
- if (bytes_read < st.st_size) {
- fprintf(stderr, "Can't read file %s\n", filename);
- close(fd);
- free(p);
- return (NULL);
- }
- p[st.st_size] = '\0';
- if (sizep != NULL)
- *sizep = (size_t)st.st_size;
- close(fd);
- return (p);
-}
-
-/*
- * "list.h" is automatically generated; it just has a lot of lines like:
- * DEFINE_TEST(function_name)
- * It's used above to declare all of the test functions.
- * We reuse it here to define a list of all tests (functions and names).
- */
-#undef DEFINE_TEST
-#define DEFINE_TEST(n) { n, #n },
-struct { void (*func)(void); const char *name; } tests[] = {
- #include "list.h"
-};
-
-/*
- * Each test is run in a private work dir. Those work dirs
- * do have consistent and predictable names, in case a group
- * of tests need to collaborate. However, there is no provision
- * for requiring that tests run in a certain order.
- */
-static int test_run(int i, const char *tmpdir)
-{
- int failures_before = failures;
-
- if (!quiet_flag) {
- printf("%d: %s\n", i, tests[i].name);
- fflush(stdout);
- }
-
- /*
- * Always explicitly chdir() in case the last test moved us to
- * a strange place.
- */
- if (chdir(tmpdir)) {
- fprintf(stderr,
- "ERROR: Couldn't chdir to temp dir %s\n",
- tmpdir);
- exit(1);
- }
- /* Create a temp directory for this specific test. */
- if (mkdir(tests[i].name, 0755)) {
- fprintf(stderr,
- "ERROR: Couldn't create temp dir ``%s''\n",
- tests[i].name);
- exit(1);
- }
- /* Chdir() to that work directory. */
- if (chdir(tests[i].name)) {
- fprintf(stderr,
- "ERROR: Couldn't chdir to temp dir ``%s''\n",
- tests[i].name);
- exit(1);
- }
- /* Explicitly reset the locale before each test. */
- setlocale(LC_ALL, "C");
- /* Run the actual test. */
- (*tests[i].func)();
- /* Summarize the results of this test. */
- summarize();
- /* If there were no failures, we can remove the work dir. */
- if (failures == failures_before) {
- if (!keep_temp_files && chdir(tmpdir) == 0) {
-#if defined(_WIN32) && !defined(__CYGWIN__)
- systemf("rmdir /S /Q %s", tests[i].name);
-#else
- systemf("rm -rf %s", tests[i].name);
-#endif
- }
- }
- /* Return appropriate status. */
- return (failures == failures_before ? 0 : 1);
-}
-
-static void usage(const char *program)
-{
- static const int limit = sizeof(tests) / sizeof(tests[0]);
- int i;
-
- printf("Usage: %s [options] <test> <test> ...\n", program);
- printf("Default is to run all tests.\n");
- printf("Otherwise, specify the numbers of the tests you wish to run.\n");
- printf("Options:\n");
- printf(" -d Dump core after any failure, for debugging.\n");
- printf(" -k Keep all temp files.\n");
- printf(" Default: temp files for successful tests deleted.\n");
-#ifdef PROGRAM
- printf(" -p <path> Path to executable to be tested.\n");
- printf(" Default: path taken from " ENVBASE " environment variable.\n");
-#endif
- printf(" -q Quiet.\n");
- printf(" -r <dir> Path to dir containing reference files.\n");
- printf(" Default: Current directory.\n");
- printf(" -v Verbose.\n");
- printf("Available tests:\n");
- for (i = 0; i < limit; i++)
- printf(" %d: %s\n", i, tests[i].name);
- exit(1);
-}
-
-#define UUDECODE(c) (((c) - 0x20) & 0x3f)
-
-void
-extract_reference_file(const char *name)
-{
- char buff[1024];
- FILE *in, *out;
-
- sprintf(buff, "%s/%s.uu", refdir, name);
- in = fopen(buff, "r");
- failure("Couldn't open reference file %s", buff);
- assert(in != NULL);
- if (in == NULL)
- return;
- /* Read up to and including the 'begin' line. */
- for (;;) {
- if (fgets(buff, sizeof(buff), in) == NULL) {
- /* TODO: This is a failure. */
- return;
- }
- if (memcmp(buff, "begin ", 6) == 0)
- break;
- }
- /* Now, decode the rest and write it. */
- /* Not a lot of error checking here; the input better be right. */
- out = fopen(name, "w");
- while (fgets(buff, sizeof(buff), in) != NULL) {
- char *p = buff;
- int bytes;
-
- if (memcmp(buff, "end", 3) == 0)
- break;
-
- bytes = UUDECODE(*p++);
- while (bytes > 0) {
- int n = 0;
- /* Write out 1-3 bytes from that. */
- if (bytes > 0) {
- n = UUDECODE(*p++) << 18;
- n |= UUDECODE(*p++) << 12;
- fputc(n >> 16, out);
- --bytes;
- }
- if (bytes > 0) {
- n |= UUDECODE(*p++) << 6;
- fputc((n >> 8) & 0xFF, out);
- --bytes;
- }
- if (bytes > 0) {
- n |= UUDECODE(*p++);
- fputc(n & 0xFF, out);
- --bytes;
- }
- }
- }
- fclose(out);
- fclose(in);
-}
-
-
-static char *
-get_refdir(void)
-{
- char tried[512] = { '\0' };
- char buff[128];
- char *pwd, *p;
-
- /* Get the current dir. */
- pwd = getcwd(NULL, 0);
- while (pwd[strlen(pwd) - 1] == '\n')
- pwd[strlen(pwd) - 1] = '\0';
- printf("PWD: %s\n", pwd);
-
- /* Look for a known file. */
- snprintf(buff, sizeof(buff), "%s", pwd);
- p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
- if (p != NULL) goto success;
- strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
- strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
-
- snprintf(buff, sizeof(buff), "%s/test", pwd);
- p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
- if (p != NULL) goto success;
- strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
- strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
-
- snprintf(buff, sizeof(buff), "%s/%s/test", pwd, PROGRAM);
- p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
- if (p != NULL) goto success;
- strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
- strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
-
- if (memcmp(pwd, "/usr/obj", 8) == 0) {
- snprintf(buff, sizeof(buff), "%s", pwd + 8);
- p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
- if (p != NULL) goto success;
- strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
- strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
-
- snprintf(buff, sizeof(buff), "%s/test", pwd + 8);
- p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
- if (p != NULL) goto success;
- strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
- strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
- }
-
-#if defined(_WIN32) && !defined(__CYGWIN__) && defined(_DEBUG)
- DebugBreak();
-#endif
- printf("Unable to locate known reference file %s\n", KNOWNREF);
- printf(" Checked following directories:\n%s\n", tried);
- exit(1);
-
-success:
- free(p);
- free(pwd);
- return strdup(buff);
-}
-
-int main(int argc, char **argv)
-{
- static const int limit = sizeof(tests) / sizeof(tests[0]);
- int i, tests_run = 0, tests_failed = 0, opt;
- time_t now;
- char *refdir_alloc = NULL;
-#if defined(_WIN32) && !defined(__CYGWIN__)
- char *testprg;
-#endif
- const char *tmp, *opt_arg, *progname, *p;
- char tmpdir[256];
- char tmpdir_timestamp[256];
-
- (void)argc; /* UNUSED */
-
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Make sure open() function will be used with a binary mode. */
- /* on cygwin, we need something similar, but instead link against */
- /* a special startup object, binmode.o */
- _set_fmode(_O_BINARY);
-#endif
- /*
- * Name of this program, used to build root of our temp directory
- * tree.
- */
- progname = p = argv[0];
- while (*p != '\0') {
- /* Support \ or / dir separators for Windows compat. */
- if (*p == '/' || *p == '\\')
- progname = p + 1;
- ++p;
- }
-
-#ifdef PROGRAM
- /* Get the target program from environment, if available. */
- testprog = getenv(ENVBASE);
-#endif
-
- if (getenv("TMPDIR") != NULL)
- tmp = getenv("TMPDIR");
- else if (getenv("TMP") != NULL)
- tmp = getenv("TMP");
- else if (getenv("TEMP") != NULL)
- tmp = getenv("TEMP");
- else if (getenv("TEMPDIR") != NULL)
- tmp = getenv("TEMPDIR");
- else
- tmp = "/tmp";
-
- /* Allow -d to be controlled through the environment. */
- if (getenv(ENVBASE "_DEBUG") != NULL)
- dump_on_failure = 1;
-
- /* Get the directory holding test files from environment. */
- refdir = getenv(ENVBASE "_TEST_FILES");
-
- /*
- * Parse options, without using getopt(), which isn't available
- * on all platforms.
- */
- ++argv; /* Skip program name */
- while (*argv != NULL) {
- if (**argv != '-')
- break;
- p = *argv++;
- ++p; /* Skip '-' */
- while (*p != '\0') {
- opt = *p++;
- opt_arg = NULL;
- /* If 'opt' takes an argument, parse that. */
- if (opt == 'p' || opt == 'r') {
- if (*p != '\0')
- opt_arg = p;
- else if (*argv == NULL) {
- fprintf(stderr,
- "Option -%c requires argument.\n",
- opt);
- usage(progname);
- } else
- opt_arg = *argv++;
- p = ""; /* End of this option word. */
- }
-
- switch (opt) {
- case 'd':
- dump_on_failure = 1;
- break;
- case 'k':
- keep_temp_files = 1;
- break;
- case 'p':
-#ifdef PROGRAM
- testprog = opt_arg;
-#else
- usage(progname);
-#endif
- break;
- case 'q':
- quiet_flag++;
- break;
- case 'r':
- refdir = opt_arg;
- break;
- case 'v':
- verbose = 1;
- break;
- case '?':
- default:
- usage(progname);
- }
- }
- }
-
- /*
- * Sanity-check that our options make sense.
- */
-#ifdef PROGRAM
- if (testprog == NULL)
- usage(progname);
-#endif
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /*
- * Command.exe cannot accept the command used '/' with drive
- * name such as c:/xxx/command.exe when use '|' pipe handling.
- */
- testprg = strdup(testprog);
- for (i = 0; testprg[i] != '\0'; i++) {
- if (testprg[i] == '/')
- testprg[i] = '\\';
- }
- testprog = testprg;
-#endif
-
- /*
- * Create a temp directory for the following tests.
- * Include the time the tests started as part of the name,
- * to make it easier to track the results of multiple tests.
- */
- now = time(NULL);
- for (i = 0; i < 1000; i++) {
- strftime(tmpdir_timestamp, sizeof(tmpdir_timestamp),
- "%Y-%m-%dT%H.%M.%S",
- localtime(&now));
- sprintf(tmpdir, "%s/%s.%s-%03d", tmp, progname,
- tmpdir_timestamp, i);
- if (mkdir(tmpdir,0755) == 0)
- break;
- if (errno == EEXIST)
- continue;
- fprintf(stderr, "ERROR: Unable to create temp directory %s\n",
- tmpdir);
- exit(1);
- }
-
- /*
- * If the user didn't specify a directory for locating
- * reference files, use the current directory for that.
- */
- if (refdir == NULL)
- refdir = refdir_alloc = get_refdir();
-
- /*
- * Banner with basic information.
- */
- if (!quiet_flag) {
- printf("Running tests in: %s\n", tmpdir);
- printf("Reference files will be read from: %s\n", refdir);
-#ifdef PROGRAM
- printf("Running tests on: %s\n", testprog);
-#endif
- printf("Exercising: ");
- fflush(stdout);
- printf("%s\n", EXTRA_VERSION);
- }
-
- /*
- * Run some or all of the individual tests.
- */
- if (*argv == NULL) {
- /* Default: Run all tests. */
- for (i = 0; i < limit; i++) {
- if (test_run(i, tmpdir))
- tests_failed++;
- tests_run++;
- }
- } else {
- while (*(argv) != NULL) {
- i = atoi(*argv);
- if (**argv < '0' || **argv > '9' || i < 0 || i >= limit) {
- printf("*** INVALID Test %s\n", *argv);
- usage(progname);
- } else {
- if (test_run(i, tmpdir))
- tests_failed++;
- tests_run++;
- }
- argv++;
- }
- }
-
- /*
- * Report summary statistics.
- */
- if (!quiet_flag) {
- printf("\n");
- printf("%d of %d tests reported failures\n",
- tests_failed, tests_run);
- printf(" Total of %d assertions checked.\n", assertions);
- printf(" Total of %d assertions failed.\n", failures);
- printf(" Total of %d assertions skipped.\n", skips);
- }
-
- free(refdir_alloc);
-
- /* If the final tmpdir is empty, we can remove it. */
- /* This should be the usual case when all tests succeed. */
- chdir("..");
- rmdir(tmpdir);
-
- return (tests_failed);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test.h b/libarchive/libarchive-2.7.1/cpio/test/test.h
deleted file mode 100644
index 327668f..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (c) 2003-2006 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD: src/usr.bin/cpio/test/test.h,v 1.2 2008/06/21 02:17:18 kientzle Exp $
- */
-
-/* Every test program should #include "test.h" as the first thing. */
-
-/*
- * The goal of this file (and the matching test.c) is to
- * simplify the very repetitive test-*.c test programs.
- */
-#if defined(HAVE_CONFIG_H)
-/* Most POSIX platforms use the 'configure' script to build config.h */
-#include "config.h"
-#elif defined(__FreeBSD__)
-/* Building as part of FreeBSD system requires a pre-built config.h. */
-#include "config_freebsd.h"
-#elif defined(_WIN32) && !defined(__CYGWIN__)
-/* Win32 can't run the 'configure' script. */
-#include "config_windows.h"
-#else
-/* Warn if the library hasn't been (automatically or manually) configured. */
-#error Oops: No config.h and no pre-built configuration in test.h.
-#endif
-
-#if !defined(_WIN32) || defined(__CYGWIN__)
-#include <dirent.h>
-#else
-#include "../cpio_windows.h"
-#endif
-#if defined(__CYGWIN__)
-/* In cygwin-1.7.x, the .nlinks field of directories is
- * deliberately inaccurate, because to populate it requires
- * stat'ing every file in the directory, which is slow.
- * So, as an optimization cygwin doesn't do that in newer
- * releases; all correct applications on any platform should
- * never rely on it being > 1, so this optimization doesn't
- * impact the operation of correctly coded applications.
- * Therefore, the cpio test should not check its accuracy
- */
-# define NLINKS_INACCURATE_FOR_DIRS
-#endif
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#if !defined(_WIN32) || defined(__CYGWIN__)
-#include <unistd.h>
-#endif
-#include <time.h>
-#include <wchar.h>
-
-#ifdef USE_DMALLOC
-#include <dmalloc.h>
-#endif
-
-/* No non-FreeBSD platform will have __FBSDID, so just define it here. */
-#ifdef __FreeBSD__
-#include <sys/cdefs.h> /* For __FBSDID */
-#else
-#undef __FBSDID
-#define __FBSDID(a) struct _undefined_hack
-#endif
-
-/*
- * Redefine DEFINE_TEST for use in defining the test functions.
- */
-#undef DEFINE_TEST
-#define DEFINE_TEST(name) void name(void); void name(void)
-
-/* An implementation of the standard assert() macro */
-#define assert(e) test_assert(__FILE__, __LINE__, (e), #e, NULL)
-
-/* Assert two integers are the same. Reports value of each one if not. */
-#define assertEqualInt(v1,v2) \
- test_assert_equal_int(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL)
-
-/* Assert two strings are the same. Reports value of each one if not. */
-#define assertEqualString(v1,v2) \
- test_assert_equal_string(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL)
-/* As above, but v1 and v2 are wchar_t * */
-#define assertEqualWString(v1,v2) \
- test_assert_equal_wstring(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL)
-/* As above, but raw blocks of bytes. */
-#define assertEqualMem(v1, v2, l) \
- test_assert_equal_mem(__FILE__, __LINE__, (v1), #v1, (v2), #v2, (l), #l, NULL)
-/* Assert two files are the same; allow printf-style expansion of second name.
- * See below for comments about variable arguments here...
- */
-#define assertEqualFile \
- test_setup(__FILE__, __LINE__);test_assert_equal_file
-/* Assert that a file is empty; supports printf-style arguments. */
-#define assertEmptyFile \
- test_setup(__FILE__, __LINE__);test_assert_empty_file
-/* Assert that a file exists; supports printf-style arguments. */
-#define assertFileExists \
- test_setup(__FILE__, __LINE__);test_assert_file_exists
-/* Assert that a file exists; supports printf-style arguments. */
-#define assertFileNotExists \
- test_setup(__FILE__, __LINE__);test_assert_file_not_exists
-/* Assert that file contents match a string; supports printf-style arguments. */
-#define assertFileContents \
- test_setup(__FILE__, __LINE__);test_assert_file_contents
-#define assertTextFileContents \
- test_setup(__FILE__, __LINE__);test_assert_text_file_contents
-
-/*
- * This would be simple with C99 variadic macros, but I don't want to
- * require that. Instead, I insert a function call before each
- * skipping() call to pass the file and line information down. Crude,
- * but effective.
- */
-#define skipping \
- test_setup(__FILE__, __LINE__);test_skipping
-
-/* Function declarations. These are defined in test_utility.c. */
-void failure(const char *fmt, ...);
-void test_setup(const char *, int);
-void test_skipping(const char *fmt, ...);
-int test_assert(const char *, int, int, const char *, void *);
-int test_assert_empty_file(const char *, ...);
-int test_assert_equal_file(const char *, const char *, ...);
-int test_assert_equal_int(const char *, int, int, const char *, int, const char *, void *);
-int test_assert_equal_string(const char *, int, const char *v1, const char *, const char *v2, const char *, void *);
-int test_assert_equal_wstring(const char *, int, const wchar_t *v1, const char *, const wchar_t *v2, const char *, void *);
-int test_assert_equal_mem(const char *, int, const char *, const char *, const char *, const char *, size_t, const char *, void *);
-int test_assert_file_contents(const void *, int, const char *, ...);
-int test_assert_text_file_contents(const char *buff, const char *f);
-int test_assert_file_exists(const char *, ...);
-int test_assert_file_not_exists(const char *, ...);
-
-/* Like sprintf, then system() */
-int systemf(const char * fmt, ...);
-
-/* Suck file into string allocated via malloc(). Call free() when done. */
-/* Supports printf-style args: slurpfile(NULL, "%s/myfile", refdir); */
-char *slurpfile(size_t *, const char *fmt, ...);
-
-/* Extracts named reference file to the current directory. */
-void extract_reference_file(const char *);
-
-/*
- * Special interfaces for program test harness.
- */
-
-/* Pathname of exe to be tested. */
-const char *testprog;
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_0.c b/libarchive/libarchive-2.7.1/cpio/test/test_0.c
deleted file mode 100644
index d224daa..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_0.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-/*
- * This first test does basic sanity checks on the environment. For
- * most of these, we just exit on failure.
- */
-#if !defined(_WIN32) || defined(__CYGWIN__)
-#define DEV_NULL "/dev/null"
-#else
-#define DEV_NULL "NUL"
-#endif
-
-DEFINE_TEST(test_0)
-{
- struct stat st;
-
- failure("File %s does not exist?!", testprog);
- if (!assertEqualInt(0, stat(testprog, &st)))
- exit(1);
-
- failure("%s is not executable?!", testprog);
- if (!assert((st.st_mode & 0111) != 0))
- exit(1);
-
- /*
- * Try to succesfully run the program; this requires that
- * we know some option that will succeed.
- */
- if (0 == systemf("%s --version >" DEV_NULL, testprog)) {
- /* This worked. */
- } else if (0 == systemf("%s -W version >" DEV_NULL, testprog)) {
- /* This worked. */
- } else {
- failure("Unable to successfully run any of the following:\n"
- " * %s --version\n"
- " * %s -W version\n",
- testprog, testprog);
- assert(0);
- }
-
- /* TODO: Ensure that our reference files are available. */
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_basic.c b/libarchive/libarchive-2.7.1/cpio/test/test_basic.c
deleted file mode 100644
index 9613723..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_basic.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/test_basic.c,v 1.4 2008/08/25 06:39:29 kientzle Exp $");
-
-static void
-verify_files(const char *target)
-{
- struct stat st, st2;
-#if !defined(_WIN32) || defined(__CYGWIN__)
- char buff[128];
-#endif
- int r;
-
- /*
- * Verify unpacked files.
- */
-
- /* Regular file with 2 links. */
- r = lstat("file", &st);
- failure("Failed to stat file %s/file, errno=%d", target, errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualInt(0600, st.st_mode & 0700);
-#else
- assertEqualInt(0644, st.st_mode & 0777);
-#endif
- assertEqualInt(10, st.st_size);
- failure("file %s/file should have 2 links", target);
- assertEqualInt(2, st.st_nlink);
- }
-
- /* Another name for the same file. */
- r = lstat("linkfile", &st2);
- failure("Failed to stat file %s/linkfile, errno=%d", target, errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st2.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualInt(0600, st2.st_mode & 0700);
-#else
- assertEqualInt(0644, st2.st_mode & 0777);
-#endif
- assertEqualInt(10, st2.st_size);
- failure("file %s/linkfile should have 2 links", target);
- assertEqualInt(2, st2.st_nlink);
- /* Verify that the two are really hardlinked. */
- assertEqualInt(st.st_dev, st2.st_dev);
- failure("%s/linkfile and %s/file should be hardlinked",
- target, target);
- assertEqualInt(st.st_ino, st2.st_ino);
- }
-
- /* Symlink */
- r = lstat("symlink", &st);
- failure("Failed to stat file %s/symlink, errno=%d", target, errno);
- assertEqualInt(r, 0);
-#if !defined(_WIN32) || defined(__CYGWIN__)
- if (r == 0) {
- failure("symlink should be a symlink; actual mode is %o",
- st.st_mode);
- assert(S_ISLNK(st.st_mode));
- if (S_ISLNK(st.st_mode)) {
- r = readlink("symlink", buff, sizeof(buff));
- assertEqualInt(r, 4);
- buff[r] = '\0';
- assertEqualString(buff, "file");
- }
- }
-#endif
-
- /* Another file with 1 link and different permissions. */
- r = lstat("file2", &st);
- failure("Failed to stat file %s/file2, errno=%d", target, errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st.st_mode));
- failure("%s/file2: st.st_mode = %o", target, st.st_mode);
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Execution bit and group members bits and others
- * bits do not work. */
- assertEqualInt(0600, st.st_mode & 0700);
-#else
- assertEqualInt(0777, st.st_mode & 0777);
-#endif
- assertEqualInt(10, st.st_size);
- failure("file %s/file2 should have 1 link", target);
- assertEqualInt(1, st.st_nlink);
- }
-
- /* dir */
- r = lstat("dir", &st);
- if (r == 0) {
- assertEqualInt(r, 0);
- assert(S_ISDIR(st.st_mode));
- failure("%s/dir: st.st_mode = %o", target, st.st_mode);
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0700, st.st_mode & 0700);
-#else
- assertEqualInt(0775, st.st_mode & 0777);
-#endif
- }
-}
-
-static void
-basic_cpio(const char *target,
- const char *pack_options,
- const char *unpack_options,
- const char *se)
-{
- int r;
-
- if (!assertEqualInt(0, mkdir(target, 0775)))
- return;
-
- /* Use the cpio program to create an archive. */
- r = systemf("%s -o %s < filelist >%s/archive 2>%s/pack.err",
- testprog, pack_options, target, target);
- failure("Error invoking %s -o %s", testprog, pack_options);
- assertEqualInt(r, 0);
-
- chdir(target);
-
- /* Verify stderr. */
- failure("Expected: %s, options=%s", se, pack_options);
- assertTextFileContents(se, "pack.err");
-
- /*
- * Use cpio to unpack the archive into another directory.
- */
- r = systemf("%s -i %s< archive >unpack.out 2>unpack.err",
- testprog, unpack_options);
- failure("Error invoking %s -i %s", testprog, unpack_options);
- assertEqualInt(r, 0);
-
- /* Verify stderr. */
- failure("Error invoking %s -i %s in dir %s", testprog, unpack_options, target);
- assertTextFileContents(se, "unpack.err");
-
- verify_files(target);
-
- chdir("..");
-}
-
-static void
-passthrough(const char *target)
-{
- int r;
-
- if (!assertEqualInt(0, mkdir(target, 0775)))
- return;
-
- /*
- * Use cpio passthrough mode to copy files to another directory.
- */
- r = systemf("%s -p %s <filelist >%s/stdout 2>%s/stderr",
- testprog, target, target, target);
- failure("Error invoking %s -p", testprog);
- assertEqualInt(r, 0);
-
- chdir(target);
-
- /* Verify stderr. */
- failure("Error invoking %s -p in dir %s",
- testprog, target);
- assertTextFileContents("1 block\n", "stderr");
-
- verify_files(target);
- chdir("..");
-}
-
-DEFINE_TEST(test_basic)
-{
- int fd;
- int filelist;
- int oldumask;
-
- oldumask = umask(0);
-
- /*
- * Create an assortment of files on disk.
- */
- filelist = open("filelist", O_CREAT | O_WRONLY, 0644);
-
- /* File with 10 bytes content. */
- fd = open("file", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- write(filelist, "file\n", 5);
-
- /* hardlink to above file. */
- assertEqualInt(0, link("file", "linkfile"));
- write(filelist, "linkfile\n", 9);
-
- /* Symlink to above file. */
- assertEqualInt(0, symlink("file", "symlink"));
- write(filelist, "symlink\n", 8);
-
- /* Another file with different permissions. */
- fd = open("file2", O_CREAT | O_WRONLY, 0777);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- write(filelist, "file2\n", 6);
-
- /* Directory. */
- assertEqualInt(0, mkdir("dir", 0775));
- write(filelist, "dir\n", 4);
- /* All done. */
- close(filelist);
-
- umask(022);
-
- /* Archive/dearchive with a variety of options. */
- basic_cpio("copy", "", "", "2 blocks\n");
- basic_cpio("copy_odc", "--format=odc", "", "2 blocks\n");
- basic_cpio("copy_newc", "-H newc", "", "2 blocks\n");
- basic_cpio("copy_cpio", "-H odc", "", "2 blocks\n");
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /*
- * On Windows, symbolic link does not work.
- * Currentry copying file instead. therefore block size is
- * different.
- */
- basic_cpio("copy_ustar", "-H ustar", "", "10 blocks\n");
-#else
- basic_cpio("copy_ustar", "-H ustar", "", "9 blocks\n");
-#endif
- /* Copy in one step using -p */
- passthrough("passthrough");
-
- umask(oldumask);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_cmdline.c b/libarchive/libarchive-2.7.1/cpio/test/test_cmdline.c
deleted file mode 100644
index 594cd34..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_cmdline.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*-
- * Copyright (c) 2003-2009 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-/*
- * Test the command-line parsing.
- */
-
-DEFINE_TEST(test_cmdline)
-{
- int fd;
-
- /* Create an empty file. */
- fd = open("empty", O_WRONLY | O_CREAT, 0555);
- assert(fd >= 0);
- close(fd);
-
- failure("-Q is an invalid option on every cpio program I know of");
- assert(0 != systemf("%s -i -Q <empty >1.out 2>1.err", testprog));
- assertEmptyFile("1.out");
-
- failure("-f requires an argument");
- assert(0 != systemf("%s -if <empty >2.out 2>2.err", testprog));
- assertEmptyFile("2.out");
-
- failure("-f requires an argument");
- assert(0 != systemf("%s -i -f <empty >3.out 2>3.err", testprog));
- assertEmptyFile("3.out");
-
- failure("--format requires an argument");
- assert(0 != systemf("%s -i --format <empty >4.out 2>4.err", testprog));
- assertEmptyFile("4.out");
-
- failure("--badopt is an invalid option");
- assert(0 != systemf("%s -i --badop <empty >5.out 2>5.err", testprog));
- assertEmptyFile("5.out");
-
- failure("--badopt is an invalid option");
- assert(0 != systemf("%s -i --badopt <empty >6.out 2>6.err", testprog));
- assertEmptyFile("6.out");
-
- failure("--n is ambiguous");
- assert(0 != systemf("%s -i --n <empty >7.out 2>7.err", testprog));
- assertEmptyFile("7.out");
-
- failure("--create forbids an argument");
- assert(0 != systemf("%s --create=arg <empty >8.out 2>8.err", testprog));
- assertEmptyFile("8.out");
-
- failure("-i with empty input should succeed");
- assert(0 == systemf("%s -i <empty >9.out 2>9.err", testprog));
- assertEmptyFile("9.out");
-
- failure("-o with empty input should succeed");
- assert(0 == systemf("%s -o <empty >10.out 2>10.err", testprog));
-
- failure("-i -p is nonsense");
- assert(0 != systemf("%s -i -p <empty >11.out 2>11.err", testprog));
- assertEmptyFile("11.out");
-
- failure("-p -i is nonsense");
- assert(0 != systemf("%s -p -i <empty >12.out 2>12.err", testprog));
- assertEmptyFile("12.out");
-
- failure("-i -o is nonsense");
- assert(0 != systemf("%s -i -o <empty >13.out 2>13.err", testprog));
- assertEmptyFile("13.out");
-
- failure("-o -i is nonsense");
- assert(0 != systemf("%s -o -i <empty >14.out 2>14.err", testprog));
- assertEmptyFile("14.out");
-
- failure("-o -p is nonsense");
- assert(0 != systemf("%s -o -p <empty >15.out 2>15.err", testprog));
- assertEmptyFile("15.out");
-
- failure("-p -o is nonsense");
- assert(0 != systemf("%s -p -o <empty >16.out 2>16.err", testprog));
- assertEmptyFile("16.out");
-
- failure("-p with empty input should fail");
- assert(0 != systemf("%s -p <empty >17.out 2>17.err", testprog));
- assertEmptyFile("17.out");
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_format_newc.c b/libarchive/libarchive-2.7.1/cpio/test/test_format_newc.c
deleted file mode 100644
index 0533364..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_format_newc.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/test_format_newc.c,v 1.2 2008/08/22 02:09:10 kientzle Exp $");
-
-static int
-is_hex(const char *p, size_t l)
-{
- while (l > 0) {
- if ((*p >= '0' && *p <= '9')
- || (*p >= 'a' && *p <= 'f')
- || (*p >= 'A' && *p <= 'F'))
- {
- --l;
- ++p;
- } else
- return (0);
-
- }
- return (1);
-}
-
-static int
-from_hex(const char *p, size_t l)
-{
- int r = 0;
-
- while (l > 0) {
- r *= 16;
- if (*p >= 'a' && *p <= 'f')
- r += *p + 10 - 'a';
- else if (*p >= 'A' && *p <= 'F')
- r += *p + 10 - 'A';
- else
- r += *p - '0';
- --l;
- ++p;
- }
- return (r);
-}
-
-DEFINE_TEST(test_format_newc)
-{
- int fd, list;
- int r;
- int devmajor, devminor, ino, gid;
- time_t t, t2, now;
- char *p, *e;
- size_t s, fs, ns;
- mode_t oldmask;
-
- oldmask = umask(0);
-
- /*
- * Create an assortment of files.
- * TODO: Extend this to cover more filetypes.
- */
- list = open("list", O_CREAT | O_WRONLY, 0644);
-
- /* "file1" */
- fd = open("file1", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- assertEqualInt(6, write(list, "file1\n", 6));
-
- /* "hardlink" */
- assertEqualInt(0, link("file1", "hardlink"));
- assertEqualInt(9, write(list, "hardlink\n", 9));
-
- /* Another hardlink, but this one won't be archived. */
- assertEqualInt(0, link("file1", "hardlink2"));
-
- /* "symlink" */
- assertEqualInt(0, symlink("file1", "symlink"));
- assertEqualInt(8, write(list, "symlink\n", 8));
-
- /* "dir" */
- assertEqualInt(0, mkdir("dir", 0775));
- assertEqualInt(4, write(list, "dir\n", 4));
-
- /* Record some facts about what we just created: */
- now = time(NULL); /* They were all created w/in last two seconds. */
-
- /* Use the cpio program to create an archive. */
- close(list);
- r = systemf("%s -o --format=newc <list >newc.out 2>newc.err",
- testprog);
- if (!assertEqualInt(r, 0))
- return;
-
- /* Verify that nothing went to stderr. */
- assertTextFileContents("2 blocks\n", "newc.err");
-
- /* Verify that stdout is a well-formed cpio file in "newc" format. */
- p = slurpfile(&s, "newc.out");
- assertEqualInt(s, 1024);
- e = p;
-
- /*
- * Some of these assertions could be stronger, but it's
- * a little tricky because they depend on the local environment.
- */
-
- /* First entry is "file1" */
- assert(is_hex(e, 110)); /* Entire header is octal digits. */
- assertEqualMem(e + 0, "070701", 6); /* Magic */
- ino = from_hex(e + 6, 8); /* ino */
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualInt(0x8180, from_hex(e + 14, 8) & 0xffc0); /* Mode */
-#else
- assertEqualInt(0x81a4, from_hex(e + 14, 8)); /* Mode */
-#endif
- assertEqualInt(from_hex(e + 22, 8), getuid()); /* uid */
- gid = from_hex(e + 30, 8); /* gid */
- assertEqualMem(e + 38, "00000003", 8); /* nlink */
- t = from_hex(e + 46, 8); /* mtime */
- failure("t=0x%08x now=0x%08x=%d", t, now, now);
- assert(t <= now); /* File wasn't created in future. */
- failure("t=0x%08x now - 2=0x%08x = %d", t, now - 2, now - 2);
- assert(t >= now - 2); /* File was created w/in last 2 secs. */
- failure("newc format stores body only with last appearance of a link\n"
- " first appearance should be empty, so this file size\n"
- " field should be zero");
- assertEqualInt(0, from_hex(e + 54, 8)); /* File size */
- fs = from_hex(e + 54, 8);
- fs += 3 & -fs;
- devmajor = from_hex(e + 62, 8); /* devmajor */
- devminor = from_hex(e + 70, 8); /* devminor */
- assert(is_hex(e + 78, 8)); /* rdevmajor */
- assert(is_hex(e + 86, 8)); /* rdevminor */
- assertEqualMem(e + 94, "00000006", 8); /* Name size */
- ns = from_hex(e + 94, 8);
- ns += 3 & (-ns - 2);
- assertEqualInt(0, from_hex(e + 102, 8)); /* check field */
- assertEqualMem(e + 110, "file1\0", 6); /* Name contents */
- /* Since there's another link, no file contents here. */
- /* But add in file size so that an error here doesn't cascade. */
- e += 110 + fs + ns;
-
- /* "symlink" pointing to "file1" */
- assert(is_hex(e, 110));
- assertEqualMem(e + 0, "070701", 6); /* Magic */
- assert(is_hex(e + 6, 8)); /* ino */
-#if !defined(_WIN32) || defined(__CYGWIN__)
- /* On Windows, symbolic link and group members bits and
- * others bits do not work. */
- assertEqualInt(0xa1ff, from_hex(e + 14, 8)); /* Mode */
-#endif
- assertEqualInt(from_hex(e + 22, 8), getuid()); /* uid */
- assertEqualInt(gid, from_hex(e + 30, 8)); /* gid */
- assertEqualMem(e + 38, "00000001", 8); /* nlink */
- t2 = from_hex(e + 46, 8); /* mtime */
- failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
- assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Symbolic link does not work. */
- assertEqualMem(e + 54, "0000000a", 8); /* File size */
-#else
- assertEqualMem(e + 54, "00000005", 8); /* File size */
-#endif
- fs = from_hex(e + 54, 8);
- fs += 3 & -fs;
- assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
- assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
- assert(is_hex(e + 78, 8)); /* rdevmajor */
- assert(is_hex(e + 86, 8)); /* rdevminor */
- assertEqualMem(e + 94, "00000008", 8); /* Name size */
- ns = from_hex(e + 94, 8);
- ns += 3 & (-ns - 2);
- assertEqualInt(0, from_hex(e + 102, 8)); /* check field */
- assertEqualMem(e + 110, "symlink\0\0\0", 10); /* Name contents */
-#if !defined(_WIN32) || defined(__CYGWIN__)
- assertEqualMem(e + 110 + ns, "file1\0\0\0", 8); /* symlink target */
-#endif
- e += 110 + fs + ns;
-
- /* "dir" */
- assert(is_hex(e, 110));
- assertEqualMem(e + 0, "070701", 6); /* Magic */
- assert(is_hex(e + 6, 8)); /* ino */
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualInt(0x41c0, from_hex(e + 14, 8) & 0xffc0); /* Mode */
-#else
- /* Mode: sgid bit sometimes propagates from parent dirs, ignore it. */
- assertEqualInt(040775, from_hex(e + 14, 8) & ~02000);
-#endif
- assertEqualInt(from_hex(e + 22, 8), getuid()); /* uid */
- assertEqualInt(gid, from_hex(e + 30, 8)); /* gid */
-#ifndef NLINKS_INACCURATE_FOR_DIRS
- assertEqualMem(e + 38, "00000002", 8); /* nlink */
-#endif
- t2 = from_hex(e + 46, 8); /* mtime */
- failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
- assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
- assertEqualMem(e + 54, "00000000", 8); /* File size */
- fs = from_hex(e + 54, 8);
- fs += 3 & -fs;
- assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
- assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
- assert(is_hex(e + 78, 8)); /* rdevmajor */
- assert(is_hex(e + 86, 8)); /* rdevminor */
- assertEqualMem(e + 94, "00000004", 8); /* Name size */
- ns = from_hex(e + 94, 8);
- ns += 3 & (-ns - 2);
- assertEqualInt(0, from_hex(e + 102, 8)); /* check field */
- assertEqualMem(e + 110, "dir\0\0\0", 6); /* Name contents */
- e += 110 + fs + ns;
-
- /* Hardlink identical to "file1" */
- /* Since we only wrote two of the three links to this
- * file, this link should get deferred by the hardlink logic. */
- assert(is_hex(e, 110));
- assertEqualMem(e + 0, "070701", 6); /* Magic */
- failure("If these aren't the same, then the hardlink detection failed to match them.");
- assertEqualInt(ino, from_hex(e + 6, 8)); /* ino */
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualInt(0x8180, from_hex(e + 14, 8) & 0xffc0); /* Mode */
-#else
- assertEqualInt(0x81a4, from_hex(e + 14, 8)); /* Mode */
-#endif
- assertEqualInt(from_hex(e + 22, 8), getuid()); /* uid */
- assertEqualInt(gid, from_hex(e + 30, 8)); /* gid */
- assertEqualMem(e + 38, "00000003", 8); /* nlink */
- t2 = from_hex(e + 46, 8); /* mtime */
- failure("First entry created at t=0x%08x this entry created at t2=0x%08x", t, t2);
- assert(t2 == t || t2 == t + 1); /* Almost same as first entry. */
- assertEqualInt(10, from_hex(e + 54, 8)); /* File size */
- fs = from_hex(e + 54, 8);
- fs += 3 & -fs;
- assertEqualInt(devmajor, from_hex(e + 62, 8)); /* devmajor */
- assertEqualInt(devminor, from_hex(e + 70, 8)); /* devminor */
- assert(is_hex(e + 78, 8)); /* rdevmajor */
- assert(is_hex(e + 86, 8)); /* rdevminor */
- assertEqualMem(e + 94, "00000009", 8); /* Name size */
- ns = from_hex(e + 94, 8);
- ns += 3 & (-ns - 2);
- assertEqualInt(0, from_hex(e + 102, 8)); /* check field */
- assertEqualMem(e + 110, "hardlink\0\0", 10); /* Name contents */
- assertEqualMem(e + 110 + ns, "123456789\0\0\0", 12); /* File contents */
- e += 110 + ns + fs;
-
- /* Last entry is end-of-archive marker. */
- assert(is_hex(e, 110));
- assertEqualMem(e + 0, "070701", 6); /* Magic */
- assertEqualMem(e + 8, "00000000", 8); /* ino */
- assertEqualMem(e + 14, "00000000", 8); /* mode */
- assertEqualMem(e + 22, "00000000", 8); /* uid */
- assertEqualMem(e + 30, "00000000", 8); /* gid */
- assertEqualMem(e + 38, "00000001", 8); /* nlink */
- assertEqualMem(e + 46, "00000000", 8); /* mtime */
- assertEqualMem(e + 54, "00000000", 8); /* size */
- assertEqualMem(e + 62, "00000000", 8); /* devmajor */
- assertEqualMem(e + 70, "00000000", 8); /* devminor */
- assertEqualMem(e + 78, "00000000", 8); /* rdevmajor */
- assertEqualMem(e + 86, "00000000", 8); /* rdevminor */
- assertEqualInt(11, from_hex(e + 94, 8)); /* name size */
- assertEqualMem(e + 102, "00000000", 8); /* check field */
- assertEqualMem(e + 110, "TRAILER!!!\0\0", 12); /* Name */
-
- free(p);
-
- umask(oldmask);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat.c b/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat.c
deleted file mode 100644
index f9604b9..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/test_gcpio_compat.c,v 1.2 2008/08/22 02:27:06 kientzle Exp $");
-
-static void
-unpack_test(const char *from, const char *options, const char *se)
-{
- struct stat st, st2;
-#if !defined(_WIN32) || defined(__CYGWIN__)
- char buff[128];
-#endif
- int r;
-
- /* Create a work dir named after the file we're unpacking. */
- assertEqualInt(0, mkdir(from, 0775));
- chdir(from);
-
- /*
- * Use cpio to unpack the sample archive
- */
- extract_reference_file(from);
- r = systemf("%s -i %s < %s >unpack.out 2>unpack.err",
- testprog, options, from);
- failure("Error invoking %s -i %s < %s",
- testprog, options, from);
- assertEqualInt(r, 0);
-
- /* Verify that nothing went to stderr. */
- failure("Error invoking %s -i %s < %s", testprog, options, from);
- assertTextFileContents(se, "unpack.err");
-
- /*
- * Verify unpacked files.
- */
-
- /* Regular file with 2 links. */
- r = lstat("file", &st);
- failure("Failed to stat file %s/file, errno=%d", from, errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0600, st.st_mode & 0700);
-#else
- assertEqualInt(0644, st.st_mode & 0777);
-#endif
- failure("file %s/file", from);
- assertEqualInt(10, st.st_size);
- failure("file %s/file", from);
- assertEqualInt(2, st.st_nlink);
- }
-
- /* Another name for the same file. */
- r = lstat("linkfile", &st2);
- failure("Failed to stat file %s/linkfile, errno=%d", from, errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st2.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0600, st2.st_mode & 0700);
-#else
- assertEqualInt(0644, st2.st_mode & 0777);
-#endif
- failure("file %s/file", from);
- assertEqualInt(10, st2.st_size);
- failure("file %s/file", from);
- assertEqualInt(2, st2.st_nlink);
- failure("file and linkfile should be hardlinked");
- assertEqualInt(st.st_dev, st2.st_dev);
- failure("file %s/file", from);
- assertEqualInt(st.st_ino, st2.st_ino);
- }
-
- /* Symlink */
- r = lstat("symlink", &st);
- failure("Failed to stat file %s/symlink, errno=%d", from, errno);
- assertEqualInt(r, 0);
-#if !defined(_WIN32) || defined(__CYGWIN__)
- if (r == 0) {
- failure("symlink should be a symlink; actual mode is %o",
- st.st_mode);
- assert(S_ISLNK(st.st_mode));
- if (S_ISLNK(st.st_mode)) {
- r = readlink("symlink", buff, sizeof(buff));
- assertEqualInt(r, 4);
- buff[r] = '\0';
- assertEqualString(buff, "file");
- }
- }
-#endif
-
- /* dir */
- r = lstat("dir", &st);
- if (r == 0) {
- assertEqualInt(r, 0);
- assert(S_ISDIR(st.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0700, st.st_mode & 0700);
-#else
- assertEqualInt(0775, st.st_mode & 0777);
-#endif
- }
-
- chdir("..");
-}
-
-DEFINE_TEST(test_gcpio_compat)
-{
- int oldumask;
-
- oldumask = umask(0);
-
- /* Dearchive sample files with a variety of options. */
- unpack_test("test_gcpio_compat_ref.bin", "--no-preserve-owner", "1 block\n");
- unpack_test("test_gcpio_compat_ref.crc", "--no-preserve-owner", "2 blocks\n");
- unpack_test("test_gcpio_compat_ref.newc", "--no-preserve-owner", "2 blocks\n");
- /* gcpio-2.9 only reads 6 blocks here */
- unpack_test("test_gcpio_compat_ref.ustar", "--no-preserve-owner", "7 blocks\n");
-
- umask(oldumask);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.bin.uu b/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.bin.uu
deleted file mode 100644
index 745d8ab..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.bin.uu
+++ /dev/null
@@ -1,16 +0,0 @@
-$FreeBSD$
-begin 644 test_gcpio_compat_ref.bin
-MQW%9`*IWI('H`^@#`@````U'=YD%````"@!F:6QE```Q,C,T-38W.#D*QW%9
-M`*IWI('H`^@#`@````U'=YD)````"@!L:6YK9FEL90``,3(S-#4V-S@Y"L=Q
-M60"K=^VAZ`/H`P$````-1X29"`````0`<WEM;&EN:P!F:6QEQW%9`*YW_4'H
-M`^@#`@````U'A9D$``````!D:7(`QW$``````````````0`````````+````
-M``!44D%)3$52(2$A````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-1````````````````````````
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.crc.uu b/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.crc.uu
deleted file mode 100644
index df8dde0..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.crc.uu
+++ /dev/null
@@ -1,27 +0,0 @@
-$FreeBSD$
-begin 644 test_gcpio_compat_ref.crc
-M,#<P-S`R,#`S,S<W86$P,#`P.#%A-#`P,#`P,V4X,#`P,#`S93@P,#`P,#`P
-M,C0W,&0Y.3<W,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#4Y,#`P,#`P,#`P,#`P
-M,#`P,#`P,#`P,#`U,#`P,#`P,#!F:6QE```P-S`W,#(P,#,S-S=A83`P,#`X
-M,6$T,#`P,#`S93@P,#`P,#-E.#`P,#`P,#`R-#<P9#DY-S<P,#`P,#`P83`P
-M,#`P,#`P,#`P,#`P-3DP,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#DP,#`P,#%E
-M-VQI;FMF:6QE```Q,C,T-38W.#D*```P-S`W,#(P,#,S-S=A8C`P,#!A,65D
-M,#`P,#`S93@P,#`P,#-E.#`P,#`P,#`Q-#<P9#DY.#0P,#`P,#`P-#`P,#`P
-M,#`P,#`P,#`P-3DP,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#@P,#`P,#`P,'-Y
-M;6QI;FL```!F:6QE,#<P-S`R,#`S,S<W864P,#`P-#%F9#`P,#`P,V4X,#`P
-M,#`S93@P,#`P,#`P,C0W,&0Y.3@U,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#4Y
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`T,#`P,#`P,#!D:7(````P-S`W,#(P
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`Q,#`P,#`P
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P
-M,#`P,&(P,#`P,#`P,%1204E,15(A(2$`````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-B````````````````````````````````````````````````
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.newc.uu b/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.newc.uu
deleted file mode 100644
index 1e29ba9..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.newc.uu
+++ /dev/null
@@ -1,27 +0,0 @@
-$FreeBSD$
-begin 644 test_gcpio_compat_ref.newc
-M,#<P-S`Q,#`S,S<W86$P,#`P.#%A-#`P,#`P,V4X,#`P,#`S93@P,#`P,#`P
-M,C0W,&0Y.3<W,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#4Y,#`P,#`P,#`P,#`P
-M,#`P,#`P,#`P,#`U,#`P,#`P,#!F:6QE```P-S`W,#$P,#,S-S=A83`P,#`X
-M,6$T,#`P,#`S93@P,#`P,#-E.#`P,#`P,#`R-#<P9#DY-S<P,#`P,#`P83`P
-M,#`P,#`P,#`P,#`P-3DP,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#DP,#`P,#`P
-M,&QI;FMF:6QE```Q,C,T-38W.#D*```P-S`W,#$P,#,S-S=A8C`P,#!A,65D
-M,#`P,#`S93@P,#`P,#-E.#`P,#`P,#`Q-#<P9#DY.#0P,#`P,#`P-#`P,#`P
-M,#`P,#`P,#`P-3DP,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#@P,#`P,#`P,'-Y
-M;6QI;FL```!F:6QE,#<P-S`Q,#`S,S<W864P,#`P-#%F9#`P,#`P,V4X,#`P
-M,#`S93@P,#`P,#`P,C0W,&0Y.3@U,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#4Y
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`T,#`P,#`P,#!D:7(````P-S`W,#$P
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`Q,#`P,#`P
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P
-M,#`P,&(P,#`P,#`P,%1204E,15(A(2$`````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-B````````````````````````````````````````````````
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.ustar.uu b/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.ustar.uu
deleted file mode 100644
index 77989f4..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_gcpio_compat_ref.ustar.uu
+++ /dev/null
@@ -1,84 +0,0 @@
-$FreeBSD$
-begin 644 test_gcpio_compat_ref.ustar
-M9FEL90``````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M`````````````#`P,#`V-#0`,#`P,3<U,``P,#`Q-S4P`#`P,#`P,#`P,#$R
-M`#$P-S`S,S$T-38W`#`P,3$S-C,`,```````````````````````````````
-M````````````````````````````````````````````````````````````
-M``````````````````````````````````````````!U<W1A<@`P,'1I;0``
-M````````````````````````````````````=&EM````````````````````
-M```````````````````P,#`P,#`P`#`P,#`P,#``````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M```````````````````````Q,C,T-38W.#D*````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M`````````````````````````````````````````````&QI;FMF:6QE````
-M````````````````````````````````````````````````````````````
-M```````````````````````````````````````````````````````````P
-M,#`P-C0T`#`P,#$W-3``,#`P,3<U,``P,#`P,#`P,#`P,``Q,#<P,S,Q-#4V
-M-P`P,#$S,#<W`#%F:6QE````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````=7-T87(`,#!T:6T`````````````````
-M`````````````````````'1I;0``````````````````````````````````
-M````,#`P,#`P,``P,#`P,#`P````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````<WEM;&EN:P``````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M`````````````````````#`P,#`W-34`,#`P,3<U,``P,#`Q-S4P`#`P,#`P
-M,#`P,#`P`#$P-S`S,S$T-C`T`#`P,3(W-C0`,F9I;&4`````````````````
-M````````````````````````````````````````````````````````````
-M``````````````````````````````````````````````````!U<W1A<@`P
-M,'1I;0``````````````````````````````````````=&EM````````````
-M```````````````````````````P,#`P,#`P`#`P,#`P,#``````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M``````````````````````````````!D:7(O````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````,#`P,#<W-0`P,#`Q
-M-S4P`#`P,#$W-3``,#`P,#`P,#`P,#``,3`W,#,S,30V,#4`,#`Q,3,P,0`U
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M`````````````'5S=&%R`#`P=&EM````````````````````````````````
-M``````!T:6T``````````````````````````````````````#`P,#`P,#``
-M,#`P,#`P,```````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-=````````````````````````````````````````
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_B_upper.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_B_upper.c
deleted file mode 100644
index 1b9260e..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_B_upper.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-
-DEFINE_TEST(test_option_B_upper)
-{
- struct stat st;
- int r, fd;
-
- /*
- * Create a file on disk.
- */
- fd = open("file", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- close(fd);
-
- /* Create an archive without -B; this should be 512 bytes. */
- r = systemf("echo file | %s -o > small.cpio 2>small.err", testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "small.err");
- assertEqualInt(0, stat("small.cpio", &st));
- assertEqualInt(512, st.st_size);
-
- /* Create an archive with -B; this should be 5120 bytes. */
- r = systemf("echo file | %s -oB > large.cpio 2>large.err", testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "large.err");
- assertEqualInt(0, stat("large.cpio", &st));
- assertEqualInt(5120, st.st_size);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_C_upper.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_C_upper.c
deleted file mode 100644
index b15f887..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_C_upper.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-
-DEFINE_TEST(test_option_C_upper)
-{
- struct stat st;
- int r, fd;
-
- /*
- * Create a file on disk.
- */
- fd = open("file", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- close(fd);
-
- /* Create an archive without -C; this should be 512 bytes. */
- r = systemf("echo file | %s -o > small.cpio 2>small.err", testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "small.err");
- assertEqualInt(0, stat("small.cpio", &st));
- assertEqualInt(512, st.st_size);
-
- /* Create an archive with -C 513; this should be 513 bytes. */
- r = systemf("echo file | %s -o -C 513 > 513.cpio 2>513.err",
- testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "513.err");
- assertEqualInt(0, stat("513.cpio", &st));
- assertEqualInt(513, st.st_size);
-
- /* Create an archive with -C 12345; this should be 12345 bytes. */
- r = systemf("echo file | %s -o -C12345 > 12345.cpio 2>12345.err",
- testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "12345.err");
- assertEqualInt(0, stat("12345.cpio", &st));
- assertEqualInt(12345, st.st_size);
-
- /* Create an archive with invalid -C request */
- assert(0 != systemf("echo file | %s -o -C > bad.cpio 2>bad.err",
- testprog));
- assertEmptyFile("bad.cpio");
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_L_upper.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_L_upper.c
deleted file mode 100644
index db5f642..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_L_upper.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/test_option_L.c,v 1.2 2008/08/24 06:21:00 kientzle Exp $");
-
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#define CAT "type"
-#else
-#define CAT "cat"
-#endif
-
-DEFINE_TEST(test_option_L_upper)
-{
- struct stat st;
- int fd, filelist;
- int r;
-
- filelist = open("filelist", O_CREAT | O_WRONLY, 0644);
-
- /* Create a file and a symlink to the file. */
- fd = open("file", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- write(filelist, "file\n", 5);
-
- /* Symlink to above file. */
- assertEqualInt(0, symlink("file", "symlink"));
- write(filelist, "symlink\n", 8);
-
- close(filelist);
-
- r = systemf(CAT " filelist | %s -pd copy >copy.out 2>copy.err", testprog);
- assertEqualInt(r, 0);
- assertEqualInt(0, lstat("copy/symlink", &st));
-#if !defined(_WIN32) || defined(__CYGWIN__)
- failure("Regular -p without -L should preserve symlinks.");
- assert(S_ISLNK(st.st_mode));
-#endif
-
- r = systemf(CAT " filelist | %s -pd -L copy-L >copy-L.out 2>copy-L.err", testprog);
- assertEqualInt(r, 0);
- assertEmptyFile("copy-L.out");
- assertTextFileContents("1 block\n", "copy-L.err");
- assertEqualInt(0, lstat("copy-L/symlink", &st));
- failure("-pdL should dereference symlinks and turn them into files.");
- assert(!S_ISLNK(st.st_mode));
-
- r = systemf(CAT " filelist | %s -o >archive.out 2>archive.err", testprog);
- failure("Error invoking %s -o ", testprog);
- assertEqualInt(r, 0);
-
- assertEqualInt(0, mkdir("unpack", 0755));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0, chdir("unpack"));
- r = systemf("type ..\\archive.out | %s -i >unpack.out 2>unpack.err", testprog);
- assertEqualInt(0, chdir(".."));
-#else
- r = systemf("cat archive.out | (cd unpack ; %s -i >unpack.out 2>unpack.err)", testprog);
-#endif
- failure("Error invoking %s -i", testprog);
- assertEqualInt(r, 0);
- assertEqualInt(0, lstat("unpack/symlink", &st));
-#if !defined(_WIN32) || defined(__CYGWIN__)
- assert(S_ISLNK(st.st_mode));
-#endif
-
- r = systemf(CAT " filelist | %s -oL >archive-L.out 2>archive-L.err", testprog);
- failure("Error invoking %s -oL", testprog);
- assertEqualInt(r, 0);
-
- assertEqualInt(0, mkdir("unpack-L", 0755));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0, chdir("unpack-L"));
- r = systemf("type ..\\archive-L.out | %s -i >unpack-L.out 2>unpack-L.err", testprog);
- assertEqualInt(0, chdir(".."));
-#else
- r = systemf("cat archive-L.out | (cd unpack-L ; %s -i >unpack-L.out 2>unpack-L.err)", testprog);
-#endif
- failure("Error invoking %s -i < archive-L.out", testprog);
- assertEqualInt(r, 0);
- assertEqualInt(0, lstat("unpack-L/symlink", &st));
- assert(!S_ISLNK(st.st_mode));
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_Z_upper.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_Z_upper.c
deleted file mode 100644
index 8117fee..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_Z_upper.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * Copyright (c) 2003-2009 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-DEFINE_TEST(test_option_Z_upper)
-{
- char *p;
- int fd;
- int r;
- size_t s;
-
- /* Create a file. */
- fd = open("f", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(1, write(fd, "a", 1));
- close(fd);
-
- /* Archive it with gzip compression. */
- r = systemf("echo f | %s -oZ >archive.out 2>archive.err",
- testprog);
- failure("-Z option seems to be broken");
- assertEqualInt(r, 0);
- if (r == 0) {
- p = slurpfile(&s, "archive.err");
- p[s] = '\0';
- if (strstr(p, "not supported") != NULL) {
- skipping("This version of bsdcpio was compiled "
- "without compress support");
- } else {
- /* Check that the archive file has a compress signature. */
- p = slurpfile(&s, "archive.out");
- assert(s > 2);
- assertEqualMem(p, "\x1f\x9d", 2);
- }
- }
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_a.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_a.c
deleted file mode 100644
index d1fe5ff..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_a.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/*-
- * Copyright (c) 2003-2008 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#include <sys/utime.h>
-#else
-#include <utime.h>
-#endif
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/test_option_a.c,v 1.3 2008/08/24 06:21:00 kientzle Exp $");
-
-static struct {
- const char *name;
- time_t atime_sec;
-} files[] = {
- { "f0", 0 },
- { "f1", 0 },
- { "f2", 0 },
- { "f3", 0 },
- { "f4", 0 },
- { "f5", 0 }
-};
-
-/*
- * Create a bunch of test files and record their atimes.
- * For the atime preserve/change tests, the files must have
- * atimes in the past. We can accomplish this by explicitly invoking
- * utime() on platforms that support it or by simply sleeping
- * for a second after creating the files. (Creating all of the files
- * at once means we only need to sleep once.)
- */
-static void
-test_create(void)
-{
- struct stat st;
- struct utimbuf times;
- static const int numfiles = sizeof(files) / sizeof(files[0]);
- int i;
- int fd;
-
- for (i = 0; i < numfiles; ++i) {
- fd = open(files[i].name, O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- /*
- * Note: Have to write at least one byte to the file.
- * cpio doesn't bother reading the file if it's zero length,
- * so the atime never gets changed in that case, which
- * makes the tests below rather pointless.
- */
- assertEqualInt(1, write(fd, "a", 1));
- close(fd);
-
- /* If utime() isn't supported on your platform, just
- * #ifdef this section out. Most of the test below is
- * still valid. */
- memset(&times, 0, sizeof(times));
- times.actime = 1;
- times.modtime = 3;
- assertEqualInt(0, utime(files[i].name, &times));
-
- /* Record whatever atime the file ended up with. */
- /* If utime() is available, this should be 1, but there's
- * no harm in being careful. */
- assertEqualInt(0, stat(files[i].name, &st));
- files[i].atime_sec = st.st_atime;
- }
-
- /* Wait until the atime on the last file is actually in the past. */
- /* If utime() is supported above, there's no sleep here which
- * makes the test faster. */
- while (files[numfiles - 1].atime_sec >= time(NULL))
- sleep(1);
-}
-
-DEFINE_TEST(test_option_a)
-{
- struct stat st;
- int r;
- int f;
- char buff[64];
-
- /* Create all of the test files. */
- test_create();
-
- /* Sanity check; verify that atimes really do get modified. */
- f = open(files[0].name, O_RDONLY);
- assertEqualInt(1, read(f,buff, 1));
- assertEqualInt(0, close(f));
- assertEqualInt(0, stat("f0", &st));
- if (st.st_atime == files[0].atime_sec) {
- skipping("Cannot verify -a option\n"
- " Your system appears to not support atime.");
- }
- else
- {
- /*
- * If this disk is mounted noatime, then we can't
- * verify correct operation without -a.
- */
-
- /* Copy the file without -a; should change the atime. */
- r = systemf("echo %s | %s -pd copy-no-a > copy-no-a.out 2>copy-no-a.err", files[1].name, testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "copy-no-a.err");
- assertEmptyFile("copy-no-a.out");
- assertEqualInt(0, stat(files[1].name, &st));
- failure("Copying file without -a should have changed atime.");
- assert(st.st_atime != files[1].atime_sec);
-
- /* Archive the file without -a; should change the atime. */
- r = systemf("echo %s | %s -o > archive-no-a.out 2>archive-no-a.err", files[2].name, testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "copy-no-a.err");
- assertEqualInt(0, stat(files[2].name, &st));
- failure("Archiving file without -a should have changed atime.");
- assert(st.st_atime != files[2].atime_sec);
- }
-
- /*
- * We can, of course, still verify that the atime is unchanged
- * when using the -a option.
- */
-
- /* Copy the file with -a; should not change the atime. */
- r = systemf("echo %s | %s -pad copy-a > copy-a.out 2>copy-a.err",
- files[3].name, testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "copy-a.err");
- assertEmptyFile("copy-a.out");
- assertEqualInt(0, stat(files[3].name, &st));
- failure("Copying file with -a should not have changed atime.");
- assertEqualInt(st.st_atime, files[3].atime_sec);
-
- /* Archive the file with -a; should not change the atime. */
- r = systemf("echo %s | %s -oa > archive-a.out 2>archive-a.err",
- files[4].name, testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "copy-a.err");
- assertEqualInt(0, stat(files[4].name, &st));
- failure("Archiving file with -a should not have changed atime.");
- assertEqualInt(st.st_atime, files[4].atime_sec);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_c.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_c.c
deleted file mode 100644
index 23eabff..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_c.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-static int
-is_octal(const char *p, size_t l)
-{
- while (l > 0) {
- if (*p < '0' || *p > '7')
- return (0);
- --l;
- ++p;
- }
- return (1);
-}
-
-static int
-from_octal(const char *p, size_t l)
-{
- int r = 0;
-
- while (l > 0) {
- r *= 8;
- r += *p - '0';
- --l;
- ++p;
- }
- return (r);
-}
-
-DEFINE_TEST(test_option_c)
-{
- int fd, filelist;
- int r;
- int dev, ino, gid;
- time_t t, now;
- char *p, *e;
- size_t s;
- mode_t oldmask;
-
- oldmask = umask(0);
-
- /*
- * Create an assortment of files.
- * TODO: Extend this to cover more filetypes.
- */
- filelist = open("filelist", O_CREAT | O_WRONLY, 0644);
-
- /* "file" */
- fd = open("file", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- assertEqualInt(5, write(filelist, "file\n", 5));
-
- /* "symlink" */
- assertEqualInt(0, symlink("file", "symlink"));
- assertEqualInt(8, write(filelist, "symlink\n", 8));
-
- /* "dir" */
- assertEqualInt(0, mkdir("dir", 0775));
- /* Record some facts about what we just created: */
- now = time(NULL); /* They were all created w/in last two seconds. */
- assertEqualInt(4, write(filelist, "dir\n", 4));
-
- /* Use the cpio program to create an archive. */
- close(filelist);
- r = systemf("%s -oc <filelist >basic.out 2>basic.err", testprog);
- /* Verify that nothing went to stderr. */
- assertTextFileContents("1 block\n", "basic.err");
-
- /* Assert that the program finished. */
- failure("%s -oc crashed", testprog);
- if (!assertEqualInt(r, 0))
- return;
-
- /* Verify that stdout is a well-formed cpio file in "odc" format. */
- p = slurpfile(&s, "basic.out");
- assertEqualInt(s, 512);
- e = p;
-
- /*
- * Some of these assertions could be stronger, but it's
- * a little tricky because they depend on the local environment.
- */
-
- /* First entry is "file" */
- assert(is_octal(e, 76)); /* Entire header is octal digits. */
- assertEqualMem(e + 0, "070707", 6); /* Magic */
- assert(is_octal(e + 6, 6)); /* dev */
- dev = from_octal(e + 6, 6);
- assert(is_octal(e + 12, 6)); /* ino */
- ino = from_octal(e + 12, 6);
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualMem(e + 18, "100666", 6); /* Mode */
-#else
- assertEqualMem(e + 18, "100644", 6); /* Mode */
-#endif
- assertEqualInt(from_octal(e + 24, 6), getuid()); /* uid */
- assert(is_octal(e + 30, 6)); /* gid */
- gid = from_octal(e + 30, 6);
- assertEqualMem(e + 36, "000001", 6); /* nlink */
- failure("file entries should not have rdev set (dev field was 0%o)",
- dev);
- assertEqualMem(e + 42, "000000", 6); /* rdev */
- t = from_octal(e + 48, 11); /* mtime */
- assert(t <= now); /* File wasn't created in future. */
- assert(t >= now - 2); /* File was created w/in last 2 secs. */
- assertEqualMem(e + 59, "000005", 6); /* Name size */
- assertEqualMem(e + 65, "00000000012", 11); /* File size */
- assertEqualMem(e + 76, "file\0", 5); /* Name contents */
- assertEqualMem(e + 81, "123456789\0", 10); /* File contents */
- e += 91;
-
- /* Second entry is "symlink" pointing to "file" */
- assert(is_octal(e, 76)); /* Entire header is octal digits. */
- assertEqualMem(e + 0, "070707", 6); /* Magic */
- assertEqualInt(dev, from_octal(e + 6, 6)); /* dev */
- assert(dev != from_octal(e + 12, 6)); /* ino */
-#if !defined(_WIN32) || defined(__CYGWIN__)
- /* On Windows, symbolic link and group members bits and
- * others bits do not work. */
- assertEqualMem(e + 18, "120777", 6); /* Mode */
-#endif
- assertEqualInt(from_octal(e + 24, 6), getuid()); /* uid */
- assertEqualInt(gid, from_octal(e + 30, 6)); /* gid */
- assertEqualMem(e + 36, "000001", 6); /* nlink */
- failure("file entries should have rdev == 0 (dev was 0%o)",
- from_octal(e + 6, 6));
- assertEqualMem(e + 42, "000000", 6); /* rdev */
- t = from_octal(e + 48, 11); /* mtime */
- assert(t <= now); /* File wasn't created in future. */
- assert(t >= now - 2); /* File was created w/in last 2 secs. */
- assertEqualMem(e + 59, "000010", 6); /* Name size */
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* On Windows, symbolic link does not work. */
- assertEqualMem(e + 65, "00000000012", 11); /* File size */
-#else
- assertEqualMem(e + 65, "00000000004", 11); /* File size */
-#endif
- assertEqualMem(e + 76, "symlink\0", 8); /* Name contents */
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* On Windows, symbolic link does not work. */
- assertEqualMem(e + 84, "123456789\0", 10); /* File contents. */
- e += 94;
-#else
- assertEqualMem(e + 84, "file", 4); /* Symlink target. */
- e += 88;
-#endif
-
- /* Second entry is "dir" */
- assert(is_octal(e, 76));
- assertEqualMem(e + 0, "070707", 6); /* Magic */
- /* Dev should be same as first entry. */
- assert(is_octal(e + 6, 6)); /* dev */
- assertEqualInt(dev, from_octal(e + 6, 6));
- /* Ino must be different from first entry. */
- assert(is_octal(e + 12, 6)); /* ino */
- assert(dev != from_octal(e + 12, 6));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Group members bits and others bits do not work. */
- assertEqualMem(e + 18, "040777", 6); /* Mode */
-#else
- /* Accept 042775 to accomodate systems where sgid bit propagates. */
- if (memcmp(e + 18, "042775", 6) != 0)
- assertEqualMem(e + 18, "040775", 6); /* Mode */
-#endif
- assertEqualInt(from_octal(e + 24, 6), getuid()); /* uid */
- /* Gid should be same as first entry. */
- assert(is_octal(e + 30, 6)); /* gid */
- assertEqualInt(gid, from_octal(e + 30, 6));
-#ifndef NLINKS_INACCURATE_FOR_DIRS
- assertEqualMem(e + 36, "000002", 6); /* Nlink */
-#endif
- t = from_octal(e + 48, 11); /* mtime */
- assert(t <= now); /* File wasn't created in future. */
- assert(t >= now - 2); /* File was created w/in last 2 secs. */
- assertEqualMem(e + 59, "000004", 6); /* Name size */
- assertEqualMem(e + 65, "00000000000", 11); /* File size */
- assertEqualMem(e + 76, "dir\0", 4); /* name */
- e += 80;
-
- /* TODO: Verify other types of entries. */
-
- /* Last entry is end-of-archive marker. */
- assert(is_octal(e, 76));
- assertEqualMem(e + 0, "070707", 6); /* Magic */
- assertEqualMem(e + 6, "000000", 6); /* dev */
- assertEqualMem(e + 12, "000000", 6); /* ino */
- assertEqualMem(e + 18, "000000", 6); /* Mode */
- assertEqualMem(e + 24, "000000", 6); /* uid */
- assertEqualMem(e + 30, "000000", 6); /* gid */
- assertEqualMem(e + 36, "000001", 6); /* Nlink */
- assertEqualMem(e + 42, "000000", 6); /* rdev */
- assertEqualMem(e + 48, "00000000000", 11); /* mtime */
- assertEqualMem(e + 59, "000013", 6); /* Name size */
- assertEqualMem(e + 65, "00000000000", 11); /* File size */
- assertEqualMem(e + 76, "TRAILER!!!\0", 11); /* Name */
-
- free(p);
-
- umask(oldmask);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_d.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_d.c
deleted file mode 100644
index cb422ae..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_d.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-
-DEFINE_TEST(test_option_d)
-{
- struct stat st;
- int r, fd;
-
- /*
- * Create a file in a directory.
- */
- assertEqualInt(0, mkdir("dir", 0755));
- fd = open("dir/file", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- close(fd);
-
- /* Create an archive. */
- r = systemf("echo dir/file | %s -o > archive.cpio 2>archive.err", testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "archive.err");
- assertEqualInt(0, stat("archive.cpio", &st));
- assertEqualInt(512, st.st_size);
-
- /* Dearchive without -d, this should fail. */
- assertEqualInt(0, mkdir("without-d", 0755));
- assertEqualInt(0, chdir("without-d"));
- r = systemf("%s -i < ../archive.cpio >out 2>err", testprog);
- assertEqualInt(r, 0);
- assertEmptyFile("out");
- /* And the file should not be restored. */
- assert(0 != stat("dir/file", &st));
-
- /* Dearchive with -d, this should succeed. */
- assertEqualInt(0, chdir(".."));
- assertEqualInt(0, mkdir("with-d", 0755));
- assertEqualInt(0, chdir("with-d"));
- r = systemf("%s -id < ../archive.cpio >out 2>err", testprog);
- assertEqualInt(r, 0);
- assertEmptyFile("out");
- assertTextFileContents("1 block\n", "err");
- /* And the file should be restored. */
- assertEqualInt(0, stat("dir/file", &st));
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_f.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_f.c
deleted file mode 100644
index 9d6b24c..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_f.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-/*
- * Unpack the archive in a new dir.
- */
-static void
-unpack(const char *dirname, const char *option)
-{
- int r;
-
- assertEqualInt(0, mkdir(dirname, 0755));
- assertEqualInt(0, chdir(dirname));
- extract_reference_file("test_option_f.cpio");
- r = systemf("%s -i %s < test_option_f.cpio > copy-no-a.out 2>copy-no-a.err", testprog, option);
- assertEqualInt(0, r);
- assertEqualInt(0, chdir(".."));
-}
-
-DEFINE_TEST(test_option_f)
-{
- /* Calibrate: No -f option, so everything should be extracted. */
- unpack("t0", "--no-preserve-owner");
- assertEqualInt(0, access("t0/a123", F_OK));
- assertEqualInt(0, access("t0/a234", F_OK));
- assertEqualInt(0, access("t0/b123", F_OK));
- assertEqualInt(0, access("t0/b234", F_OK));
-
- /* Don't extract 'a*' files. */
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Single quotes isn't used by command.exe. */
- unpack("t1", "--no-preserve-owner -f a*");
-#else
- unpack("t1", "--no-preserve-owner -f 'a*'");
-#endif
- assert(0 != access("t1/a123", F_OK));
- assert(0 != access("t1/a234", F_OK));
- assertEqualInt(0, access("t1/b123", F_OK));
- assertEqualInt(0, access("t1/b234", F_OK));
-
- /* Don't extract 'b*' files. */
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* Single quotes isn't used by command.exe. */
- unpack("t2", "--no-preserve-owner -f b*");
-#else
- unpack("t2", "--no-preserve-owner -f 'b*'");
-#endif
- assertEqualInt(0, access("t2/a123", F_OK));
- assertEqualInt(0, access("t2/a234", F_OK));
- assert(0 != access("t2/b123", F_OK));
- assert(0 != access("t2/b234", F_OK));
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_f.cpio.uu b/libarchive/libarchive-2.7.1/cpio/test/test_option_f.cpio.uu
deleted file mode 100644
index 42c63c3..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_f.cpio.uu
+++ /dev/null
@@ -1,16 +0,0 @@
-$FreeBSD$
-begin 644 test_option_f.cpio
-M,#<P-S`W,#`P,3,Q-C(Q-38Q,3`P-C0T,#`Q-S4P,#`Q-S4P,#`P,#`Q,#`P
-M,#`P,3`W,S4Q,3(U,C8P,#`P,#4P,#`P,#`P,#`P,&$Q,C,`,#<P-S`W,#`P
-M,3,Q-C(Q-38S,3`P-C0T,#`Q-S4P,#`Q-S4P,#`P,#`Q,#`P,#`P,3`W,S4Q
-M,3(U-#`P,#`P,#4P,#`P,#`P,#`P,&$R,S0`,#<P-S`W,#`P,3,Q-C(Q-38R
-M,3`P-C0T,#`Q-S4P,#`Q-S4P,#`P,#`Q,#`P,#`P,3`W,S4Q,3(U,S0P,#`P
-M,#4P,#`P,#`P,#`P,&(Q,C,`,#<P-S`W,#`P,3,Q-C(Q-38T,3`P-C0T,#`Q
-M-S4P,#`Q-S4P,#`P,#`Q,#`P,#`P,3`W,S4Q,3(U-#,P,#`P,#4P,#`P,#`P
-M,#`P,&(R,S0`,#<P-S`W,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P
-M,#`P,#`Q,#`P,#`P,#`P,#`P,#`P,#`P,#`P,3,P,#`P,#`P,#`P,%1204E,
-M15(A(2$`````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-1````````````````````````
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_help.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_help.c
deleted file mode 100644
index b9433a4..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_help.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-/*
- * Test that "--help", "-h", and "-W help" options all work and
- * generate reasonable output.
- */
-
-static int
-in_first_line(const char *p, const char *substring)
-{
- size_t l = strlen(substring);
-
- while (*p != '\0' && *p != '\n') {
- if (memcmp(p, substring, l) == 0)
- return (1);
- ++p;
- }
- return (0);
-}
-
-DEFINE_TEST(test_option_help)
-{
- int r;
- char *p;
- size_t plen;
-
- /* Exercise --help option. */
- r = systemf("%s --help >help.stdout 2>help.stderr", testprog);
- failure("--help should generate nothing to stderr.");
- assertEmptyFile("help.stderr");
- /* Help message should start with name of program. */
- p = slurpfile(&plen, "help.stdout");
- failure("Help output should be long enough.");
- assert(plen >= 7);
- failure("First line of help output should contain string 'bsdcpio'");
- assert(in_first_line(p, "bsdcpio"));
- /*
- * TODO: Extend this check to further verify that --help output
- * looks approximately right.
- */
- free(p);
-
- /* -h option should generate the same output. */
- r = systemf("%s -h >h.stdout 2>h.stderr", testprog);
- failure("-h should generate nothing to stderr.");
- assertEmptyFile("h.stderr");
- failure("stdout should be same for -h and --help");
- assertEqualFile("h.stdout", "help.stdout");
-
- /* -W help should be another synonym. */
- r = systemf("%s -W help >Whelp.stdout 2>Whelp.stderr", testprog);
- failure("-W help should generate nothing to stderr.");
- assertEmptyFile("Whelp.stderr");
- failure("stdout should be same for -W help and --help");
- assertEqualFile("Whelp.stdout", "help.stdout");
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_l.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_l.c
deleted file mode 100644
index c6110fa..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_l.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-DEFINE_TEST(test_option_l)
-{
- struct stat st, st2;
- int fd;
- int r;
-
- /* Create a file. */
- fd = open("f", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(1, write(fd, "a", 1));
- close(fd);
-
- /* Stat it. */
- assertEqualInt(0, stat("f", &st));
-
- /* Copy the file to the "copy" dir. */
- r = systemf("echo f | %s -pd copy >copy.out 2>copy.err",
- testprog);
- assertEqualInt(r, 0);
-
- /* Check that the copy is a true copy and not a link. */
- assertEqualInt(0, stat("copy/f", &st2));
- assert(st2.st_ino != st.st_ino);
-
- /* Copy the file to the "link" dir with the -l option. */
- r = systemf("echo f | %s -pld link >link.out 2>link.err",
- testprog);
- assertEqualInt(r, 0);
-
- /* Check that this is a link and not a copy. */
- assertEqualInt(0, stat("link/f", &st2));
- assert(st2.st_ino == st.st_ino);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_m.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_m.c
deleted file mode 100644
index fc02d2e..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_m.c
+++ /dev/null
@@ -1,70 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-
-DEFINE_TEST(test_option_m)
-{
- struct stat st;
- int r;
- time_t now;
-
- /*
- * The reference archive has one file with an mtime in 1970, 1
- * second after the start of the epoch.
- */
-
- /* Restored without -m, the result should have a current mtime. */
- assertEqualInt(0, mkdir("without-m", 0755));
- assertEqualInt(0, chdir("without-m"));
- extract_reference_file("test_option_m.cpio");
- r = systemf("%s --no-preserve-owner -i < test_option_m.cpio >out 2>err", testprog);
- now = time(NULL);
- assertEqualInt(r, 0);
- assertEmptyFile("out");
- assertTextFileContents("1 block\n", "err");
- assertEqualInt(0, stat("file", &st));
- /* Should have been created within the last few seconds. */
- assert(st.st_mtime <= now);
- assert(st.st_mtime > now - 5);
-
- /* With -m, it should have an mtime in 1970. */
- assertEqualInt(0, chdir(".."));
- assertEqualInt(0, mkdir("with-m", 0755));
- assertEqualInt(0, chdir("with-m"));
- extract_reference_file("test_option_m.cpio");
- r = systemf("%s --no-preserve-owner -im < test_option_m.cpio >out 2>err", testprog);
- now = time(NULL);
- assertEqualInt(r, 0);
- assertEmptyFile("out");
- assertTextFileContents("1 block\n", "err");
- assertEqualInt(0, stat("file", &st));
- /*
- * mtime in reference archive is '1' == 1 second after
- * midnight Jan 1, 1970 UTC.
- */
- assertEqualInt(1, st.st_mtime);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_m.cpio.uu b/libarchive/libarchive-2.7.1/cpio/test/test_option_m.cpio.uu
deleted file mode 100644
index 3d20023..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_m.cpio.uu
+++ /dev/null
@@ -1,16 +0,0 @@
-$FreeBSD$
-begin 644 test_option_m.cpio
-M,#<P-S`W,#`P,3,Q-#4P,#8T,3`P-C0T,#`Q-S4P,#`Q-S4P,#`P,#`Q,#`P
-M,#`P,#`P,#`P,#`P,#$P,#`P,#4P,#`P,#`P,#`P,&9I;&4`,#<P-S`W,#`P
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`Q,#`P,#`P,#`P,#`P
-M,#`P,#`P,#`P,3,P,#`P,#`P,#`P,%1204E,15(A(2$`````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-1````````````````````````
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_t.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_t.c
deleted file mode 100644
index 1c9af19..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_t.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-
-DEFINE_TEST(test_option_t)
-{
- char *p;
- int r;
-
- /* List reference archive, make sure the TOC is correct. */
- extract_reference_file("test_option_t.cpio");
- r = systemf("%s -it < test_option_t.cpio >it.out 2>it.err", testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "it.err");
- extract_reference_file("test_option_t.stdout");
- p = slurpfile(NULL, "test_option_t.stdout");
- assertTextFileContents(p, "it.out");
- free(p);
-
- /* We accept plain "-t" as a synonym for "-it" */
- r = systemf("%s -t < test_option_t.cpio >t.out 2>t.err", testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "t.err");
- extract_reference_file("test_option_t.stdout");
- p = slurpfile(NULL, "test_option_t.stdout");
- assertTextFileContents(p, "t.out");
- free(p);
-
- /* But "-ot" is an error. */
- assert(0 != systemf("%s -ot < test_option_t.cpio >ot.out 2>ot.err",
- testprog));
- assertEmptyFile("ot.out");
-
- /* List reference archive verbosely, make sure the TOC is correct. */
- r = systemf("%s -itv < test_option_t.cpio >tv.out 2>tv.err", testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "tv.err");
- extract_reference_file("test_option_tv.stdout");
-
- /* This doesn't work because the usernames on different systems
- * are different and cpio now looks up numeric UIDs on
- * the local system. */
- /* assertEqualFile("tv.out", "test_option_tv.stdout"); */
-
- /* List reference archive with numeric IDs, verify TOC is correct. */
- r = systemf("%s -itnv < test_option_t.cpio >itnv.out 2>itnv.err",
- testprog);
- assertEqualInt(r, 0);
- assertTextFileContents("1 block\n", "itnv.err");
- extract_reference_file("test_option_tnv.stdout");
- /* This does work because numeric IDs come from archive. */
- /* Unfortunately, the timestamp still gets localized, so
- * we can't just compare against a fixed result. */
- /* TODO: Fix this. */
- /* assertEqualFile("itnv.out", "test_option_tnv.stdout"); */
-
- /* But "-n" without "-t" is an error. */
- assert(0 != systemf("%s -in < test_option_t.cpio >in.out 2>in.err",
- testprog));
- assertEmptyFile("in.out");
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_t.cpio.uu b/libarchive/libarchive-2.7.1/cpio/test/test_option_t.cpio.uu
deleted file mode 100644
index 055fe74..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_t.cpio.uu
+++ /dev/null
@@ -1,16 +0,0 @@
-$FreeBSD$
-begin 644 test_option_t.cpio
-M,#<P-S`W,#`P,3,Q-#4P,#8T,3`P-C0T,#`Q-S4P,#`Q-S4P,#`P,#`Q,#`P
-M,#`P,#`P,#`P,#`P,#$P,#`P,#4P,#`P,#`P,#`P,&9I;&4`,#<P-S`W,#`P
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`Q,#`P,#`P,#`P,#`P
-M,#`P,#`P,#`P,3,P,#`P,#`P,#`P,%1204E,15(A(2$`````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-1````````````````````````
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_t.stdout.uu b/libarchive/libarchive-2.7.1/cpio/test/test_option_t.stdout.uu
deleted file mode 100644
index 2457706..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_t.stdout.uu
+++ /dev/null
@@ -1,5 +0,0 @@
-$FreeBSD$
-begin 644 test_option_t.stdout
-%9FEL90H`
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_tnv.stdout.uu b/libarchive/libarchive-2.7.1/cpio/test/test_option_tnv.stdout.uu
deleted file mode 100644
index 8f9561e..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_tnv.stdout.uu
+++ /dev/null
@@ -1,5 +0,0 @@
-begin 644 test_option_tnv.stdout
-M+7)W+7(M+7(M+2`@(#$@,3`P,"`@("`@,3`P,"`@("`@("`@("`@(#`@2F%N
-/("`Q("`Q.3<P(&9I;&4*
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_tv.stdout.uu b/libarchive/libarchive-2.7.1/cpio/test/test_option_tv.stdout.uu
deleted file mode 100644
index e28888a..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_tv.stdout.uu
+++ /dev/null
@@ -1,6 +0,0 @@
-$FreeBSD: src/usr.bin/cpio/test/test_option_tv.stdout.uu,v 1.2 2008/11/29 20:22:02 kientzle Exp $
-begin 644 test_option_tv.stdout
-M+7)W+7(M+7(M+2`@(#$@=&EM("`@("`@=&EM("`@("`@("`@("`@(#`@1&5C
-/(#,Q("`Q.38Y(&9I;&4*
-`
-end
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_u.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_u.c
deleted file mode 100644
index 7d2edff..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_u.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#include <sys/utime.h>
-#else
-#include <utime.h>
-#endif
-__FBSDID("$FreeBSD$");
-
-DEFINE_TEST(test_option_u)
-{
- struct utimbuf times;
- char *p;
- size_t s;
- int fd;
- int r;
-
- /* Create a file. */
- fd = open("f", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(1, write(fd, "a", 1));
- close(fd);
-
- /* Copy the file to the "copy" dir. */
- r = systemf("echo f | %s -pd copy >copy.out 2>copy.err",
- testprog);
- assertEqualInt(r, 0);
-
- /* Check that the file contains only a single "a" */
- p = slurpfile(&s, "copy/f");
- assertEqualInt(s, 1);
- assertEqualMem(p, "a", 1);
-
- /* Recreate the file with a single "b" */
- fd = open("f", O_CREAT | O_TRUNC | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(1, write(fd, "b", 1));
- close(fd);
-
- /* Set the mtime to the distant past. */
- memset(&times, 0, sizeof(times));
- times.actime = 1;
- times.modtime = 3;
- assertEqualInt(0, utime("f", &times));
-
- /* Copy the file to the "copy" dir. */
- r = systemf("echo f | %s -pd copy >copy.out 2>copy.err",
- testprog);
- assertEqualInt(r, 0);
-
- /* Verify that the file hasn't changed (it wasn't overwritten) */
- p = slurpfile(&s, "copy/f");
- assertEqualInt(s, 1);
- assertEqualMem(p, "a", 1);
-
- /* Copy the file to the "copy" dir with -u (force) */
- r = systemf("echo f | %s -pud copy >copy.out 2>copy.err",
- testprog);
- assertEqualInt(r, 0);
-
- /* Verify that the file has changed (it was overwritten) */
- p = slurpfile(&s, "copy/f");
- assertEqualInt(s, 1);
- assertEqualMem(p, "b", 1);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_version.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_version.c
deleted file mode 100644
index 8a25248..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_version.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-/*
- * Test that --version option works and generates reasonable output.
- */
-
-static void
-verify(const char *p, size_t s)
-{
- const char *q = p;
-
- /* Version message should start with name of program, then space. */
- failure("version message too short:", p);
- if (!assert(s > 6))
- return;
- failure("Version message should begin with 'bsdcpio': %s", p);
- if (!assertEqualMem(q, "bsdcpio ", 8))
- /* If we're not testing bsdcpio, don't keep going. */
- return;
- q += 8; s -= 8;
- /* Version number is a series of digits and periods. */
- while (s > 0 && (*q == '.' || (*q >= '0' && *q <= '9'))) {
- ++q;
- --s;
- }
- /* Version number terminated by space. */
- failure("Version: %s", p);
- assert(s > 1);
- /* Skip a single trailing a,b,c, or d. */
- if (*q == 'a' || *q == 'b' || *q == 'c' || *q == 'd')
- ++q;
- failure("Version: %s", p);
- assert(*q == ' ');
- ++q; --s;
- /* Separator. */
- failure("Version: %s", p);
- assertEqualMem(q, "-- ", 3);
- q += 3; s -= 3;
- /* libarchive name and version number */
- assert(s > 11);
- failure("Version: %s", p);
- assertEqualMem(q, "libarchive ", 11);
- q += 11; s -= 11;
- /* Version number is a series of digits and periods. */
- while (s > 0 && (*q == '.' || (*q >= '0' && *q <= '9'))) {
- ++q;
- --s;
- }
- /* Skip a single trailing a,b,c, or d. */
- if (*q == 'a' || *q == 'b' || *q == 'c' || *q == 'd')
- ++q;
- /* All terminated by a newline. */
- assert(s >= 1);
- failure("Version: %s", p);
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualMem(q, "\r\n", 2);
-#else
- assertEqualMem(q, "\n", 1);
-#endif
-}
-
-
-DEFINE_TEST(test_option_version)
-{
- int r;
- char *p;
- size_t s;
-
- r = systemf("%s --version >version.stdout 2>version.stderr", testprog);
- if (r != 0)
- r = systemf("%s -W version >version.stdout 2>version.stderr",
- testprog);
- failure("Unable to run either %s --version or %s -W version",
- testprog, testprog);
- if (!assert(r == 0))
- return;
-
- /* --version should generate nothing to stderr. */
- assertEmptyFile("version.stderr");
- /* Verify format of version message. */
- p = slurpfile(&s, "version.stdout");
- verify(p, s);
- free(p);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_y.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_y.c
deleted file mode 100644
index 92280be..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_y.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/test_option_y.c,v 1.2 2008/08/24 06:21:00 kientzle Exp $");
-
-DEFINE_TEST(test_option_y)
-{
- char *p;
- int fd;
- int r;
- size_t s;
-
- /* Create a file. */
- fd = open("f", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(1, write(fd, "a", 1));
- close(fd);
-
- /* Archive it with bzip2 compression. */
- r = systemf("echo f | %s -oy >archive.out 2>archive.err",
- testprog);
- failure("-y (bzip) option seems to be broken");
- if (assertEqualInt(r, 0)) {
- p = slurpfile(&s, "archive.err");
- p[s] = '\0';
- if (strstr(p, "bzip2 compression not supported") != NULL) {
- skipping("This version of bsdcpio was compiled "
- "without bzip2 support");
- } else {
- assertTextFileContents("1 block\n", "archive.err");
- /* Check that the archive file has a bzip2 signature. */
- p = slurpfile(&s, "archive.out");
- assert(s > 2);
- assertEqualMem(p, "BZh9", 4);
- }
- }
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_option_z.c b/libarchive/libarchive-2.7.1/cpio/test/test_option_z.c
deleted file mode 100644
index 2057912..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_option_z.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-DEFINE_TEST(test_option_z)
-{
- char *p;
- int fd;
- int r;
- size_t s;
-
- /* Create a file. */
- fd = open("f", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(1, write(fd, "a", 1));
- close(fd);
-
- /* Archive it with gzip compression. */
- r = systemf("echo f | %s -oz >archive.out 2>archive.err",
- testprog);
- failure("-z option seems to be broken");
- assertEqualInt(r, 0);
- if (r == 0) {
- p = slurpfile(&s, "archive.err");
- p[s] = '\0';
- if (strstr(p, "gzip compression not supported") != NULL) {
- skipping("This version of bsdcpio was compiled "
- "without gzip support");
- } else {
- /* Check that the archive file has a gzip signature. */
- p = slurpfile(&s, "archive.out");
- assert(s > 2);
- assertEqualMem(p, "\x1f\x8b\x08\x00", 4);
- }
- }
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_owner_parse.c b/libarchive/libarchive-2.7.1/cpio/test/test_owner_parse.c
deleted file mode 100644
index 1e9434f..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_owner_parse.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-#include "../cpio.h"
-
-#if defined(__CYGWIN__)
-/* On cygwin, the Administrator user most likely exists (unless
- * it has been renamed or is in a non-English localization), but
- * its primary group membership depends on how the user set up
- * their /etc/passwd. Likely values are 513 (None), 545 (Users),
- * or 544 (Administrators). Just check for one of those...
- * TODO: Handle non-English localizations...e.g. French 'Administrateur'
- * Use CreateWellKnownSID() and LookupAccountName()?
- */
-#define ROOT "Administrator"
-#define ROOT_UID 500
-#define ROOT_GID1 513
-#define ROOT_GID2 545
-#define ROOT_GID3 544
-#else
-#define ROOT "root"
-#define ROOT_UID 0
-#define ROOT_GID 0
-#endif
-
-
-DEFINE_TEST(test_owner_parse)
-{
-#if defined(_WIN32) && !defined(__CYGWIN__)
- /* TODO: Does this need cygwin style handling of uid/gid ? */
- skipping("Windows cannot handle uid/gid as UNIX like system");
-#else
- int uid, gid;
-
- cpio_progname = "Ignore this message";
-
- assertEqualInt(0, owner_parse(ROOT, &uid, &gid));
- assertEqualInt(ROOT_UID, uid);
- assertEqualInt(-1, gid);
-
-
- assertEqualInt(0, owner_parse(ROOT ":", &uid, &gid));
- assertEqualInt(ROOT_UID, uid);
-#if defined(__CYGWIN__)
- {
- int gidIsOneOf = (ROOT_GID1 == gid)
- || (ROOT_GID2 == gid)
- || (ROOT_GID3 == gid);
- assertEqualInt(1, gidIsOneOf);
- }
-#else
- assertEqualInt(ROOT_GID, gid);
-#endif
-
- assertEqualInt(0, owner_parse(ROOT ".", &uid, &gid));
- assertEqualInt(ROOT_UID, uid);
-#if defined(__CYGWIN__)
- {
- int gidIsOneOf = (ROOT_GID1 == gid)
- || (ROOT_GID2 == gid)
- || (ROOT_GID3 == gid);
- assertEqualInt(1, gidIsOneOf);
- }
-#else
- assertEqualInt(ROOT_GID, gid);
-#endif
-
- /*
- * TODO: Lookup current user/group name, build strings and
- * use those to verify username/groupname lookups for ordinary
- * users.
- */
-
- /*
- * TODO: Rework owner_parse to either return a char * pointing
- * to an error message or accept a function pointer to an
- * error-reporting routine so that the following tests don't
- * generate any output.
- *
- * Alternatively, redirect stderr temporarily to suppress the output.
- */
-
- assertEqualInt(1, owner_parse(":nonexistentgroup", &uid, &gid));
- assertEqualInt(1, owner_parse(ROOT ":nonexistentgroup", &uid, &gid));
- assertEqualInt(1,
- owner_parse("nonexistentuser:nonexistentgroup", &uid, &gid));
-#endif
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_passthrough_dotdot.c b/libarchive/libarchive-2.7.1/cpio/test/test_passthrough_dotdot.c
deleted file mode 100644
index d8d3fe1..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_passthrough_dotdot.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/test_passthrough_dotdot.c,v 1.4 2008/08/24 06:21:00 kientzle Exp $");
-
-/*
- * Verify that "cpio -p .." works.
- */
-
-DEFINE_TEST(test_passthrough_dotdot)
-{
- struct stat st;
- int fd, r;
- int filelist;
- int oldumask;
-
- oldumask = umask(0);
-
- /*
- * Create an assortment of files on disk.
- */
- filelist = open("filelist", O_CREAT | O_WRONLY, 0644);
-
- /* Directory. */
- assertEqualInt(0, mkdir("dir", 0755));
- assertEqualInt(0, chdir("dir"));
-
- write(filelist, ".\n", 2);
-
- /* File with 10 bytes content. */
- fd = open("file", O_CREAT | O_WRONLY, 0642);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- write(filelist, "file\n", 5);
-
- /* All done. */
- close(filelist);
-
-
- /*
- * Use cpio passthrough mode to copy files to another directory.
- */
- r = systemf("%s -pdvm .. <../filelist >../stdout 2>../stderr",
- testprog);
- failure("Error invoking %s -pd ..", testprog);
- assertEqualInt(r, 0);
-
- assertEqualInt(0, chdir(".."));
-
- /* Verify stderr and stdout. */
- assertTextFileContents("../.\n../file\n1 block\n", "stderr");
- assertEmptyFile("stdout");
-
- /* Regular file. */
- r = lstat("file", &st);
- failure("Failed to stat file, errno=%d", errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0600, st.st_mode & 0700);
-#else
- assertEqualInt(0642, st.st_mode & 0777);
-#endif
- assertEqualInt(10, st.st_size);
- assertEqualInt(1, st.st_nlink);
- }
-
- umask(oldumask);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_passthrough_reverse.c b/libarchive/libarchive-2.7.1/cpio/test/test_passthrough_reverse.c
deleted file mode 100644
index 37e2086..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_passthrough_reverse.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD: src/usr.bin/cpio/test/test_passthrough_reverse.c,v 1.2 2008/08/24 06:21:00 kientzle Exp $");
-
-/*
- * As reported by Bernd Walter: Some people are in the habit of
- * using "find -d" to generate a list for cpio -p because that
- * copies the top-level dir last, which preserves owner and mode
- * information. That's not necessary for bsdcpio (libarchive defers
- * restoring directory information), but bsdcpio should still generate
- * the correct results with this usage.
- */
-
-DEFINE_TEST(test_passthrough_reverse)
-{
- struct stat st;
- int fd, r;
- int filelist;
- int oldumask;
-
- oldumask = umask(0);
-
- /*
- * Create an assortment of files on disk.
- */
- filelist = open("filelist", O_CREAT | O_WRONLY, 0644);
-
- /* Directory. */
- assertEqualInt(0, mkdir("dir", 0743));
-
- /* File with 10 bytes content. */
- fd = open("dir/file", O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(10, write(fd, "123456789", 10));
- close(fd);
- write(filelist, "dir/file\n", 9);
-
- /* Write dir last. */
- write(filelist, "dir\n", 4);
-
- /* All done. */
- close(filelist);
-
-
- /*
- * Use cpio passthrough mode to copy files to another directory.
- */
- r = systemf("%s -pdvm out <filelist >stdout 2>stderr", testprog);
- failure("Error invoking %s -pd out", testprog);
- assertEqualInt(r, 0);
-
- assertEqualInt(0, chdir("out"));
-
- /* Verify stderr and stdout. */
- assertTextFileContents("out/dir/file\nout/dir\n1 block\n",
- "../stderr");
- assertEmptyFile("../stdout");
-
- /* dir */
- r = lstat("dir", &st);
- if (r == 0) {
- assertEqualInt(r, 0);
- assert(S_ISDIR(st.st_mode));
- failure("st.st_mode=0%o", st.st_mode);
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0700, st.st_mode & 0700);
-#else
- assertEqualInt(0743, st.st_mode & 0777);
-#endif
- }
-
-
- /* Regular file. */
- r = lstat("dir/file", &st);
- failure("Failed to stat dir/file, errno=%d", errno);
- assertEqualInt(r, 0);
- if (r == 0) {
- assert(S_ISREG(st.st_mode));
-#if defined(_WIN32) && !defined(__CYGWIN__)
- assertEqualInt(0600, st.st_mode & 0700);
-#else
- assertEqualInt(0644, st.st_mode & 0777);
-#endif
- assertEqualInt(10, st.st_size);
- assertEqualInt(1, st.st_nlink);
- }
-
- umask(oldumask);
-}
diff --git a/libarchive/libarchive-2.7.1/cpio/test/test_pathmatch.c b/libarchive/libarchive-2.7.1/cpio/test/test_pathmatch.c
deleted file mode 100644
index a596eda..0000000
--- a/libarchive/libarchive-2.7.1/cpio/test/test_pathmatch.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*-
- * Copyright (c) 2003-2007 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-#include "../pathmatch.h"
-
-/*
- * Verify that the pattern matcher implements the wildcard logic specified
- * in SUSv2 for the cpio command. This is essentially the
- * shell glob syntax:
- * * - matches any sequence of chars, including '/'
- * ? - matches any single char, including '/'
- * [...] - matches any of a set of chars, '-' specifies a range,
- * initial '!' is undefined
- *
- * The specification in SUSv2 is a bit incomplete, I assume the following:
- * Trailing '-' in [...] is not special.
- *
- * TODO: Figure out if there's a good way to extend this to handle
- * Windows paths that use '\' as a path separator. <sigh>
- */
-
-DEFINE_TEST(test_pathmatch)
-{
- assertEqualInt(1, pathmatch("a/b/c", "a/b/c", 0));
- assertEqualInt(0, pathmatch("a/b/", "a/b/c", 0));
- assertEqualInt(0, pathmatch("a/b", "a/b/c", 0));
- assertEqualInt(0, pathmatch("a/b/c", "a/b/", 0));
- assertEqualInt(0, pathmatch("a/b/c", "a/b", 0));
-
- /* Empty pattern only matches empty string. */
- assertEqualInt(1, pathmatch("","", 0));
- assertEqualInt(0, pathmatch("","a", 0));
- assertEqualInt(1, pathmatch("*","", 0));
- assertEqualInt(1, pathmatch("*","a", 0));
- assertEqualInt(1, pathmatch("*","abcd", 0));
- /* SUSv2: * matches / */
- assertEqualInt(1, pathmatch("*","abcd/efgh/ijkl", 0));
- assertEqualInt(1, pathmatch("abcd*efgh/ijkl","abcd/efgh/ijkl", 0));
- assertEqualInt(1, pathmatch("abcd***efgh/ijkl","abcd/efgh/ijkl", 0));
- assertEqualInt(1, pathmatch("abcd***/efgh/ijkl","abcd/efgh/ijkl", 0));
- assertEqualInt(0, pathmatch("?", "", 0));
- assertEqualInt(0, pathmatch("?", "\0", 0));
- assertEqualInt(1, pathmatch("?", "a", 0));
- assertEqualInt(0, pathmatch("?", "ab", 0));
- assertEqualInt(1, pathmatch("?", ".", 0));
- assertEqualInt(1, pathmatch("?", "?", 0));
- assertEqualInt(1, pathmatch("a", "a", 0));
- assertEqualInt(0, pathmatch("a", "ab", 0));
- assertEqualInt(0, pathmatch("a", "ab", 0));
- assertEqualInt(1, pathmatch("a?c", "abc", 0));
- /* SUSv2: ? matches / */
- assertEqualInt(1, pathmatch("a?c", "a/c", 0));
- assertEqualInt(1, pathmatch("a?*c*", "a/c", 0));
- assertEqualInt(1, pathmatch("*a*", "a/c", 0));
- assertEqualInt(1, pathmatch("*a*", "/a/c", 0));
- assertEqualInt(1, pathmatch("*a*", "defaaaaaaa", 0));
- assertEqualInt(0, pathmatch("a*", "defghi", 0));
- assertEqualInt(0, pathmatch("*a*", "defghi", 0));
-
- /* Character classes */
- assertEqualInt(1, pathmatch("abc[def", "abc[def", 0));
- assertEqualInt(0, pathmatch("abc[def]", "abc[def", 0));
- assertEqualInt(0, pathmatch("abc[def", "abcd", 0));
- assertEqualInt(1, pathmatch("abc[def]", "abcd", 0));
- assertEqualInt(1, pathmatch("abc[def]", "abce", 0));
- assertEqualInt(1, pathmatch("abc[def]", "abcf", 0));
- assertEqualInt(0, pathmatch("abc[def]", "abcg", 0));
- assertEqualInt(1, pathmatch("abc[d*f]", "abcd", 0));
- assertEqualInt(1, pathmatch("abc[d*f]", "abc*", 0));
- assertEqualInt(0, pathmatch("abc[d*f]", "abcdefghi", 0));
- assertEqualInt(0, pathmatch("abc[d*", "abcdefghi", 0));
- assertEqualInt(1, pathmatch("abc[d*", "abc[defghi", 0));
- assertEqualInt(1, pathmatch("abc[d-f]", "abcd", 0));
- assertEqualInt(1, pathmatch("abc[d-f]", "abce", 0));
- assertEqualInt(1, pathmatch("abc[d-f]", "abcf", 0));
- assertEqualInt(0, pathmatch("abc[d-f]", "abcg", 0));
- assertEqualInt(0, pathmatch("abc[d-fh-k]", "abca", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-k]", "abcd", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-k]", "abce", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-k]", "abcf", 0));
- assertEqualInt(0, pathmatch("abc[d-fh-k]", "abcg", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-k]", "abch", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-k]", "abci", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-k]", "abcj", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-k]", "abck", 0));
- assertEqualInt(0, pathmatch("abc[d-fh-k]", "abcl", 0));
- assertEqualInt(0, pathmatch("abc[d-fh-k]", "abc-", 0));
-
- /* [] matches nothing, [!] is the same as ? */
- assertEqualInt(0, pathmatch("abc[]efg", "abcdefg", 0));
- assertEqualInt(0, pathmatch("abc[]efg", "abcqefg", 0));
- assertEqualInt(0, pathmatch("abc[]efg", "abcefg", 0));
- assertEqualInt(1, pathmatch("abc[!]efg", "abcdefg", 0));
- assertEqualInt(1, pathmatch("abc[!]efg", "abcqefg", 0));
- assertEqualInt(0, pathmatch("abc[!]efg", "abcefg", 0));
-
- /* I assume: Trailing '-' is non-special. */
- assertEqualInt(0, pathmatch("abc[d-fh-]", "abcl", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-]", "abch", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-]", "abc-", 0));
- assertEqualInt(1, pathmatch("abc[d-fh-]", "abc-", 0));
-
- /* ']' can be backslash-quoted within a character class. */
- assertEqualInt(1, pathmatch("abc[\\]]", "abc]", 0));
- assertEqualInt(1, pathmatch("abc[\\]d]", "abc]", 0));
- assertEqualInt(1, pathmatch("abc[\\]d]", "abcd", 0));
- assertEqualInt(1, pathmatch("abc[d\\]]", "abc]", 0));
- assertEqualInt(1, pathmatch("abc[d\\]]", "abcd", 0));
- assertEqualInt(1, pathmatch("abc[d]e]", "abcde]", 0));
- assertEqualInt(1, pathmatch("abc[d\\]e]", "abc]", 0));
- assertEqualInt(0, pathmatch("abc[d\\]e]", "abcd]e", 0));
- assertEqualInt(0, pathmatch("abc[d]e]", "abc]", 0));
-
- /* backslash-quoted chars can appear as either end of a range. */
- assertEqualInt(1, pathmatch("abc[\\d-f]gh", "abcegh", 0));
- assertEqualInt(0, pathmatch("abc[\\d-f]gh", "abcggh", 0));
- assertEqualInt(0, pathmatch("abc[\\d-f]gh", "abc\\gh", 0));
- assertEqualInt(1, pathmatch("abc[d-\\f]gh", "abcegh", 0));
- assertEqualInt(1, pathmatch("abc[\\d-\\f]gh", "abcegh", 0));
- assertEqualInt(1, pathmatch("abc[\\d-\\f]gh", "abcegh", 0));
- /* backslash-quoted '-' isn't special. */
- assertEqualInt(0, pathmatch("abc[d\\-f]gh", "abcegh", 0));
- assertEqualInt(1, pathmatch("abc[d\\-f]gh", "abc-gh", 0));
-
- /* Leading '!' negates a character class. */
- assertEqualInt(0, pathmatch("abc[!d]", "abcd", 0));
- assertEqualInt(1, pathmatch("abc[!d]", "abce", 0));
- assertEqualInt(1, pathmatch("abc[!d]", "abcc", 0));
- assertEqualInt(0, pathmatch("abc[!d-z]", "abcq", 0));
- assertEqualInt(1, pathmatch("abc[!d-gi-z]", "abch", 0));
- assertEqualInt(1, pathmatch("abc[!fgijkl]", "abch", 0));
- assertEqualInt(0, pathmatch("abc[!fghijkl]", "abch", 0));
-
- /* Backslash quotes next character. */
- assertEqualInt(0, pathmatch("abc\\[def]", "abc\\d", 0));
- assertEqualInt(1, pathmatch("abc\\[def]", "abc[def]", 0));
- assertEqualInt(0, pathmatch("abc\\\\[def]", "abc[def]", 0));
- assertEqualInt(0, pathmatch("abc\\\\[def]", "abc\\[def]", 0));
- assertEqualInt(1, pathmatch("abc\\\\[def]", "abc\\d", 0));
- assertEqualInt(1, pathmatch("abcd\\", "abcd\\", 0));
- assertEqualInt(0, pathmatch("abcd\\", "abcd\\[", 0));
- assertEqualInt(0, pathmatch("abcd\\", "abcde", 0));
- assertEqualInt(0, pathmatch("abcd\\[", "abcd\\", 0));
-
- /*
- * Because '.' and '/' have special meanings, we can
- * identify many equivalent paths even if they're expressed
- * differently. (But quoting a character with '\\' suppresses
- * special meanings!)
- */
- assertEqualInt(0, pathmatch("a/b/", "a/bc", 0));
- assertEqualInt(1, pathmatch("a/./b", "a/b", 0));
- assertEqualInt(0, pathmatch("a\\/./b", "a/b", 0));
- assertEqualInt(0, pathmatch("a/\\./b", "a/b", 0));
- assertEqualInt(0, pathmatch("a/.\\/b", "a/b", 0));
- assertEqualInt(0, pathmatch("a\\/\\.\\/b", "a/b", 0));
- assertEqualInt(1, pathmatch("./abc/./def/", "abc/def/", 0));
- assertEqualInt(1, pathmatch("abc/def", "./././abc/./def", 0));
- assertEqualInt(1, pathmatch("abc/def/././//", "./././abc/./def/", 0));
- assertEqualInt(1, pathmatch(".////abc/.//def", "./././abc/./def", 0));
- assertEqualInt(1, pathmatch("./abc?def/", "abc/def/", 0));
- failure("\"?./\" is not the same as \"/./\"");
- assertEqualInt(0, pathmatch("./abc?./def/", "abc/def/", 0));
- failure("Trailing '/' should match no trailing '/'");
- assertEqualInt(1, pathmatch("./abc/./def/", "abc/def", 0));
- failure("Trailing '/./' is still the same directory.");
- assertEqualInt(1, pathmatch("./abc/./def/./", "abc/def", 0));
- failure("Trailing '/.' is still the same directory.");
- assertEqualInt(1, pathmatch("./abc/./def/.", "abc/def", 0));
- assertEqualInt(1, pathmatch("./abc/./def", "abc/def/", 0));
- failure("Trailing '/./' is still the same directory.");
- assertEqualInt(1, pathmatch("./abc/./def", "abc/def/./", 0));
- failure("Trailing '/.' is still the same directory.");
- assertEqualInt(1, pathmatch("./abc*/./def", "abc/def/.", 0));
-
- /* Matches not anchored at beginning. */
- assertEqualInt(0,
- pathmatch("bcd", "abcd", PATHMATCH_NO_ANCHOR_START));
- assertEqualInt(1,
- pathmatch("abcd", "abcd", PATHMATCH_NO_ANCHOR_START));
- assertEqualInt(0,
- pathmatch("^bcd", "abcd", PATHMATCH_NO_ANCHOR_START));
- assertEqualInt(1,
- pathmatch("b/c/d", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
- assertEqualInt(0,
- pathmatch("b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
- assertEqualInt(0,
- pathmatch("^b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
-
- /* Matches not anchored at end. */
- assertEqualInt(0,
- pathmatch("bcd", "abcd", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("abcd", "abcd", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("abcd", "abcd/", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("abcd", "abcd/.", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(0,
- pathmatch("abc", "abcd", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("a/b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(0,
- pathmatch("a/b/c$", "a/b/c/d", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("a/b/c$", "a/b/c", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("a/b/c$", "a/b/c/", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("a/b/c/", "a/b/c/d", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(0,
- pathmatch("a/b/c/$", "a/b/c/d", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("a/b/c/$", "a/b/c/", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(1,
- pathmatch("a/b/c/$", "a/b/c", PATHMATCH_NO_ANCHOR_END));
- assertEqualInt(0,
- pathmatch("b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_END));
-}