copy: change the various copy_xyz() calls to take a unified flags parameter
This adds a unified "copy_flags" parameter to all copy_xyz() function calls, replacing the various boolean flags so far used. This should make many invocations more readable as it is clear what behaviour is precisely requested. This also prepares ground for adding support for more modes later on.
This commit is contained in:
+12
-12
@@ -52,7 +52,7 @@ static void test_copy_file(void) {
|
||||
|
||||
assert_se(write_string_file(fn, "foo bar bar bar foo", WRITE_STRING_FILE_CREATE) == 0);
|
||||
|
||||
assert_se(copy_file(fn, fn_copy, 0, 0644, 0) == 0);
|
||||
assert_se(copy_file(fn, fn_copy, 0, 0644, 0, COPY_REFLINK) == 0);
|
||||
|
||||
assert_se(read_full_file(fn_copy, &buf, &sz) == 0);
|
||||
assert_se(streq(buf, "foo bar bar bar foo\n"));
|
||||
@@ -77,8 +77,8 @@ static void test_copy_file_fd(void) {
|
||||
assert_se(out_fd >= 0);
|
||||
|
||||
assert_se(write_string_file(in_fn, text, WRITE_STRING_FILE_CREATE) == 0);
|
||||
assert_se(copy_file_fd("/a/file/which/does/not/exist/i/guess", out_fd, true) < 0);
|
||||
assert_se(copy_file_fd(in_fn, out_fd, true) >= 0);
|
||||
assert_se(copy_file_fd("/a/file/which/does/not/exist/i/guess", out_fd, COPY_REFLINK) < 0);
|
||||
assert_se(copy_file_fd(in_fn, out_fd, COPY_REFLINK) >= 0);
|
||||
assert_se(lseek(out_fd, SEEK_SET, 0) == 0);
|
||||
|
||||
assert_se(read(out_fd, buf, sizeof(buf)) == sizeof(text) - 1);
|
||||
@@ -125,7 +125,7 @@ static void test_copy_tree(void) {
|
||||
unixsockp = strjoina(original_dir, "unixsock");
|
||||
assert_se(mknod(unixsockp, S_IFSOCK|0644, 0) >= 0);
|
||||
|
||||
assert_se(copy_tree(original_dir, copy_dir, true) == 0);
|
||||
assert_se(copy_tree(original_dir, copy_dir, COPY_REFLINK|COPY_MERGE) == 0);
|
||||
|
||||
STRV_FOREACH(p, files) {
|
||||
_cleanup_free_ char *buf = NULL, *f;
|
||||
@@ -152,8 +152,8 @@ static void test_copy_tree(void) {
|
||||
assert_se(stat(unixsockp, &st) >= 0);
|
||||
assert_se(S_ISSOCK(st.st_mode));
|
||||
|
||||
assert_se(copy_tree(original_dir, copy_dir, false) < 0);
|
||||
assert_se(copy_tree("/tmp/inexistent/foo/bar/fsdoi", copy_dir, false) < 0);
|
||||
assert_se(copy_tree(original_dir, copy_dir, COPY_REFLINK) < 0);
|
||||
assert_se(copy_tree("/tmp/inexistent/foo/bar/fsdoi", copy_dir, COPY_REFLINK) < 0);
|
||||
|
||||
(void) rm_rf(copy_dir, REMOVE_ROOT|REMOVE_PHYSICAL);
|
||||
(void) rm_rf(original_dir, REMOVE_ROOT|REMOVE_PHYSICAL);
|
||||
@@ -172,7 +172,7 @@ static void test_copy_bytes(void) {
|
||||
|
||||
assert_se(pipe2(pipefd, O_CLOEXEC) == 0);
|
||||
|
||||
r = copy_bytes(infd, pipefd[1], (uint64_t) -1, false);
|
||||
r = copy_bytes(infd, pipefd[1], (uint64_t) -1, 0);
|
||||
assert_se(r == 0);
|
||||
|
||||
r = read(pipefd[0], buf, sizeof(buf));
|
||||
@@ -185,13 +185,13 @@ static void test_copy_bytes(void) {
|
||||
assert_se(strneq(buf, buf2, r));
|
||||
|
||||
/* test copy_bytes with invalid descriptors */
|
||||
r = copy_bytes(pipefd[0], pipefd[0], 1, false);
|
||||
r = copy_bytes(pipefd[0], pipefd[0], 1, 0);
|
||||
assert_se(r == -EBADF);
|
||||
|
||||
r = copy_bytes(pipefd[1], pipefd[1], 1, false);
|
||||
r = copy_bytes(pipefd[1], pipefd[1], 1, 0);
|
||||
assert_se(r == -EBADF);
|
||||
|
||||
r = copy_bytes(pipefd[1], infd, 1, false);
|
||||
r = copy_bytes(pipefd[1], infd, 1, 0);
|
||||
assert_se(r == -EBADF);
|
||||
}
|
||||
|
||||
@@ -213,7 +213,7 @@ static void test_copy_bytes_regular_file(const char *src, bool try_reflink, uint
|
||||
fd3 = mkostemp_safe(fn3);
|
||||
assert_se(fd3 >= 0);
|
||||
|
||||
r = copy_bytes(fd, fd2, max_bytes, try_reflink);
|
||||
r = copy_bytes(fd, fd2, max_bytes, try_reflink ? COPY_REFLINK : 0);
|
||||
if (max_bytes == (uint64_t) -1)
|
||||
assert_se(r == 0);
|
||||
else
|
||||
@@ -221,7 +221,7 @@ static void test_copy_bytes_regular_file(const char *src, bool try_reflink, uint
|
||||
|
||||
assert_se(lseek(fd2, 0, SEEK_SET) == 0);
|
||||
|
||||
r = copy_bytes(fd2, fd3, max_bytes, try_reflink);
|
||||
r = copy_bytes(fd2, fd3, max_bytes, try_reflink ? COPY_REFLINK : 0);
|
||||
if (max_bytes == (uint64_t) -1)
|
||||
assert_se(r == 0);
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user