From 1d9e23d8724e23d2e7fd3c49a7163f7bea172062 Mon Sep 17 00:00:00 2001 From: Jonathan LaCour Date: Wed, 6 Jun 2012 00:00:00 -0700 Subject: [PATCH 1/2] Adds proper handling of unicode file/directory names. --- bin/boto-rsync | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) mode change 100644 => 100755 bin/boto-rsync diff --git a/bin/boto-rsync b/bin/boto-rsync old mode 100644 new mode 100755 index 76278b2..55f4b37 --- a/bin/boto-rsync +++ b/bin/boto-rsync @@ -450,6 +450,7 @@ def main(): try: keys = {} + for key in b.list(prefix=cloud_path): if no_recurse and '/' in key.name[len(cloud_path):]: continue @@ -484,6 +485,8 @@ def main(): else: key_name = cloud_path + get_key_name(root, path) + '/' + key_name = key_name.decode('utf-8') + if ignore_empty and not files: if not quiet: sys.stdout.write( @@ -539,7 +542,7 @@ def main(): continue fullpath = os.path.join(root, file) - key_name = cloud_path + get_key_name(fullpath, path) + key_name = (cloud_path + get_key_name(fullpath, path)).decode('utf-8') file_size = os.path.getsize(fullpath) if file_size == 0: @@ -566,7 +569,7 @@ def main(): fullpath[len(path):].lstrip(os.sep) ) continue - + sys.stdout.write( '%s\n' % fullpath[len(path):].lstrip(os.sep) @@ -607,6 +610,7 @@ def main(): for file in files: fullpath = os.path.join(root, file) key_name = cloud_path + get_key_name(fullpath, path) + key_name = key_name.decode('utf-8') if key_name in keys: del(keys[key_name]) @@ -618,6 +622,7 @@ def main(): key_name = cloud_path + get_key_name(root, path) + \ '/' + key_name = key_name.decode('utf-8') if key_name in keys: del(keys[key_name]) From e1862c631973fd18405203cb7889b649421e1ac8 Mon Sep 17 00:00:00 2001 From: Jonathan LaCour Date: Wed, 6 Jun 2012 00:04:05 -0700 Subject: [PATCH 2/2] Fixing some whitespace. --- bin/boto-rsync | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/boto-rsync b/bin/boto-rsync index 55f4b37..97bc5fb 100755 --- a/bin/boto-rsync +++ b/bin/boto-rsync @@ -450,7 +450,6 @@ def main(): try: keys = {} - for key in b.list(prefix=cloud_path): if no_recurse and '/' in key.name[len(cloud_path):]: continue @@ -569,7 +568,7 @@ def main(): fullpath[len(path):].lstrip(os.sep) ) continue - + sys.stdout.write( '%s\n' % fullpath[len(path):].lstrip(os.sep)