You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
2.6 KiB
121 lines
2.6 KiB
use strict;
|
|
my (%old, %new);
|
|
my ($key, $value, $section, $subsecprinted, $sectionprinted);
|
|
|
|
if((scalar @ARGV) != 2) {
|
|
die "Usage: perl mbdiff <first file> <second file>\n";
|
|
}
|
|
|
|
open(FILE, $ARGV[0]) or die "Failure to open $ARGV[0]:$!";
|
|
$section = "[/]";
|
|
while(<FILE>){
|
|
chomp;
|
|
if(m/^\[(.*)\]$/) {
|
|
$section = $_;
|
|
next;
|
|
}
|
|
|
|
($key, $value) = split / :/;
|
|
|
|
$old{$section}{$key} = $value;
|
|
|
|
}
|
|
close(FILE);
|
|
|
|
open(FILE, $ARGV[1]) or die "Failure to open $ARGV[0]:$!";
|
|
$section = "[/]";
|
|
while(<FILE>){
|
|
chomp;
|
|
if(m/^\[(.*)\]$/) {
|
|
$section = $_;
|
|
next;
|
|
}
|
|
|
|
($key, $value) = split / :/;
|
|
|
|
$new{$section}{$key} = $value;
|
|
|
|
}
|
|
close(FILE);
|
|
|
|
print "Metabase:\n";
|
|
#
|
|
# added stuff
|
|
#
|
|
|
|
#
|
|
# added entries
|
|
#
|
|
$sectionprinted = 0;
|
|
foreach $section (sort keys %new) {
|
|
$subsecprinted = 0;
|
|
foreach $key (sort keys %{$new{$section}}) {
|
|
if(!defined($old{$section}{$key})) {
|
|
if(!$sectionprinted) {
|
|
$sectionprinted = 1;
|
|
print(" Added:\n");
|
|
}
|
|
if(!$subsecprinted) {
|
|
print(" $section\n");
|
|
$subsecprinted = 1;
|
|
}
|
|
print(" $key : ", $new{$section}{$key}, "\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
#
|
|
# deleted entries
|
|
#
|
|
$sectionprinted = 0;
|
|
foreach $section (sort keys %old) {
|
|
$subsecprinted = 0;
|
|
foreach $key (sort keys %{$old{$section}}) {
|
|
if(!defined($new{$section}{$key})) {
|
|
if(!$sectionprinted) {
|
|
$sectionprinted = 1;
|
|
print(" Deleted:\n");
|
|
}
|
|
if(!$subsecprinted) {
|
|
print(" $section\n");
|
|
$subsecprinted = 1;
|
|
}
|
|
print(" $key\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
#
|
|
# changed entries
|
|
#
|
|
$sectionprinted = 0;
|
|
foreach $section (sort keys %old) {
|
|
$subsecprinted = 0;
|
|
foreach $key (sort keys %{$old{$section}}) {
|
|
|
|
if(defined($new{$section}{$key})) {
|
|
if($new{$section}{$key} eq $old{$section}{$key}) {
|
|
next;
|
|
}
|
|
|
|
if(!$sectionprinted) {
|
|
$sectionprinted = 1;
|
|
print(" Changed:\n");
|
|
}
|
|
if(!$subsecprinted) {
|
|
print(" $section\n");
|
|
$subsecprinted = 1;
|
|
}
|
|
print(" $key : ", $old{$section}{$key}, "\n");
|
|
print(" to\n");
|
|
print(" $key : ", $new{$section}{$key}, "\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|