]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/copy.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 This file is part of systemd.
7 Copyright 2014 Lennart Poettering
13 #include <sys/types.h>
15 typedef enum CopyFlags
{
16 COPY_REFLINK
= 1U << 0, /* Try to reflink */
17 COPY_MERGE
= 1U << 1, /* Merge existing trees with our new one to copy */
18 COPY_REPLACE
= 1U << 2, /* Replace an existing file if there's one */
21 int copy_file_fd(const char *from
, int to
, CopyFlags copy_flags
);
22 int copy_file(const char *from
, const char *to
, int open_flags
, mode_t mode
, unsigned chattr_flags
, CopyFlags copy_flags
);
23 int copy_file_atomic(const char *from
, const char *to
, mode_t mode
, unsigned chattr_flags
, CopyFlags copy_flags
);
24 int copy_tree(const char *from
, const char *to
, uid_t override_uid
, gid_t override_gid
, CopyFlags copy_flags
);
25 int copy_tree_at(int fdf
, const char *from
, int fdt
, const char *to
, uid_t override_uid
, gid_t override_gid
, CopyFlags copy_flags
);
26 int copy_directory_fd(int dirfd
, const char *to
, CopyFlags copy_flags
);
27 int copy_directory(const char *from
, const char *to
, CopyFlags copy_flags
);
28 int copy_bytes_full(int fdf
, int fdt
, uint64_t max_bytes
, CopyFlags copy_flags
, void **ret_remains
, size_t *ret_remains_size
);
29 static inline int copy_bytes(int fdf
, int fdt
, uint64_t max_bytes
, CopyFlags copy_flags
) {
30 return copy_bytes_full(fdf
, fdt
, max_bytes
, copy_flags
, NULL
, NULL
);
32 int copy_times(int fdf
, int fdt
);
33 int copy_xattr(int fdf
, int fdt
);