Add --local-no-unicode-normalization flag

Fixes #1411
This commit is contained in:
Bob Potter 2017-05-18 20:04:22 -05:00 committed by Nick Craig-Wood
parent a9d29c2264
commit 525220b14e
2 changed files with 16 additions and 1 deletions

View file

@ -120,6 +120,18 @@ $ rclone -L ls /tmp/a
6 b/one
```
#### --no-local-unicode-normalization ####
By default rclone normalizes (NFC) the unicode representation of filenames and
directories. This flag disables that normalization and uses the same
representation as the local filesystem.
This can be useful if you need to retain the local unicode representation and
you are using a cloud provider which supports unnormalized names (e.g. S3 or ACD).
This should also work with any provider if you are using crypt and have file
name encryption (the default) or obfuscation turned on.
#### --one-file-system, -x ####
This tells rclone to stay in the filesystem specified by the root and

View file

@ -23,6 +23,7 @@ import (
var (
followSymlinks = fs.BoolP("copy-links", "L", false, "Follow symlinks and copy the pointed to item.")
noUTFNorm = fs.BoolP("local-no-unicode-normalization", "", false, "Don't apply unicode normalization to paths and filenames")
)
// Constants
@ -325,7 +326,9 @@ func (f *Fs) cleanRemote(name string) string {
f.wmu.Unlock()
name = string([]rune(name))
}
name = norm.NFC.String(name)
if !*noUTFNorm {
name = norm.NFC.String(name)
}
name = filepath.ToSlash(name)
return name
}