--- File-Rdiff/rdiff2 2002/03/21 23:49:01 1.1 +++ File-Rdiff/rdiff2 2002/03/22 15:53:12 1.2 @@ -10,40 +10,61 @@ open $sig, ">", $ARGV[2] or die "$ARGV[2]: $!"; - my $job = new_sig File::Rdiff::Job; + my $job = new_sig File::Rdiff::Job 128; my $buf = new File::Rdiff::Buffers 4096; while ($job->iter($buf) == BLOCKED) { # fetch more input data $buf->avail_in or do { my $in; - 65536 == sysread $basis, $in, 65536 - or $buf->eof; + 65536 == sysread $basis, $in, 65536 or $buf->eof; $buf->in($in); }; print $sig $buf->out; } - - # the last time print $sig $buf->out; + } elsif ($ARGV[0] eq "delta") { open $sig, "<$ARGV[1]" or die "$ARGV[1]: $!"; open $new, "<$ARGV[2]" or die "$ARGV[2]: $!"; open $delta, ">$ARGV[3]" or die "$ARGV[3]: $!"; # first load the signature into memory - $sig = loadsig_file $sig; + my $job = new_loadsig File::Rdiff::Job; + my $buf = new File::Rdiff::Buffers 0; + + do { + $buf->avail_in or do { + my $in; + 65536 == sysread $sig, $in, 65536 or $buf->eof; + $buf->in($in); + }; + } while $job->iter($buf) == BLOCKED; - ref $sig or exit 1; + $sig = $job->signature; $sig->build_hash_table; - File::Rdiff::delta_file $sig, $new, $delta; + # now create the delta file + my $job = new_delta File::Rdiff::Job $sig; + my $buf = new File::Rdiff::Buffers 65536; + + do { + $buf->avail_in or do { + my $in; + 65536 == sysread $new, $in, 65536 or $buf->eof; + $buf->in($in); + }; + print $delta $buf->out; + } while $job->iter($buf) == BLOCKED; + print $delta $buf->out; + } elsif ($ARGV[0] eq "patch") { open $base, "<$ARGV[1]" or die "$ARGV[1]: $!"; open $delta, "<$ARGV[2]" or die "$ARGV[2]: $!"; open $new, ">$ARGV[3]" or die "$ARGV[3]: $!"; + # NYI File::Rdiff::patch_file $base, $delta, $new; } else { print <