diff options
Diffstat (limited to 'lib/statcache.py')
| -rw-r--r-- | lib/statcache.py | 72 |
1 files changed, 36 insertions, 36 deletions
diff --git a/lib/statcache.py b/lib/statcache.py index 0eaf810..36ecc96 100644 --- a/lib/statcache.py +++ b/lib/statcache.py @@ -15,72 +15,72 @@ cache = {} # Stat a file, possibly out of the cache. # def stat(path): - if cache.has_key(path): - return cache[path] - cache[path] = ret = posix.stat(path) - return ret + if cache.has_key(path): + return cache[path] + cache[path] = ret = posix.stat(path) + return ret # Reset the cache completely. # Hack: to reset a global variable, we import this module. # def reset(): - import statcache - # Check that we really imported the same module - if cache is not statcache.cache: - raise 'sorry, statcache identity crisis' - statcache.cache = {} + import statcache + # Check that we really imported the same module + if cache is not statcache.cache: + raise 'sorry, statcache identity crisis' + statcache.cache = {} # Remove a given item from the cache, if it exists. # def forget(path): - if cache.has_key(path): - del cache[path] + if cache.has_key(path): + del cache[path] # Remove all pathnames with a given prefix. # def forget_prefix(prefix): - n = len(prefix) - for path in cache.keys(): - if path[:n] = prefix: - del cache[path] + n = len(prefix) + for path in cache.keys(): + if path[:n] = prefix: + del cache[path] # Forget about a directory and all entries in it, but not about # entries in subdirectories. # def forget_dir(prefix): - if prefix[-1:] = '/' and prefix <> '/': - prefix = prefix[:-1] - forget(prefix) - if prefix[-1:] <> '/': - prefix = prefix + '/' - n = len(prefix) - for path in cache.keys(): - if path[:n] = prefix: - rest = path[n:] - if rest[-1:] = '/': rest = rest[:-1] - if '/' not in rest: - del cache[path] + if prefix[-1:] = '/' and prefix <> '/': + prefix = prefix[:-1] + forget(prefix) + if prefix[-1:] <> '/': + prefix = prefix + '/' + n = len(prefix) + for path in cache.keys(): + if path[:n] = prefix: + rest = path[n:] + if rest[-1:] = '/': rest = rest[:-1] + if '/' not in rest: + del cache[path] # Remove all pathnames except with a given prefix. # Normally used with prefix = '/' after a chdir(). # def forget_except_prefix(prefix): - n = len(prefix) - for path in cache.keys(): - if path[:n] <> prefix: - del cache[path] + n = len(prefix) + for path in cache.keys(): + if path[:n] <> prefix: + del cache[path] # Check for directory. # def isdir(path): - try: - st = stat(path) - except posix.error: - return 0 - return S_ISDIR(st[ST_MODE]) + try: + st = stat(path) + except posix.error: + return 0 + return S_ISDIR(st[ST_MODE]) |
