Staging
v0.5.1
https://github.com/python/cpython
Revision cbe99a1f1d60217d299da9493f0fa266620f79ab authored by Barry Warsaw on 04 June 2001, 18:59:53 UTC, committed by Barry Warsaw on 04 June 2001, 18:59:53 UTC
was applied to urllib.py, but the corresponding change to
test_urllib.py was not applied.  Backport revision 1.6 of this file
into the 2.0 maintenance branch.

----------------------------
revision 1.6
date: 2001/01/19 07:00:08;  author: tim_one;  state: Exp;  lines: +8 -3
urllib.py very recently changed to produce uppercase escapes, but no
corresponding changes were made to its std test.
----------------------------
1 parent 1f6982a
Raw File
Tip revision: cbe99a1f1d60217d299da9493f0fa266620f79ab authored by Barry Warsaw on 04 June 2001, 18:59:53 UTC
The SF patch (#129288 - urllib.py - chanign %02x to %02X in quoting)
Tip revision: cbe99a1
dircache.py
"""Read and cache directory listings.

The listdir() routine returns a sorted list of the files in a directory,
using a cache to avoid reading the directory more often than necessary.
The annotate() routine appends slashes to directories."""

import os

cache = {}

def listdir(path):
    """List directory contents, using cache."""
    try:
        cached_mtime, list = cache[path]
        del cache[path]
    except KeyError:
        cached_mtime, list = -1, []
    try:
        mtime = os.stat(path)[8]
    except os.error:
        return []
    if mtime <> cached_mtime:
        try:
            list = os.listdir(path)
        except os.error:
            return []
        list.sort()
    cache[path] = mtime, list
    return list

opendir = listdir # XXX backward compatibility

def annotate(head, list):
    """Add '/' suffixes to directories."""
    for i in range(len(list)):
        if os.path.isdir(os.path.join(head, list[i])):
            list[i] = list[i] + '/'
back to top