summaryrefslogtreecommitdiffstats
path: root/src/lib/file-copy.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/file-copy.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/file-copy.h b/src/lib/file-copy.h
new file mode 100644
index 0000000..f70b941
--- /dev/null
+++ b/src/lib/file-copy.h
@@ -0,0 +1,12 @@
+#ifndef FILE_COPY_H
+#define FILE_COPY_H
+
+/* Copy file atomically. First try hardlinking, then fallback to creating
+ a temporary file (destpath.tmp) and rename()ing it over srcpath.
+ If the destination file already exists, it may or may not be overwritten,
+ so that shouldn't be relied on.
+
+ Returns -1 = error, 0 = source file not found, 1 = ok */
+int file_copy(const char *srcpath, const char *destpath, bool try_hardlink);
+
+#endif