* removed Host_or_User_name from lang files
[BackupPC.git] / lib / BackupPC / Xfer / RsyncFileIO.pm
index 6c8a7cd..cc29e29 100644 (file)
@@ -8,11 +8,11 @@
 #   Craig Barratt  <cbarratt@users.sourceforge.net>
 #
 # COPYRIGHT
-#   Copyright (C) 2002  Craig Barratt
+#   Copyright (C) 2002-2003  Craig Barratt
 #
 #========================================================================
 #
-# Version 2.0.0beta1, released 30 Mar 2003.
+# Version 2.1.0_CVS, released 3 Jul 2003.
 #
 # See http://backuppc.sourceforge.net.
 #
@@ -719,7 +719,7 @@ sub fileDeltaRxNext
                     #
                     my $data;
                     $fio->{rxInData} = "";
-                    while ( $fh->read(\$data, 30 * 1024 * 1024) > 0 ) {
+                    while ( $fh->read(\$data, 16 * 1024 * 1024) > 0 ) {
                         $fio->{rxInData} .= $data;
                     }
                    $fio->log("$attr->{fullPath}: cached all $attr->{size}"
@@ -734,6 +734,7 @@ sub fileDeltaRxNext
                     if ( open(F, "+>", "$fio->{outDirSh}RStmp") ) {
                         my $data;
                        my $byteCnt = 0;
+                       binmode(F);
                         while ( $fh->read(\$data, 1024 * 1024) > 0 ) {
                             if ( syswrite(F, $data) != length($data) ) {
                                 $fio->log(sprintf("Can't write len=%d to %s",
@@ -760,6 +761,7 @@ sub fileDeltaRxNext
                 $fh->close;
             } else {
                 if ( open(F, "<", $attr->{fullPath}) ) {
+                   binmode(F);
                     $fio->{rxInFd} = *F;
                     $fio->{rxInName} = $attr->{fullPath};
                 } else {
@@ -968,26 +970,29 @@ sub fileListEltSend
            || $type == BPC_FTYPE_BLOCKDEV
            || $type == BPC_FTYPE_SYMLINK ) {
        my $fh = BackupPC::FileZIO->open($a->{fullPath}, 0, $a->{compress});
-       my $str;
+       my($str, $rdSize);
        if ( defined($fh) ) {
-           if ( $fh->read(\$str, $a->{size} + 1) == $a->{size} ) {
-               if ( $type == BPC_FTYPE_SYMLINK ) {
-                   #
-                   # Reconstruct symbolic link
-                   #
-                   $extraAttribs = { link => $str };
-               } elsif ( $str =~ /(\d*),(\d*)/ ) {
-                   #
-                   # Reconstruct char or block special major/minor device num
-                   #
-                   $extraAttribs = { rdev => $1 * 256 + $2 };
-               } else {
-                   $fio->log("$name: unexpected special file contents $str");
+           $rdSize = $fh->read(\$str, $a->{size} + 1024);
+           if ( $type == BPC_FTYPE_SYMLINK ) {
+               #
+               # Reconstruct symbolic link
+               #
+               $extraAttribs = { link => $str };
+               if ( $rdSize != $a->{size} ) {
+                   # ERROR
+                   $fio->log("$name: can't read exactly $a->{size} bytes");
                    $fio->{stats}{errorCnt}++;
                }
+           } elsif ( $str =~ /(\d*),(\d*)/ ) {
+               #
+               # Reconstruct char or block special major/minor device num
+               #
+               # Note: char/block devices have $a->{size} = 0, so we
+               # can't do an error check on $rdSize.
+               #
+               $extraAttribs = { rdev => $1 * 256 + $2 };
            } else {
-               # ERROR
-               $fio->log("$name: can't read exactly $a->{size} bytes");
+               $fio->log("$name: unexpected special file contents $str");
                $fio->{stats}{errorCnt}++;
            }
            $fh->close;