Merge
This commit is contained in:
commit
3fd6e2b910
|
@ -769,7 +769,7 @@ as internal buffering of data.
|
|||
.. versionadded:: 3.3
|
||||
|
||||
|
||||
.. function:: fdlistdir(fd)
|
||||
.. function:: flistdir(fd)
|
||||
|
||||
Like :func:`listdir`, but uses a file descriptor instead and always returns
|
||||
strings.
|
||||
|
|
|
@ -571,7 +571,7 @@ os
|
|||
|
||||
* Other new functions:
|
||||
|
||||
* :func:`~os.fdlistdir` (:issue:`10755`)
|
||||
* :func:`~os.flistdir` (:issue:`10755`)
|
||||
* :func:`~os.getgrouplist` (:issue:`9344`)
|
||||
|
||||
|
||||
|
|
|
@ -357,7 +357,7 @@ if _exists("openat"):
|
|||
# whether to follow symlinks
|
||||
flag = 0 if followlinks else AT_SYMLINK_NOFOLLOW
|
||||
|
||||
names = fdlistdir(topfd)
|
||||
names = flistdir(topfd)
|
||||
dirs, nondirs = [], []
|
||||
for name in names:
|
||||
# Here, we don't use AT_SYMLINK_NOFOLLOW to be consistent with
|
||||
|
|
|
@ -611,8 +611,8 @@ class FwalkTests(WalkTests):
|
|||
for root, dirs, files, rootfd in os.fwalk(*args):
|
||||
# check that the FD is valid
|
||||
os.fstat(rootfd)
|
||||
# check that fdlistdir() returns consistent information
|
||||
self.assertEqual(set(os.fdlistdir(rootfd)), set(dirs) | set(files))
|
||||
# check that flistdir() returns consistent information
|
||||
self.assertEqual(set(os.flistdir(rootfd)), set(dirs) | set(files))
|
||||
|
||||
def test_fd_leak(self):
|
||||
# Since we're opening a lot of FDs, we must be careful to avoid leaks:
|
||||
|
|
|
@ -451,18 +451,18 @@ class PosixTester(unittest.TestCase):
|
|||
if hasattr(posix, 'listdir'):
|
||||
self.assertTrue(support.TESTFN in posix.listdir())
|
||||
|
||||
@unittest.skipUnless(hasattr(posix, 'fdlistdir'), "test needs posix.fdlistdir()")
|
||||
def test_fdlistdir(self):
|
||||
@unittest.skipUnless(hasattr(posix, 'flistdir'), "test needs posix.flistdir()")
|
||||
def test_flistdir(self):
|
||||
f = posix.open(posix.getcwd(), posix.O_RDONLY)
|
||||
self.addCleanup(posix.close, f)
|
||||
self.assertEqual(
|
||||
sorted(posix.listdir('.')),
|
||||
sorted(posix.fdlistdir(f))
|
||||
sorted(posix.flistdir(f))
|
||||
)
|
||||
# Check that the fd offset was reset (issue #13739)
|
||||
self.assertEqual(
|
||||
sorted(posix.listdir('.')),
|
||||
sorted(posix.fdlistdir(f))
|
||||
sorted(posix.flistdir(f))
|
||||
)
|
||||
|
||||
def test_access(self):
|
||||
|
|
|
@ -466,6 +466,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #10811: Fix recursive usage of cursors. Instead of crashing,
|
||||
raise a ProgrammingError now.
|
||||
|
||||
- Issue #10881: Fix test_site failure with OS X framework builds.
|
||||
|
||||
- Issue #964437 Make IDLE help window non-modal.
|
||||
|
@ -1745,7 +1748,7 @@ Library
|
|||
|
||||
- Issue #11297: Add collections.ChainMap().
|
||||
|
||||
- Issue #10755: Add the posix.fdlistdir() function. Patch by Ross Lagerwall.
|
||||
- Issue #10755: Add the posix.flistdir() function. Patch by Ross Lagerwall.
|
||||
|
||||
- Issue #4761: Add the *at() family of functions (openat(), etc.) to the posix
|
||||
module. Patch by Ross Lagerwall.
|
||||
|
|
|
@ -2867,12 +2867,12 @@ posix_listdir(PyObject *self, PyObject *args)
|
|||
} /* end of posix_listdir */
|
||||
|
||||
#ifdef HAVE_FDOPENDIR
|
||||
PyDoc_STRVAR(posix_fdlistdir__doc__,
|
||||
"fdlistdir(fd) -> list_of_strings\n\n\
|
||||
PyDoc_STRVAR(posix_flistdir__doc__,
|
||||
"flistdir(fd) -> list_of_strings\n\n\
|
||||
Like listdir(), but uses a file descriptor instead.");
|
||||
|
||||
static PyObject *
|
||||
posix_fdlistdir(PyObject *self, PyObject *args)
|
||||
posix_flistdir(PyObject *self, PyObject *args)
|
||||
{
|
||||
PyObject *d, *v;
|
||||
DIR *dirp;
|
||||
|
@ -2880,7 +2880,7 @@ posix_fdlistdir(PyObject *self, PyObject *args)
|
|||
int fd;
|
||||
|
||||
errno = 0;
|
||||
if (!PyArg_ParseTuple(args, "i:fdlistdir", &fd))
|
||||
if (!PyArg_ParseTuple(args, "i:flistdir", &fd))
|
||||
return NULL;
|
||||
/* closedir() closes the FD, so we duplicate it */
|
||||
fd = dup(fd);
|
||||
|
@ -10555,7 +10555,7 @@ static PyMethodDef posix_methods[] = {
|
|||
#endif /* HAVE_LINK */
|
||||
{"listdir", posix_listdir, METH_VARARGS, posix_listdir__doc__},
|
||||
#ifdef HAVE_FDOPENDIR
|
||||
{"fdlistdir", posix_fdlistdir, METH_VARARGS, posix_fdlistdir__doc__},
|
||||
{"flistdir", posix_flistdir, METH_VARARGS, posix_flistdir__doc__},
|
||||
#endif
|
||||
{"lstat", posix_lstat, METH_VARARGS, posix_lstat__doc__},
|
||||
{"mkdir", posix_mkdir, METH_VARARGS, posix_mkdir__doc__},
|
||||
|
|
Loading…
Reference in New Issue