From 4070a79409979950fba7022196aa3ac738dd6694 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Tue, 2 Aug 2011 21:12:04 -0400 Subject: [PATCH] fix permission bug in mirror_dir and ignore chmod errors --- overviewer_core/googlemap.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/overviewer_core/googlemap.py b/overviewer_core/googlemap.py index 3b2475e..a4fb156 100644 --- a/overviewer_core/googlemap.py +++ b/overviewer_core/googlemap.py @@ -53,10 +53,15 @@ def mirror_dir(src, dst, entities=None): elif os.path.isfile(os.path.join(src,entry)): try: shutil.copy(os.path.join(src, entry), os.path.join(dst, entry)) - except IOError: - # maybe permission problems? - os.chmod(os.path.join(src, entry), stat.S_IRUSR) - os.chmod(os.path.join(dst, entry), stat.S_IWUSR) + except IOError as outer: + try: + # maybe permission problems? + src_stat = os.stat(os.path.join(src, entry)) + os.chmod(os.path.join(src, entry), src_stat.st_mode | stat.S_IRUSR) + dst_stat = os.stat(os.path.join(dst, entry)) + os.chmod(os.path.join(dst, entry), dst_stat.st_mode | stat.S_IWUSR) + except OSError: # we don't care if this fails + pass shutil.copy(os.path.join(src, entry), os.path.join(dst, entry)) # if this stills throws an error, let it propagate up