The R Project SVN R-packages

Rev

Blame | Last modification | View Log | Download | RSS feed

#!/usr/bin/perl

while ($fn=shift) {
    if ($fn eq '-i') { $ignore_oid=1; $fn=shift; }
    open IN, "$fn";
    open INN, "new/$fn";
    open OUT, ">$fn.new";
    while ($a = <INN>) {
    $b = <IN>;
    $an = $a; $an =~ s/oid:\d+/oid:/;
    $bn = $b; $bn =~ s/oid:\d+/oid:/;
    if ($an ne $bn) {
        if ($an =~ /^\/\* /) {
        while ($an ne $bn) {
            print OUT $a;
            last if (!($a = <INN>));
            $an = $a; $an =~ s/oid:\d+/oid:/;
        }
        print OUT $a;
        } else {
        if ($an =~ /\"(.*?)\" = \"(.*?)\"/) {
            $h=$1;
            if ($bn =~ /\"(.*?)\" = \"(.*?)\"/) {
            if ($h eq $1) {
                print OUT $b;
            } else {
                print STDERR "** [$fn] WARNING - different head mismatch, taking A:\nA: ${a}B: $b";
                print OUT $a;
            }
            }
        } else {
            print STDERR "** [$fn] WARNING - unknown mismatch, taking A:\nA: $an", "B: $bn";
            print OUT $a;
        }
        }
    } else {
        if ($ignore_oid) {
        print OUT $b;
        } else {
        print OUT $a;
        }
    }
    }
    close IN;
    close INN;
}