projects
/
BackupPC.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
without params archive all hosts
[BackupPC.git]
/
lib
/
BackupPC
/
FileZIO.pm
diff --git
a/lib/BackupPC/FileZIO.pm
b/lib/BackupPC/FileZIO.pm
index
95237a5
..
ca3d1a9
100644
(file)
--- a/
lib/BackupPC/FileZIO.pm
+++ b/
lib/BackupPC/FileZIO.pm
@@
-11,7
+11,7
@@
# Craig Barratt <cbarratt@users.sourceforge.net>
#
# COPYRIGHT
# Craig Barratt <cbarratt@users.sourceforge.net>
#
# COPYRIGHT
-# Copyright (C) 2001-200
3
Craig Barratt
+# Copyright (C) 2001-200
9
Craig Barratt
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@
-29,7
+29,7
@@
#
#========================================================================
#
#
#========================================================================
#
-# Version
2.1.0_CVS, released 8 Feb 2004
.
+# Version
3.2.0, released 31 Jul 2010
.
#
# See http://backuppc.sourceforge.net.
#
#
# See http://backuppc.sourceforge.net.
#
@@
-43,6
+43,7
@@
use vars qw( $CompZlibOK );
use Carp;
use File::Path;
use File::Copy;
use Carp;
use File::Path;
use File::Copy;
+use Encode;
#
# For compressed files we have a to careful about running out of memory
#
# For compressed files we have a to careful about running out of memory
@@
-126,6
+127,16
@@
sub compOk
return $CompZlibOK;
}
return $CompZlibOK;
}
+#
+# Request utf8 strings with readLine interface
+#
+sub utf8
+{
+ my($self, $mode) = @_;
+
+ $self->{utf8} = $mode;
+}
+
sub myDeflateInit
{
my $self = shift;
sub myDeflateInit
{
my $self = shift;
@@
-162,13
+173,13
@@
sub read
my $chr = substr($self->{dataIn}, 0, 1);
$self->{inflateStart} = 0;
my $chr = substr($self->{dataIn}, 0, 1);
$self->{inflateStart} = 0;
- if ( $chr eq chr(0xd6) ) {
+ if ( $chr eq chr(0xd6)
|| $chr eq chr(0xd7)
) {
#
#
- # Flag 0xd6 means this is a compressed file with
+ # Flag 0xd6
or 0xd7
means this is a compressed file with
# appended md4 block checksums for rsync. Change
# the first byte back to 0x78 and proceed.
#
# appended md4 block checksums for rsync. Change
# the first byte back to 0x78 and proceed.
#
- ##print("Got 0xd6 block: normal\n");
+ ##print("Got 0xd6
/0xd7
block: normal\n");
substr($self->{dataIn}, 0, 1) = chr(0x78);
} elsif ( $chr eq chr(0xb3) ) {
#
substr($self->{dataIn}, 0, 1) = chr(0x78);
} elsif ( $chr eq chr(0xb3) ) {
#
@@
-177,7
+188,7
@@
sub read
# the compressed file. Also seek the file so
# it is positioned at the 0xb3.
#
# the compressed file. Also seek the file so
# it is positioned at the 0xb3.
#
- seek($self->{fh}, -length($self->{dataIn}), 1);
+ s
yss
eek($self->{fh}, -length($self->{dataIn}), 1);
$self->{eof} = 1;
$self->{dataIn} = "";
##print("Got 0xb3 block: considering eof\n");
$self->{eof} = 1;
$self->{dataIn} = "";
##print("Got 0xb3 block: considering eof\n");
@@
-220,11
+231,13
@@
sub readLine
my($self) = @_;
my $str;
my($self) = @_;
my $str;
- while ( defined($self->{readLineBuf}) && !@{$self->{readLineBuf}} ) {
+ $self->{readLineBuf} = [] if ( !defined($self->{readLineBuf}) );
+ while ( !@{$self->{readLineBuf}} ) {
$self->read(\$str, $CompMaxRead);
if ( $str eq "" ) {
$str = $self->{readLineFrag};
$self->{readLineFrag} = "";
$self->read(\$str, $CompMaxRead);
if ( $str eq "" ) {
$str = $self->{readLineFrag};
$self->{readLineFrag} = "";
+ $str = decode_utf8($str) if ( $self->{utf8} );
return $str;
}
@{$self->{readLineBuf}} = split(/\n/, $self->{readLineFrag} . $str);
return $str;
}
@{$self->{readLineBuf}} = split(/\n/, $self->{readLineFrag} . $str);
@@
-234,7
+247,13
@@
sub readLine
$self->{readLineFrag} = "";
}
}
$self->{readLineFrag} = "";
}
}
- return shift(@{$self->{readLineBuf}}) . "\n";
+ $str = shift(@{$self->{readLineBuf}}) . "\n";
+ if ( $self->{utf8} ) {
+ my $strUtf8 = decode_utf8($str, 0);
+ $strUtf8 = $str if ( length($strUtf8) == 0 );
+ return $strUtf8;
+ }
+ return $str;
}
sub rewind
}
sub rewind