diff options
author | Vinay Sharma <vinay04sharma@icloud.com> | 2019-08-29 01:56:17 (GMT) |
---|---|---|
committer | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-08-29 01:56:17 (GMT) |
commit | 13f37f2ba8b1fa39f312dca920e847d9c0313c77 (patch) | |
tree | c7e61cf2549b54e70ab574ba7df923487f84b0b9 | |
parent | e4a5e9b5bb69025eb879cb133259667241d61a1f (diff) | |
download | cpython-13f37f2ba8b1fa39f312dca920e847d9c0313c77.zip cpython-13f37f2ba8b1fa39f312dca920e847d9c0313c77.tar.gz cpython-13f37f2ba8b1fa39f312dca920e847d9c0313c77.tar.bz2 |
closes bpo-37964: add F_GETPATH command to fcntl (GH-15550)
https://bugs.python.org/issue37964
Automerge-Triggered-By: @benjaminp
-rw-r--r-- | Doc/library/fcntl.rst | 4 | ||||
-rw-r--r-- | Lib/test/test_fcntl.py | 6 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-08-27-21-19-28.bpo-37964.SxdnsF.rst | 1 | ||||
-rw-r--r-- | Modules/fcntlmodule.c | 3 |
4 files changed, 14 insertions, 0 deletions
diff --git a/Doc/library/fcntl.rst b/Doc/library/fcntl.rst index 2db9674..6a66f5b 100644 --- a/Doc/library/fcntl.rst +++ b/Doc/library/fcntl.rst @@ -33,6 +33,10 @@ descriptor. ``F_SEAL_*`` constants for sealing of :func:`os.memfd_create` file descriptors. +.. versionchanged:: 3.9 + On macOS, the fcntl module exposes the ``F_GETPATH`` constant, which obtains + the path of a file from a file descriptor. + The module defines the following functions: diff --git a/Lib/test/test_fcntl.py b/Lib/test/test_fcntl.py index 5d4abe3..38097db 100644 --- a/Lib/test/test_fcntl.py +++ b/Lib/test/test_fcntl.py @@ -144,6 +144,12 @@ class TestFcntl(unittest.TestCase): self.assertRaises(OverflowError, fcntl.flock, _testcapi.INT_MAX+1, fcntl.LOCK_SH) + @unittest.skipIf(sys.platform != 'darwin', "F_GETPATH is only available on macos") + def test_fcntl_f_getpath(self): + self.f = open(TESTFN, 'wb') + abspath = os.path.abspath(TESTFN) + res = fcntl.fcntl(self.f.fileno(), fcntl.F_GETPATH, bytes(len(abspath))) + self.assertEqual(abspath, res.decode('utf-8')) def test_main(): run_unittest(TestFcntl) diff --git a/Misc/NEWS.d/next/Library/2019-08-27-21-19-28.bpo-37964.SxdnsF.rst b/Misc/NEWS.d/next/Library/2019-08-27-21-19-28.bpo-37964.SxdnsF.rst new file mode 100644 index 0000000..c25e643 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-08-27-21-19-28.bpo-37964.SxdnsF.rst @@ -0,0 +1 @@ +Add ``F_GETPATH`` command to :mod:`fcntl`. diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c index 0fbf787..cfa1225 100644 --- a/Modules/fcntlmodule.c +++ b/Modules/fcntlmodule.c @@ -501,6 +501,9 @@ all_ins(PyObject* m) #ifdef F_SETOWN if (PyModule_AddIntMacro(m, F_SETOWN)) return -1; #endif +#ifdef F_GETPATH + if (PyModule_AddIntMacro(m, F_GETPATH)) return -1; +#endif #ifdef F_GETSIG if (PyModule_AddIntMacro(m, F_GETSIG)) return -1; #endif |