[pypy-commit] pypy follow_symlinks: Support *_dir_fd arguments in posix.link()
rlamy
pypy.commits at gmail.com
Fri Mar 25 23:30:49 EDT 2016
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: follow_symlinks
Changeset: r83383:3da1fa9db8d2
Date: 2016-03-26 03:29 +0000
http://bitbucket.org/pypy/pypy/changeset/3da1fa9db8d2/
Log: Support *_dir_fd arguments in posix.link()
diff --git a/pypy/module/posix/interp_posix.py b/pypy/module/posix/interp_posix.py
--- a/pypy/module/posix/interp_posix.py
+++ b/pypy/module/posix/interp_posix.py
@@ -964,7 +964,7 @@
@unwrap_spec(
src='fsencode', dst='fsencode',
- src_dir_fd=DirFD(available=False), dst_dir_fd=DirFD(available=False),
+ src_dir_fd=DirFD(rposix.HAVE_LINKAT), dst_dir_fd=DirFD(rposix.HAVE_LINKAT),
follow_symlinks=kwonly(bool))
def link(
space, src, dst,
@@ -985,8 +985,12 @@
platform. If they are unavailable, using them will raise a
NotImplementedError."""
try:
- os.link(src, dst)
- except OSError, e:
+ if (src_dir_fd != DEFAULT_DIR_FD or dst_dir_fd != DEFAULT_DIR_FD
+ or not follow_symlinks):
+ rposix.linkat(src, dst, src_dir_fd, dst_dir_fd, follow_symlinks)
+ else:
+ rposix.link(src, dst)
+ except OSError as e:
raise wrap_oserror(space, e)
More information about the pypy-commit
mailing list