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  }