From ad7e85342dcf9fe315a969fa7b59e7e6075bdadc Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Sun, 7 Oct 2012 22:20:04 +0100 Subject: [PATCH] fshash.in: Save and restore working directory when walking. Organization: Straylight/Edgeware From: Mark Wooding --- fshash.in | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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) -- [mdw]