github.com/josephvusich/fdf@v0.0.0-20230522095411-9326dd32e33f/clonefile_darwin.go (about) 1 package main 2 3 // #include <sys/clonefile.h> 4 // #include <stdlib.h> 5 // #include <errno.h> 6 // 7 // int cloneAndFree(char *src, char *dst) { 8 // int result = clonefile(src, dst, 0); 9 // int err = errno; 10 // free(src); 11 // free(dst); 12 // errno = err; 13 // return result; 14 // } 15 import "C" 16 17 func cloneFile(src, dst string) error { 18 result, err := C.cloneAndFree(C.CString(src), C.CString(dst)) 19 if result != 0 { 20 return err 21 } 22 return nil 23 }