The Samba-Bugzilla – Bug 4944
Iconv-patch does not convert command-line args
Last modified: 2008-07-26 10:12:37 UTC
Latest rsync archive tarball (http://rsync.samba.org/ftp/rsync/nightly/rsync-HEAD-20070821-0504GMT.tar.gz) does not convert command-line args if iconv support is enabled.
See also bug #3764, #2790.
Created attachment 2909 [details]
Proposed patch for converting command-line args
This patch will only convert command-line args regarding source and/or destination, it does not fix includes nor exclude lists.
Your patch appears to only translate the client's charset into UTF-8 before sending the command via the remote shell. This doesn't work for a number of reasons. The biggest is that the remote side needs to translate the args into its local charset. It also needs to do this before the shell sees it so that wildcards matching can take place.
The solution I have contemplated for this would be to have --iconv send a minimal amount of command-line args to get rsync running in server mode, and then have it perform an arg-sending step to get a replacement set of command-line args. This would work in a similar way as the files-from support (and could probably share much of the same code), but would need to take place prior to that handling, and the received args would need to be converted from UTF-8 into the local charset and then wild-card expanded into a new arg list (there is already code for this that is used in daemon mode).
For the moment, rsync requires the user to be in control of specifying exactly what they want in a way that the remote system can deal with.
The version in CVS now has a command-line option that causes the filename args and (various options too) to be sent over the socket to the remote rsync instead of to the shell that runs rsync. Combining this option with --iconv=OPT will convert the names that are sent.