diff options
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/clinic/posixmodule.c.h | 23 | ||||
-rw-r--r-- | Modules/posixmodule.c | 18 |
2 files changed, 15 insertions, 26 deletions
diff --git a/Modules/clinic/posixmodule.c.h b/Modules/clinic/posixmodule.c.h index 2c46d4bf17..704c824e9e 100644 --- a/Modules/clinic/posixmodule.c.h +++ b/Modules/clinic/posixmodule.c.h @@ -1005,27 +1005,6 @@ PyDoc_STRVAR(os__isdir__doc__, #define OS__ISDIR_METHODDEF \ {"_isdir", (PyCFunction)os__isdir, METH_O, os__isdir__doc__}, -static PyObject * -os__isdir_impl(PyObject *module, path_t *path); - -static PyObject * -os__isdir(PyObject *module, PyObject *arg) -{ - PyObject *return_value = NULL; - path_t path = PATH_T_INITIALIZE("_isdir", "path", 0, 0); - - if (!PyArg_Parse(arg, "O&:_isdir", path_converter, &path)) { - goto exit; - } - return_value = os__isdir_impl(module, &path); - -exit: - /* Cleanup for path */ - path_cleanup(&path); - - return return_value; -} - #endif /* defined(MS_WINDOWS) */ #if defined(MS_WINDOWS) @@ -6778,4 +6757,4 @@ exit: #ifndef OS_GETRANDOM_METHODDEF #define OS_GETRANDOM_METHODDEF #endif /* !defined(OS_GETRANDOM_METHODDEF) */ -/*[clinic end generated code: output=0f23518dd4482e66 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=40cac0135f846202 input=a9049054013a1b77]*/ diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 53d2ce2243..400ed97982 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -3821,22 +3821,32 @@ cleanup: /*[clinic input] os._isdir - path: path_t + path as arg: object / Return true if the pathname refers to an existing directory. [clinic start generated code]*/ static PyObject * -os__isdir_impl(PyObject *module, path_t *path) -/*[clinic end generated code: output=75f56f32720836cb input=5e0800149c0ad95f]*/ +os__isdir(PyObject *module, PyObject *arg) +/*[clinic end generated code: output=404f334d85d4bf25 input=36cb6785874d479e]*/ { DWORD attributes; + path_t path = PATH_T_INITIALIZE("_isdir", "path", 0, 0); + + if (!path_converter(arg, &path)) { + if (PyErr_ExceptionMatches(PyExc_ValueError)) { + PyErr_Clear(); + Py_RETURN_FALSE; + } + return NULL; + } Py_BEGIN_ALLOW_THREADS - attributes = GetFileAttributesW(path->wide); + attributes = GetFileAttributesW(path.wide); Py_END_ALLOW_THREADS + path_cleanup(&path); if (attributes == INVALID_FILE_ATTRIBUTES) Py_RETURN_FALSE; |