X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/rsync-backup/blobdiff_plain/8aeb0c535ad9f25a49755eaa05baace543094605..ad7e85342dcf9fe315a969fa7b59e7e6075bdadc:/fshash.in diff --git a/fshash.in b/fshash.in index b6aa4cf..4f8b1c7 100644 --- a/fshash.in +++ b/fshash.in @@ -98,10 +98,15 @@ def enum_walk(file, func): dir([OS.path.join(d.name, e) for e in dirents(d.name)], dev) if file.endswith('/'): - OS.chdir(file) - fi = FileInfo('.') - func(fi) - dir(dirents('.'), fi.st.st_dev) + cwd = OS.open('.', OS.O_RDONLY) + try: + OS.chdir(file) + fi = FileInfo('.') + func(fi) + dir(dirents('.'), fi.st.st_dev) + finally: + OS.fchdir(cwd) + OS.close(cwd) else: fi = FileInfo(file) func(fi)