X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=lib%2FBackupPC%2FXfer%2FRsync.pm;h=f92e6671c422b288c0722b05a1806d8d8daa2fa6;hp=ff24cd5632db4d0227b6cf9574ebe3bfc681083d;hb=3d15da9b2c6de8018c02677549678d6d769234b5;hpb=f076585d3ff9dfe6de32292b897e293008efe74e diff --git a/lib/BackupPC/Xfer/Rsync.pm b/lib/BackupPC/Xfer/Rsync.pm index ff24cd5..f92e667 100644 --- a/lib/BackupPC/Xfer/Rsync.pm +++ b/lib/BackupPC/Xfer/Rsync.pm @@ -29,7 +29,7 @@ # #======================================================================== # -# Version 3.1.0, released 25 Nov 2007. +# Version 3.2.0, released 31 Dec 2008. # # See http://backuppc.sourceforge.net. # @@ -376,7 +376,26 @@ sub run $t->{hostError} = $err; return; } + + # + # This is a hack. To avoid wide chars we encode the arguments + # to utf8 byte streams, then to the client's local charset. + # The second conversion should really go in File::RsyncP, since + # it shouldn't be applied to in-line include/exclude arguments. + # + for ( my $i = 0 ; $i < @{$rs->{rsyncArgs}} ; $i++ ) { + $rs->{rsyncArgs}[$i] = encode('utf8', $rs->{rsyncArgs}[$i]); + from_to($rs->{rsyncArgs}[$i], 'utf8', $conf->{ClientCharset}) + if ( $conf->{ClientCharset} ne "" ); + } + + my $str = "RsyncArgsBefore: " . join(" ", @{$rs->{rsyncArgs}}) . "\n"; + $t->{XferLOG}->write(\$str); + $rs->serverStart($remoteSend, $remoteDirDaemon); + + my $str = "RsyncArgsAfter: " . join(" ", @{$rs->{rsyncArgs}}) . "\n"; + $t->{XferLOG}->write(\$str); } my $shareNameSlash = $t->{shareNameSlash}; from_to($shareNameSlash, "utf8", $conf->{ClientCharset})