X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/rsync-backup/blobdiff_plain/f6b4ffdc7265b79b945e2350efbd9d2a94df4450..977d0da99bb1ccfdbdcbccbb0fd059662c30737b:/fshash.in?ds=sidebyside diff --git a/fshash.in b/fshash.in index 1dbd8be..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) @@ -348,7 +353,7 @@ class GenericFormatter (object): tm = T.gmtime(t) return T.strftime('%Y-%m-%dT%H:%M:%SZ', tm) def _enc_name(me, n): - return n.encode('string_escape') + return ' \\-> '.join(n.encode('string_escape').split(' -> ')) def name(me): return me._enc_name(me.fi.name) def info(me):