From: Giuseppe Scrivano Date: Thu, 14 Dec 2017 22:46:46 +0000 (+0100) Subject: bpo-32143: add f_fsid to os.statvfs() (#4571) X-Git-Tag: v3.7.0a4~136 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=96a5e50a5de3683b2afd6d680c7ecc4b525986f6;p=python bpo-32143: add f_fsid to os.statvfs() (#4571) Signed-off-by: Giuseppe Scrivano --- diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 95c8113723..a24934ceb7 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 2241256909..f235f801e0 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 0000000000..f416ec504e --- /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 fb879e3821..448d4b7428 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;