605570b
#!/bin/perl
605570b
605570b
sub adjust {
605570b
   my $newLine = $_[0];
605570b
   my @neg = @{$_[1]};
605570b
   my @pos = @{$_[2]};
605570b
   my $found = 0;
605570b
   my @newneg = ();
605570b
605570b
   foreach my $cline (@neg) {
605570b
	if ($cline eq $newLine) {
605570b
	   $found = 1;
605570b
	} else {
605570b
            push(@newneg ,$cline );
605570b
	}
605570b
   }
605570b
   if (! $found ) {
605570b
 	push(@pos, $newLine);
605570b
   }
605570b
   @neg=@newneg;
605570b
}
605570b
605570b
sub removeLine {
605570b
   my $newLine = $_[0];
605570b
   my @neg = @{$_[1]};
605570b
   my $found = 0;
605570b
   my @newneg = ();
605570b
605570b
   foreach my $cline (@neg) {
605570b
        if ($found) {
605570b
            push(@newneg ,$cline );
605570b
	} elsif ($cline eq $newLine) {
605570b
	   $found = 1;
605570b
	} else {
605570b
            push(@newneg ,$cline );
605570b
	}
605570b
   }
605570b
   return @newneg;
605570b
}
605570b
605570b
sub filter {
605570b
   my @list = @{$_[0]};
605570b
   my $string = $_[1];
605570b
   my @filteredList = ();
605570b
   foreach my $cline (@list) {
605570b
	if ($cline =~ m/$string/) {
605570b
            push(@filteredList ,$cline );
605570b
	}
605570b
   }
605570b
   return @filteredList;
605570b
}
605570b
605570b
sub lineExists {
605570b
   my $newLine = $_[0];
605570b
   my @neg = @{$_[1]};
605570b
605570b
   foreach my $cline (@neg) {
605570b
	if ($cline eq $newLine) {
605570b
           return 1;
605570b
	}
605570b
   }
605570b
   return 0;
605570b
}
605570b
605570b
sub lineExists {
605570b
   my $newLine = $_[0];
605570b
   my @neg = @{$_[1]};
605570b
605570b
   foreach my $cline (@neg) {
605570b
	if ($cline eq $newLine) {
605570b
           return 1;
605570b
	}
605570b
   }
605570b
   return 0;
605570b
}
605570b
605570b
sub printeach {
605570b
   my @args = @{$_[0]};
605570b
   foreach my $arg (@args) {
605570b
	chomp $arg;
605570b
	print "    $arg\n";
605570b
    }
605570b
}
605570b
605570b
open my $handle, "git diff certdata.txt|";
605570b
my @diff_lines = <$handle>;
605570b
close $handle;
605570b
my @adds = ();
605570b
my @subs = ();
605570b
foreach my $line (@diff_lines) {
605570b
    $type = substr $line,0,1;
605570b
    $lline = substr $line,1;
605570b
    if ($type eq "+") {
605570b
          if (lineExists($lline, \@subs)) {
605570b
               @subs = removeLine($lline,\@subs);
605570b
          } else {
605570b
               push(@adds, $lline);
605570b
          }
605570b
    };
605570b
    if ($type eq "-") {
605570b
          if (lineExists($lline, \@adds)) {
605570b
                @adds = removeLine($lline,\@adds);
605570b
          } else {
605570b
                push(@subs, $lline);
605570b
          }
605570b
    };
605570b
}
605570b
605570b
my @tmp = filter(\@subs, "# Certificate");
605570b
if (@tmp) {
605570b
    print "   Removing: \n";
605570b
    printeach(\@tmp);
605570b
}
605570b
my @tmp = filter(\@adds, "# Certificate");
605570b
if (@tmp) {
605570b
    print "   Adding: \n";
605570b
    printeach(\@tmp);
605570b
}