From 6c51d518800cdda7ba16ae163be0d211d2c4fa12 Mon Sep 17 00:00:00 2001 From: jcea Date: Sun, 28 Jan 2018 14:00:08 +0100 Subject: bpo-32659: Solaris "stat" should support "st_fstype" (#5307) * bpo-32659: Solaris "stat" should support "st_fstype" * Add 'versionadded' --- Doc/library/os.rst | 10 ++++++++++ .../Library/2018-01-25-03-46-00.bpo-32659.VHYoON.rst | 1 + Modules/posixmodule.c | 17 +++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2018-01-25-03-46-00.bpo-32659.VHYoON.rst diff --git a/Doc/library/os.rst b/Doc/library/os.rst index b8f57f5..bae432d 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -2474,6 +2474,14 @@ features: Time of file creation. + On Solaris and derivatives, the following attributes may also be + available: + + .. attribute:: st_fstype + + String that uniquely identifies the type of the filesystem that + contains the file. + On Mac OS systems, the following attributes may also be available: .. attribute:: st_rsize @@ -2517,6 +2525,8 @@ features: .. versionadded:: 3.5 Added the :attr:`st_file_attributes` member on Windows. + .. versionadded:: 3.7 + Added the :attr:`st_fstype` member to Solaris/derivatives. .. function:: statvfs(path) diff --git a/Misc/NEWS.d/next/Library/2018-01-25-03-46-00.bpo-32659.VHYoON.rst b/Misc/NEWS.d/next/Library/2018-01-25-03-46-00.bpo-32659.VHYoON.rst new file mode 100644 index 0000000..f29f087 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-01-25-03-46-00.bpo-32659.VHYoON.rst @@ -0,0 +1 @@ +Under Solaris and derivatives, :class:`os.stat_result` provides a st_fstype attribute. diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index a1a38eb..ceea855 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -394,6 +394,10 @@ static int win32_can_symlink = 0; #define MODNAME "posix" #endif +#if defined(__sun) +/* Something to implement in autoconf, not present in autoconf 2.69 */ +#define HAVE_STRUCT_STAT_ST_FSTYPE 1 +#endif #ifdef HAVE_FORK static void @@ -1789,6 +1793,9 @@ static PyStructSequence_Field stat_result_fields[] = { #ifdef HAVE_STRUCT_STAT_ST_FILE_ATTRIBUTES {"st_file_attributes", "Windows file attribute bits"}, #endif +#ifdef HAVE_STRUCT_STAT_ST_FSTYPE + {"st_fstype", "Type of filesystem"}, +#endif {0} }; @@ -1834,6 +1841,12 @@ static PyStructSequence_Field stat_result_fields[] = { #define ST_FILE_ATTRIBUTES_IDX ST_BIRTHTIME_IDX #endif +#ifdef HAVE_STRUCT_STAT_ST_FSTYPE +#define ST_FSTYPE_IDX (ST_FILE_ATTRIBUTES_IDX+1) +#else +#define ST_FSTYPE_IDX ST_FILE_ATTRIBUTES_IDX +#endif + static PyStructSequence_Desc stat_result_desc = { "stat_result", /* name */ stat_result__doc__, /* doc */ @@ -2057,6 +2070,10 @@ _pystat_fromstructstat(STRUCT_STAT *st) PyStructSequence_SET_ITEM(v, ST_FILE_ATTRIBUTES_IDX, PyLong_FromUnsignedLong(st->st_file_attributes)); #endif +#ifdef HAVE_STRUCT_STAT_ST_FSTYPE + PyStructSequence_SET_ITEM(v, ST_FSTYPE_IDX, + PyUnicode_FromString(st->st_fstype)); +#endif if (PyErr_Occurred()) { Py_DECREF(v); -- cgit v0.12