From: Mark Wooding Date: Sun, 7 Oct 2012 21:20:04 +0000 (+0100) Subject: fshash.in: Save and restore working directory when walking. X-Git-Tag: 0.99.1~1 X-Git-Url: https://git.distorted.org.uk/~mdw/rsync-backup/commitdiff_plain/ad7e85342dcf9fe315a969fa7b59e7e6075bdadc?ds=sidebyside fshash.in: Save and restore working directory when walking. --- 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)