#!/usr/bin/perl # very simple program that mimics librsync's rdiff, using the # simple file utility functions. see rdiff2 for the same program, # written using the nonblocking API use File::Rdiff qw(:trace :file); trace_level(LOG_INFO); if ($ARGV[0] eq "signature") { open $base, "<$ARGV[1]" or die "$ARGV[1]: $!"; open $sig, ">$ARGV[2]" or die "$ARGV[2]: $!"; File::Rdiff::sig_file $base, $sig; } 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]: $!"; $sig = loadsig_file $sig; ref $sig or exit 1; $sig->build_hash_table; File::Rdiff::delta_file $sig, $new, $delta; } 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]: $!"; File::Rdiff::patch_file $base, $delta, $new; } else { print <