diff options
author | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-08-22 14:49:51 +0100 |
---|---|---|
committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-08-22 14:49:51 +0100 |
commit | a498da43c7fdb9f24b73680c02a4a3588cc62d9a (patch) | |
tree | daf8119dae1749b5165b68033a1b23a7375ce9ce /contrib/casesmash.py | |
download | mercurial-tarball-a498da43c7fdb9f24b73680c02a4a3588cc62d9a.tar.gz |
Tarball conversion
Diffstat (limited to 'contrib/casesmash.py')
-rw-r--r-- | contrib/casesmash.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/contrib/casesmash.py b/contrib/casesmash.py new file mode 100644 index 0000000..071e014 --- /dev/null +++ b/contrib/casesmash.py @@ -0,0 +1,34 @@ +import sys, os, __builtin__ +from mercurial import util + +def lowerwrap(scope, funcname): + f = getattr(scope, funcname) + def wrap(fname, *args, **kwargs): + d, base = os.path.split(fname) + try: + files = os.listdir(d or '.') + except OSError, inst: + files = [] + if base in files: + return f(fname, *args, **kwargs) + for fn in files: + if fn.lower() == base.lower(): + return f(os.path.join(d, fn), *args, **kwargs) + return f(fname, *args, **kwargs) + scope.__dict__[funcname] = wrap + +def normcase(path): + return path.lower() + +os.path.normcase = normcase + +for f in 'file open'.split(): + lowerwrap(__builtin__, f) + +for f in "chmod chown open lstat stat remove unlink".split(): + lowerwrap(os, f) + +for f in "exists lexists".split(): + lowerwrap(os.path, f) + +lowerwrap(util, 'posixfile') |