mirror of
https://github.com/python/cpython.git
synced 2025-11-08 21:52:45 +00:00
gh-108717: Speedup os.DirEntry.is_junction function (#108718)
This commit is contained in:
parent
6f8411cfd6
commit
65a2bce704
2 changed files with 7 additions and 13 deletions
14
Modules/clinic/posixmodule.c.h
generated
14
Modules/clinic/posixmodule.c.h
generated
|
|
@ -10695,22 +10695,18 @@ PyDoc_STRVAR(os_DirEntry_is_junction__doc__,
|
||||||
"Return True if the entry is a junction; cached per entry.");
|
"Return True if the entry is a junction; cached per entry.");
|
||||||
|
|
||||||
#define OS_DIRENTRY_IS_JUNCTION_METHODDEF \
|
#define OS_DIRENTRY_IS_JUNCTION_METHODDEF \
|
||||||
{"is_junction", _PyCFunction_CAST(os_DirEntry_is_junction), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, os_DirEntry_is_junction__doc__},
|
{"is_junction", (PyCFunction)os_DirEntry_is_junction, METH_NOARGS, os_DirEntry_is_junction__doc__},
|
||||||
|
|
||||||
static int
|
static int
|
||||||
os_DirEntry_is_junction_impl(DirEntry *self, PyTypeObject *defining_class);
|
os_DirEntry_is_junction_impl(DirEntry *self);
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
os_DirEntry_is_junction(DirEntry *self, PyTypeObject *defining_class, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
|
os_DirEntry_is_junction(DirEntry *self, PyObject *Py_UNUSED(ignored))
|
||||||
{
|
{
|
||||||
PyObject *return_value = NULL;
|
PyObject *return_value = NULL;
|
||||||
int _return_value;
|
int _return_value;
|
||||||
|
|
||||||
if (nargs) {
|
_return_value = os_DirEntry_is_junction_impl(self);
|
||||||
PyErr_SetString(PyExc_TypeError, "is_junction() takes no arguments");
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
_return_value = os_DirEntry_is_junction_impl(self, defining_class);
|
|
||||||
if ((_return_value == -1) && PyErr_Occurred()) {
|
if ((_return_value == -1) && PyErr_Occurred()) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
@ -11992,4 +11988,4 @@ exit:
|
||||||
#ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF
|
#ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF
|
||||||
#define OS_WAITSTATUS_TO_EXITCODE_METHODDEF
|
#define OS_WAITSTATUS_TO_EXITCODE_METHODDEF
|
||||||
#endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */
|
#endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */
|
||||||
/*[clinic end generated code: output=30c63cb556431cea input=a9049054013a1b77]*/
|
/*[clinic end generated code: output=1dd5aa7495cd6e3a input=a9049054013a1b77]*/
|
||||||
|
|
|
||||||
|
|
@ -14576,15 +14576,13 @@ os_DirEntry_is_symlink_impl(DirEntry *self, PyTypeObject *defining_class)
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
os.DirEntry.is_junction -> bool
|
os.DirEntry.is_junction -> bool
|
||||||
defining_class: defining_class
|
|
||||||
/
|
|
||||||
|
|
||||||
Return True if the entry is a junction; cached per entry.
|
Return True if the entry is a junction; cached per entry.
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
os_DirEntry_is_junction_impl(DirEntry *self, PyTypeObject *defining_class)
|
os_DirEntry_is_junction_impl(DirEntry *self)
|
||||||
/*[clinic end generated code: output=7061a07b0ef2cd1f input=475cd36fb7d4723f]*/
|
/*[clinic end generated code: output=97f64d5d99eeccb5 input=4fc8e701eea118a1]*/
|
||||||
{
|
{
|
||||||
#ifdef MS_WINDOWS
|
#ifdef MS_WINDOWS
|
||||||
return self->win32_lstat.st_reparse_tag == IO_REPARSE_TAG_MOUNT_POINT;
|
return self->win32_lstat.st_reparse_tag == IO_REPARSE_TAG_MOUNT_POINT;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue