summaryrefslogtreecommitdiff
path: root/libarchive/libarchive-2.7.1/tar/test/test_windows.c
diff options
context:
space:
mode:
authorTomas Bzatek <tbzatek@redhat.com>2010-02-05 11:06:31 +0100
committerTomas Bzatek <tbzatek@redhat.com>2010-02-05 11:06:31 +0100
commitbaea7d877d3cf69679a39e8512a120658a478073 (patch)
tree37c9a98cb3d3a322f3f91c8ca656ccd6bd2eaebe /libarchive/libarchive-2.7.1/tar/test/test_windows.c
parente42a4ff3031aa1c1aaf27aa34d9395fec185924b (diff)
downloadtuxcmd-modules-baea7d877d3cf69679a39e8512a120658a478073.tar.xz
Rebase libarchive to 2.8.0
Diffstat (limited to 'libarchive/libarchive-2.7.1/tar/test/test_windows.c')
-rw-r--r--libarchive/libarchive-2.7.1/tar/test/test_windows.c322
1 files changed, 0 insertions, 322 deletions
diff --git a/libarchive/libarchive-2.7.1/tar/test/test_windows.c b/libarchive/libarchive-2.7.1/tar/test/test_windows.c
deleted file mode 100644
index 5295e5e..0000000
--- a/libarchive/libarchive-2.7.1/tar/test/test_windows.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/*-
- * Copyright (c) 2009 Michihiro NAKAJIMA
- * 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__)
-static void
-mkfile(const char *name)
-{
- int fd;
-
- fd = open(name, O_CREAT | O_WRONLY, 0644);
- assert(fd >= 0);
- assertEqualInt(5, write(fd, "01234", 5));
- close(fd);
-}
-
-static void
-mkfullpath(char **path1, char **path2, const char *tpath, int type)
-{
- char *fp1, *fp2, *p1, *p2;
- size_t l;
-
- /*
- * Get full path name of "tpath"
- */
- l = GetFullPathNameA(tpath, 0, NULL, NULL);
- assert(0 != l);
- fp1 = malloc(l);
- assert(NULL != fp1);
- fp2 = malloc(l*2);
- assert(NULL != fp2);
- l = GetFullPathNameA(tpath, l, fp1, NULL);
- if ((type & 0x01) == 0) {
- for (p1 = fp1; *p1 != '\0'; p1++)
- if (*p1 == '\\')
- *p1 = '/';
- }
-
- switch(type) {
- case 0: /* start with "/" */
- case 1: /* start with "\" */
- /* strip "c:" */
- memmove(fp1, fp1 + 2, l - 2);
- fp1[l -2] = '\0';
- p1 = fp1 + 1;
- break;
- case 2: /* start with "c:/" */
- case 3: /* start with "c:\" */
- p1 = fp1 + 3;
- break;
- case 4: /* start with "//./c:/" */
- case 5: /* start with "\\.\c:\" */
- case 6: /* start with "//?/c:/" */
- case 7: /* start with "\\?\c:\" */
- p1 = malloc(l + 4 + 1);
- assert(NULL != p1);
- if (type & 0x1)
- memcpy(p1, "\\\\.\\", 4);
- else
- memcpy(p1, "//./", 4);
- if (type == 6 || type == 7)
- p1[2] = '?';
- memcpy(p1 + 4, fp1, l);
- p1[l + 4] = '\0';
- free(fp1);
- fp1 = p1;
- p1 = fp1 + 7;
- break;
- }
-
- /*
- * Strip leading drive names and converting "\" to "\\"
- */
- p2 = fp2;
- while (*p1 != '\0') {
- if (*p1 == '\\')
- *p2++ = *p1;
- *p2++ = *p1++;
- }
- *p2++ = '\r';
- *p2++ = '\n';
- *p2 = '\0';
-
- *path1 = fp1;
- *path2 = fp2;
-}
-
-static const char list1[] =
- "aaa/\r\naaa/file1\r\naaa/xxa/\r\naaa/xxb/\r\naaa/zzc/\r\n"
- "aaa/zzc/file1\r\naaa/xxb/file1\r\naaa/xxa/file1\r\naab/\r\n"
- "aac/\r\nabb/\r\nabc/\r\nabd/\r\n";
-static const char list2[] =
- "bbb/\r\nbbb/file1\r\nbbb/xxa/\r\nbbb/xxb/\r\nbbb/zzc/\r\n"
- "bbb/zzc/file1\r\nbbb/xxb/file1\r\nbbb/xxa/file1\r\nbbc/\r\n"
- "bbd/\r\nbcc/\r\nbcd/\r\nbce/\r\n";
-static const char list3[] =
- "aac/\r\nabc/\r\nbbc/\r\nbcc/\r\nccc/\r\n";
-static const char list4[] =
- "fff/abca\r\nfff/acca\r\n";
-static const char list5[] =
- "aaa\\\\file1\r\naaa\\\\xxa/\r\naaa\\\\xxa/file1\r\naaa\\\\xxb/\r\n"
- "aaa\\\\xxb/file1\r\naaa\\\\zzc/\r\naaa\\\\zzc/file1\r\n";
-static const char list6[] =
- "fff\\\\abca\r\nfff\\\\acca\r\naaa\\\\xxa/\r\naaa\\\\xxa/file1\r\n"
- "aaa\\\\xxb/\r\naaa\\\\xxb/file1\r\n";
-#endif /* _WIN32 && !__CYGWIN__ */
-
-DEFINE_TEST(test_windows)
-{
-#if defined(_WIN32) && !defined(__CYGWIN__)
- char *fp1, *fp2;
-
- /*
- * Preparre tests.
- * Create directories and files.
- */
- assertEqualInt(0, mkdir("tmp", 0775));
- assertEqualInt(0, chdir("tmp"));
-
- assertEqualInt(0, mkdir("aaa", 0775));
- assertEqualInt(0, mkdir("aaa/xxa", 0775));
- assertEqualInt(0, mkdir("aaa/xxb", 0775));
- assertEqualInt(0, mkdir("aaa/zzc", 0775));
- mkfile("aaa/file1");
- mkfile("aaa/xxa/file1");
- mkfile("aaa/xxb/file1");
- mkfile("aaa/zzc/file1");
- assertEqualInt(0, mkdir("aab", 0775));
- assertEqualInt(0, mkdir("aac", 0775));
- assertEqualInt(0, mkdir("abb", 0775));
- assertEqualInt(0, mkdir("abc", 0775));
- assertEqualInt(0, mkdir("abd", 0775));
- assertEqualInt(0, mkdir("bbb", 0775));
- assertEqualInt(0, mkdir("bbb/xxa", 0775));
- assertEqualInt(0, mkdir("bbb/xxb", 0775));
- assertEqualInt(0, mkdir("bbb/zzc", 0775));
- mkfile("bbb/file1");
- mkfile("bbb/xxa/file1");
- mkfile("bbb/xxb/file1");
- mkfile("bbb/zzc/file1");
- assertEqualInt(0, mkdir("bbc", 0775));
- assertEqualInt(0, mkdir("bbd", 0775));
- assertEqualInt(0, mkdir("bcc", 0775));
- assertEqualInt(0, mkdir("bcd", 0775));
- assertEqualInt(0, mkdir("bce", 0775));
- assertEqualInt(0, mkdir("ccc", 0775));
- assertEqualInt(0, mkdir("fff", 0775));
- mkfile("fff/aaaa");
- mkfile("fff/abba");
- mkfile("fff/abca");
- mkfile("fff/acba");
- mkfile("fff/acca");
-
- /*
- * Test1: Command line pattern matching.
- */
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar a*", testprog));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- assertFileContents(list1, sizeof(list1)-1, "../list");
-
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar b*", testprog));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- assertFileContents(list2, sizeof(list2)-1, "../list");
-
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar ??c", testprog));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- assertFileContents(list3, sizeof(list3)-1, "../list");
-
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar *c", testprog));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- assertFileContents(list3, sizeof(list3)-1, "../list");
-
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar fff/a?ca", testprog));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- assertFileContents(list4, sizeof(list4)-1, "../list");
-
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar aaa\\*", testprog));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- assertFileContents(list5, sizeof(list5)-1, "../list");
-
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar fff\\a?ca aaa\\xx*", testprog));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- assertFileContents(list6, sizeof(list6)-1, "../list");
-
- /*
- * Test2: Archive the file start with drive letters.
- */
- /* Test2a: start with "/" */
- mkfullpath(&fp1, &fp2, "aaa/file1", 0);
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar %s > ../out 2> ../err",
- testprog, fp1));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- /* Check drive letters have been striped. */
- assertFileContents(fp2, strlen(fp2), "../list");
- free(fp1);
- free(fp2);
-
- /* Test2b: start with "\" */
- mkfullpath(&fp1, &fp2, "aaa/file1", 1);
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar %s > ../out 2> ../err",
- testprog, fp1));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- /* Check drive letters have been striped. */
- assertFileContents(fp2, strlen(fp2), "../list");
- free(fp1);
- free(fp2);
-
- /* Test2c: start with "c:/" */
- mkfullpath(&fp1, &fp2, "aaa/file1", 2);
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar %s > ../out 2> ../err",
- testprog, fp1));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- /* Check drive letters have been striped. */
- assertFileContents(fp2, strlen(fp2), "../list");
- free(fp1);
- free(fp2);
-
- /* Test2d: start with "c:\" */
- mkfullpath(&fp1, &fp2, "aaa/file1", 3);
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar %s > ../out 2> ../err",
- testprog, fp1));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- /* Check drive letters have been striped. */
- assertFileContents(fp2, strlen(fp2), "../list");
- free(fp1);
- free(fp2);
-
- /* Test2e: start with "//./c:/" */
- mkfullpath(&fp1, &fp2, "aaa/file1", 4);
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar %s > ../out 2> ../err",
- testprog, fp1));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- /* Check drive letters have been striped. */
- assertFileContents(fp2, strlen(fp2), "../list");
- free(fp1);
- free(fp2);
-
- /* Test2f: start with "\\.\c:\" */
- mkfullpath(&fp1, &fp2, "aaa/file1", 5);
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar %s > ../out 2> ../err",
- testprog, fp1));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- /* Check drive letters have been striped. */
- assertFileContents(fp2, strlen(fp2), "../list");
- free(fp1);
- free(fp2);
-
- /* Test2g: start with "//?/c:/" */
- mkfullpath(&fp1, &fp2, "aaa/file1", 6);
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar %s > ../out 2> ../err",
- testprog, fp1));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- /* Check drive letters have been striped. */
- assertFileContents(fp2, strlen(fp2), "../list");
- free(fp1);
- free(fp2);
-
- /* Test2h: start with "\\?\c:\" */
- mkfullpath(&fp1, &fp2, "aaa/file1", 7);
- assertEqualInt(0,
- systemf("%s -cf ../archive.tar %s > ../out 2> ../err",
- testprog, fp1));
- assertEqualInt(0,
- systemf("%s -tf ../archive.tar > ../list", testprog));
- /* Check drive letters have been striped. */
- assertFileContents(fp2, strlen(fp2), "../list");
- free(fp1);
- free(fp2);
-#else
- skipping("Windows specific test");
-#endif /* _WIN32 && !__CYGWIN__ */
-}