Commit 6c51d518 authored by jcea's avatar jcea Committed by GitHub

bpo-32659: Solaris "stat" should support "st_fstype" (#5307)

* bpo-32659: Solaris "stat" should support "st_fstype"

* Add 'versionadded'
parent 43c0f1ac
...@@ -2474,6 +2474,14 @@ features: ...@@ -2474,6 +2474,14 @@ features:
Time of file creation. 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: On Mac OS systems, the following attributes may also be available:
.. attribute:: st_rsize .. attribute:: st_rsize
...@@ -2517,6 +2525,8 @@ features: ...@@ -2517,6 +2525,8 @@ features:
.. versionadded:: 3.5 .. versionadded:: 3.5
Added the :attr:`st_file_attributes` member on Windows. Added the :attr:`st_file_attributes` member on Windows.
.. versionadded:: 3.7
Added the :attr:`st_fstype` member to Solaris/derivatives.
.. function:: statvfs(path) .. function:: statvfs(path)
......
Under Solaris and derivatives, :class:`os.stat_result` provides a st_fstype attribute.
...@@ -394,6 +394,10 @@ static int win32_can_symlink = 0; ...@@ -394,6 +394,10 @@ static int win32_can_symlink = 0;
#define MODNAME "posix" #define MODNAME "posix"
#endif #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 #ifdef HAVE_FORK
static void static void
...@@ -1788,6 +1792,9 @@ static PyStructSequence_Field stat_result_fields[] = { ...@@ -1788,6 +1792,9 @@ static PyStructSequence_Field stat_result_fields[] = {
#endif #endif
#ifdef HAVE_STRUCT_STAT_ST_FILE_ATTRIBUTES #ifdef HAVE_STRUCT_STAT_ST_FILE_ATTRIBUTES
{"st_file_attributes", "Windows file attribute bits"}, {"st_file_attributes", "Windows file attribute bits"},
#endif
#ifdef HAVE_STRUCT_STAT_ST_FSTYPE
{"st_fstype", "Type of filesystem"},
#endif #endif
{0} {0}
}; };
...@@ -1834,6 +1841,12 @@ static PyStructSequence_Field stat_result_fields[] = { ...@@ -1834,6 +1841,12 @@ static PyStructSequence_Field stat_result_fields[] = {
#define ST_FILE_ATTRIBUTES_IDX ST_BIRTHTIME_IDX #define ST_FILE_ATTRIBUTES_IDX ST_BIRTHTIME_IDX
#endif #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 = { static PyStructSequence_Desc stat_result_desc = {
"stat_result", /* name */ "stat_result", /* name */
stat_result__doc__, /* doc */ stat_result__doc__, /* doc */
...@@ -2057,6 +2070,10 @@ _pystat_fromstructstat(STRUCT_STAT *st) ...@@ -2057,6 +2070,10 @@ _pystat_fromstructstat(STRUCT_STAT *st)
PyStructSequence_SET_ITEM(v, ST_FILE_ATTRIBUTES_IDX, PyStructSequence_SET_ITEM(v, ST_FILE_ATTRIBUTES_IDX,
PyLong_FromUnsignedLong(st->st_file_attributes)); PyLong_FromUnsignedLong(st->st_file_attributes));
#endif #endif
#ifdef HAVE_STRUCT_STAT_ST_FSTYPE
PyStructSequence_SET_ITEM(v, ST_FSTYPE_IDX,
PyUnicode_FromString(st->st_fstype));
#endif
if (PyErr_Occurred()) { if (PyErr_Occurred()) {
Py_DECREF(v); Py_DECREF(v);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment