diff options
author | Giuseppe Scrivano <gscrivano@gnu.org> | 2017-12-14 22:46:46 (GMT) |
---|---|---|
committer | Fred Drake <fred@fdrake.net> | 2017-12-14 22:46:46 (GMT) |
commit | 96a5e50a5de3683b2afd6d680c7ecc4b525986f6 (patch) | |
tree | f4adb6717deabda9d44a447ce2aa6edc5ea3bb6b | |
parent | 2b5fd1e9ca9318673989e6ccac2c8acadc3809cd (diff) | |
download | cpython-96a5e50a5de3683b2afd6d680c7ecc4b525986f6.zip cpython-96a5e50a5de3683b2afd6d680c7ecc4b525986f6.tar.gz cpython-96a5e50a5de3683b2afd6d680c7ecc4b525986f6.tar.bz2 |
bpo-32143: add f_fsid to os.statvfs() (#4571)
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
-rw-r--r-- | Doc/library/os.rst | 5 | ||||
-rw-r--r-- | Lib/test/test_os.py | 5 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2017-11-26-17-28-26.bpo-32143.o7YdXL.rst | 1 | ||||
-rw-r--r-- | Modules/posixmodule.c | 2 |
4 files changed, 12 insertions, 1 deletions
diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 95c8113..a24934c 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -2436,7 +2436,7 @@ features: correspond to the members of the :c:type:`statvfs` structure, namely: :attr:`f_bsize`, :attr:`f_frsize`, :attr:`f_blocks`, :attr:`f_bfree`, :attr:`f_bavail`, :attr:`f_files`, :attr:`f_ffree`, :attr:`f_favail`, - :attr:`f_flag`, :attr:`f_namemax`. + :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`. Two module-level constants are defined for the :attr:`f_flag` attribute's bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted @@ -2471,6 +2471,9 @@ features: .. versionchanged:: 3.6 Accepts a :term:`path-like object`. + .. versionadded:: 3.7 + Added :attr:`f_fsid`. + .. data:: supports_dir_fd diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py index 2241256..f235f80 100644 --- a/Lib/test/test_os.py +++ b/Lib/test/test_os.py @@ -352,6 +352,11 @@ class StatAttributeTests(unittest.TestCase): for value, member in enumerate(members): self.assertEqual(getattr(result, 'f_' + member), result[value]) + self.assertTrue(isinstance(result.f_fsid, int)) + + # Test that the size of the tuple doesn't change + self.assertEqual(len(result), 10) + # Make sure that assignment really fails try: result.f_bfree = 1 diff --git a/Misc/NEWS.d/next/Library/2017-11-26-17-28-26.bpo-32143.o7YdXL.rst b/Misc/NEWS.d/next/Library/2017-11-26-17-28-26.bpo-32143.o7YdXL.rst new file mode 100644 index 0000000..f416ec5 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2017-11-26-17-28-26.bpo-32143.o7YdXL.rst @@ -0,0 +1 @@ +os.statvfs() includes the f_fsid field from statvfs(2) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index fb879e3..448d4b7 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1860,6 +1860,7 @@ static PyStructSequence_Field statvfs_result_fields[] = { {"f_favail", }, {"f_flag", }, {"f_namemax",}, + {"f_fsid", }, {0} }; @@ -9324,6 +9325,7 @@ _pystatvfs_fromstructstatvfs(struct statvfs st) { PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flag)); PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namemax)); #endif + PyStructSequence_SET_ITEM(v, 10, PyLong_FromUnsignedLong(st.f_fsid)); if (PyErr_Occurred()) { Py_DECREF(v); return NULL; |