Copy a regular file content or metadata by using high-performance fcopyfile(3) syscall (macOS).
(fsrc, fdst, flags)
| 96 | """ |
| 97 | |
| 98 | def _fastcopy_fcopyfile(fsrc, fdst, flags): |
| 99 | """Copy a regular file content or metadata by using high-performance |
| 100 | fcopyfile(3) syscall (macOS). |
| 101 | """ |
| 102 | try: |
| 103 | infd = fsrc.fileno() |
| 104 | outfd = fdst.fileno() |
| 105 | except Exception as err: |
| 106 | raise _GiveupOnFastCopy(err) # not a regular file |
| 107 | |
| 108 | try: |
| 109 | posix._fcopyfile(infd, outfd, flags) |
| 110 | except OSError as err: |
| 111 | err.filename = fsrc.name |
| 112 | err.filename2 = fdst.name |
| 113 | if err.errno in {errno.EINVAL, errno.ENOTSUP}: |
| 114 | raise _GiveupOnFastCopy(err) |
| 115 | else: |
| 116 | raise err from None |
| 117 | |
| 118 | def _determine_linux_fastcopy_blocksize(infd): |
| 119 | """Determine blocksize for fastcopying on Linux. |
no test coverage detected
searching dependent graphs…