Deleted Added
full compact
test_write_disk_failures.c (228763) test_write_disk_failures.c (232153)
1/*-
2 * Copyright (c) 2003-2007 Tim Kientzle
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25#include "test.h"
1/*-
2 * Copyright (c) 2003-2007 Tim Kientzle
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25#include "test.h"
26__FBSDID("$FreeBSD: head/contrib/libarchive/libarchive/test/test_write_disk_failures.c 228763 2011-12-21 11:13:29Z mm $");
26__FBSDID("$FreeBSD: head/contrib/libarchive/libarchive/test/test_write_disk_failures.c 232153 2012-02-25 10:58:02Z mm $");
27
27
28#if ARCHIVE_VERSION_NUMBER >= 1009000
29
30#define UMASK 022
31
32
33#endif
34
35DEFINE_TEST(test_write_disk_failures)
36{
28DEFINE_TEST(test_write_disk_failures)
29{
37#if ARCHIVE_VERSION_NUMBER < 1009000 || (defined(_WIN32) && !defined(__CYGWIN__))
30#if defined(_WIN32) && !defined(__CYGWIN__)
38 skipping("archive_write_disk interface");
39#else
40 struct archive_entry *ae;
41 struct archive *a;
42 int fd;
43
44 /* Force the umask to something predictable. */
31 skipping("archive_write_disk interface");
32#else
33 struct archive_entry *ae;
34 struct archive *a;
35 int fd;
36
37 /* Force the umask to something predictable. */
45 assertUmask(UMASK);
38 assertUmask(022);
46
47 /* A directory that we can't write to. */
48 assertMakeDir("dir", 0555);
49
50 /* Can we? */
51 fd = open("dir/testfile", O_WRONLY | O_CREAT | O_BINARY, 0777);
52 if (fd >= 0) {
53 /* Apparently, we can, so the test below won't work. */

--- 7 unchanged lines hidden (view full) ---

61 archive_entry_copy_pathname(ae, "dir/file");
62 archive_entry_set_mode(ae, S_IFREG | 0755);
63 archive_entry_set_size(ae, 8);
64 assert((a = archive_write_disk_new()) != NULL);
65 archive_write_disk_set_options(a, ARCHIVE_EXTRACT_TIME);
66 archive_entry_set_mtime(ae, 123456789, 0);
67 assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
68 assertEqualIntA(a, 0, archive_write_finish_entry(a));
39
40 /* A directory that we can't write to. */
41 assertMakeDir("dir", 0555);
42
43 /* Can we? */
44 fd = open("dir/testfile", O_WRONLY | O_CREAT | O_BINARY, 0777);
45 if (fd >= 0) {
46 /* Apparently, we can, so the test below won't work. */

--- 7 unchanged lines hidden (view full) ---

54 archive_entry_copy_pathname(ae, "dir/file");
55 archive_entry_set_mode(ae, S_IFREG | 0755);
56 archive_entry_set_size(ae, 8);
57 assert((a = archive_write_disk_new()) != NULL);
58 archive_write_disk_set_options(a, ARCHIVE_EXTRACT_TIME);
59 archive_entry_set_mtime(ae, 123456789, 0);
60 assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
61 assertEqualIntA(a, 0, archive_write_finish_entry(a));
69 assertEqualInt(0, archive_write_finish(a));
62 assertEqualInt(ARCHIVE_OK, archive_write_free(a));
70 archive_entry_free(ae);
71#endif
72}
63 archive_entry_free(ae);
64#endif
65}