]> git.saurik.com Git - apple/security.git/blob - RegressionTests/SecAtomicFile/SecAtomicFile.cpp
Security-58286.230.21.tar.gz
[apple/security.git] / RegressionTests / SecAtomicFile / SecAtomicFile.cpp
1 //
2 // Copyright 2017 Apple. All rights reserved.
3 //
4
5 #include "AtomicFile.h"
6 #include <err.h>
7
8 #if 0
9 static void
10 fill_disk(const char *path)
11 {
12 int fd = ::open(path, O_CREAT|O_RDWR, 0600);
13 if (fd < 0)
14 errx(1, "failed to create fill file");
15
16 uint8 buffer[1024] = {};
17 ::memset(reinterpret_cast<void *>(buffer), 0x77, sizeof(buffer));
18
19 for (unsigned count = 0; count < 1000; count++) {
20 if (::write(fd, buffer, sizeof(buffer)) != sizeof(buffer)) {
21 warn("write fill file failed");
22 break;
23 }
24 }
25 if (close(fd) < 0)
26 warn("close fill file failed");
27 }
28 #endif
29
30 int
31 main(int argc, char **argv)
32 {
33 int fail = 0;
34
35 if (argc != 2)
36 errx(1, "argc != 2");
37
38 try {
39 AtomicFile file(argv[1]);
40
41 RefPointer<AtomicTempFile> temp = file.write();
42
43 unsigned count = 0;
44 uint8 buffer[1024] = {};
45 ::memset(reinterpret_cast<void *>(buffer), 0xff, sizeof(buffer));
46
47 for (count = 0; count < 1000; count++) {
48 temp->write(AtomicFile::FromEnd, 0, buffer, sizeof(buffer));
49 }
50
51 temp->commit();
52 temp = NULL;
53 } catch (...) {
54 fail = 1;
55 }
56 if (fail)
57 errx(1, "failed to create new file");
58 return 0;
59 }
60
61
62