]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Add support for file cloning on Mac OS X (APFS)
authorJoel Rosdahl <joel@rosdahl.net>
Mon, 15 Jul 2019 12:50:28 +0000 (14:50 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 15 Jul 2019 13:30:26 +0000 (15:30 +0200)
configure.ac
src/util.c

index 34a50ff9dc15e474cea9e9257663358b53d8afa2..be07ac00e1f0064e5563dcb629dac956c632310c 100644 (file)
@@ -85,6 +85,7 @@ AC_CHECK_HEADERS(syslog.h)
 AC_CHECK_HEADERS(termios.h)
 AC_CHECK_HEADERS(sys/ioctl.h)
 AC_CHECK_HEADERS(linux/fs.h)
+AC_CHECK_HEADERS(sys/clonefile.h)
 
 AC_CHECK_FUNCS(gethostname)
 AC_CHECK_FUNCS(getopt_long)
index 6ed97f8e5d0384b7c993d6d46955da77e1d87b70..34fcacdec854f8bb7e433e4dad3446d6c37fed55 100644 (file)
 #  endif
 #endif
 
+#ifdef __APPLE__
+#  ifdef HAVE_SYS_CLONEFILE_H
+#    include <sys/clonefile.h>
+#    define FILE_CLONING_SUPPORTED 1
+#  endif
+#endif
+
 #ifdef _WIN32
 #include <windows.h>
 #include <sys/locking.h>
@@ -413,6 +420,9 @@ clone_file(const char *src, const char *dest, bool via_tmp_file)
        }
 
        errno = saved_errno;
+#elif defined(__APPLE__)
+       (void)via_tmp_file;
+       result = clonefile(src, dest, CLONE_NOOWNERCOPY) == 0;
 #endif
 
 #else // FILE_CLONING_SUPPORTED