aboutsummaryrefslogtreecommitdiffstats
path: root/hypervideo_dl/compat/shutil.py
diff options
context:
space:
mode:
authorJesús <heckyel@hyperbola.info>2022-12-02 05:21:10 +0800
committerJesús <heckyel@hyperbola.info>2022-12-02 05:21:10 +0800
commiteaeeef9c1d1bedb76fea953c332ef84d53bffe2c (patch)
treec3cb5582247e47fc67c24cd7ff8ea857fb76821e /hypervideo_dl/compat/shutil.py
parent1e5a50b71d8f0eae6007bedc329eecb24bb5aba3 (diff)
downloadhypervideo-eaeeef9c1d1bedb76fea953c332ef84d53bffe2c.tar.lz
hypervideo-eaeeef9c1d1bedb76fea953c332ef84d53bffe2c.tar.xz
hypervideo-eaeeef9c1d1bedb76fea953c332ef84d53bffe2c.zip
update from upstream
Diffstat (limited to 'hypervideo_dl/compat/shutil.py')
-rw-r--r--hypervideo_dl/compat/shutil.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/hypervideo_dl/compat/shutil.py b/hypervideo_dl/compat/shutil.py
new file mode 100644
index 0000000..23239d5
--- /dev/null
+++ b/hypervideo_dl/compat/shutil.py
@@ -0,0 +1,30 @@
+# flake8: noqa: F405
+from shutil import * # noqa: F403
+
+from .compat_utils import passthrough_module
+
+passthrough_module(__name__, 'shutil')
+del passthrough_module
+
+
+import sys
+
+if sys.platform.startswith('freebsd'):
+ import errno
+ import os
+ import shutil
+
+ # Workaround for PermissionError when using restricted ACL mode on FreeBSD
+ def copy2(src, dst, *args, **kwargs):
+ if os.path.isdir(dst):
+ dst = os.path.join(dst, os.path.basename(src))
+ shutil.copyfile(src, dst, *args, **kwargs)
+ try:
+ shutil.copystat(src, dst, *args, **kwargs)
+ except PermissionError as e:
+ if e.errno != getattr(errno, 'EPERM', None):
+ raise
+ return dst
+
+ def move(*args, copy_function=copy2, **kwargs):
+ return shutil.move(*args, copy_function=copy_function, **kwargs)