# Module FileUtilCP

    module FileUtilCP: sig .. end

    exception CpError of string

    exception CpSkip

    type cp_error = [ `CannotChmodDstDir of FilePath.filename * exn
           | `CannotCopyDir of FilePath.filename
           | `CannotCopyFilesToFile of FilePath.filename list * FilePath.filename
           | `CannotCreateDir of FilePath.filename * exn
           | `CannotListSrcDir of FilePath.filename * exn
           | `CannotOpenDstFile of FilePath.filename * exn
           | `CannotOpenSrcFile of FilePath.filename * exn
           | `CannotRemoveDstFile of FilePath.filename * exn
           | `DstDirNotDir of FilePath.filename
           | `ErrorRead of FilePath.filename * exn
           | `ErrorWrite of FilePath.filename * exn
           | `Exc of exn
           | `NoSourceFile of FilePath.filename
           | `PartialWrite of FilePath.filename * int * int
           | `SameFile of FilePath.filename * FilePath.filename
           | `UnhandledType of FilePath.filename * FileUtilTypes.kind ]

    val same_file : FileUtilTypes.stat -> FileUtilTypes.stat -> bool

    val cp : ?follow:FileUtilTypes.action_link ->
           ?force:FileUtilTypes.interactive ->
           ?recurse:bool ->
           ?preserve:bool ->
           ?error:(string ->
                   [ `CannotChmodDstDir of FilePath.filename * exn
                   | `CannotCopyDir of FilePath.filename
                   | `CannotCopyFilesToFile of
                       FilePath.filename list * FilePath.filename
                   | `CannotCreateDir of FilePath.filename * exn
                   | `CannotListSrcDir of FilePath.filename * exn
                   | `CannotOpenDstFile of FilePath.filename * exn
                   | `CannotOpenSrcFile of FilePath.filename * exn
                   | `CannotRemoveDstFile of FilePath.filename * exn
                   | `DstDirNotDir of FilePath.filename
                   | `ErrorRead of FilePath.filename * exn
                   | `ErrorWrite of FilePath.filename * exn
                   | `Exc of exn
                   | `NoSourceFile of FilePath.filename
                   | `PartialWrite of FilePath.filename * int * int
                   | `SameFile of FilePath.filename * FilePath.filename
                   | `UnhandledType of FilePath.filename * FileUtilTypes.kind ] -> 'a) ->
           FilePath.filename list -> FilePath.filename -> unit