#!perl use IO::File; my $descriptive = 0; my $lhfile = shift @ARGV; if ($lhfile eq "--desc") { $descriptive = 1; $lhfile = shift @ARGV; } my $rhfile = shift @ARGV; if (!defined $rhfile) { die qq(Syntax: ./cmp_cmds.pl [--desc] orig_mod_cmds_output new_mod_cmds_output where --desc will include changes in directives' descriptions. ); } my %cmdhash; my ($hdr, $mod, $cmd, $ctx, $desc); my $fl = new IO::File $lhfile, "r" || die "Could not read ".$rhfile; while (($hdr = <$fl>) && ($cntx = <$fl>) && ($desc = <$fl>)) { chomp $hdr; chomp $cntx; chomp $desc; ($mod, $cmd) = split "::", $hdr; if (defined $cmdhash{$cmd}{lmod}) { $mod = $cmdhash{$cmd}{lmod}.",".$mod; } $cmdhash{$cmd} = { cmd => $cmd, lmod => $mod, lcntx => $cntx, ldesc => $desc, }; } undef $fl; my $fl = new IO::File $rhfile, "r" || die "Could not read ".$rhfile; while (($hdr = <$fl>) && ($cntx = <$fl>) && ($desc = <$fl>)) { chomp $hdr; chomp $cntx; chomp $desc; ($mod, $cmd) = split "::", $hdr; if (defined $cmdhash{$cmd}{rmod}) { $mod = $cmdhash{$cmd}{rmod}.",".$mod; } if (defined $cmdhash{$cmd}{lmod}) { $cmdhash{$cmd} = { cmd => $cmd, rmod => $mod, rcntx => $cntx, rdesc => $desc, lmod => $cmdhash{$cmd}{lmod}, lcntx => $cmdhash{$cmd}{lcntx}, ldesc => $cmdhash{$cmd}{ldesc}, }; } else { $cmdhash{$cmd} = { cmd => $cmd, rmod => $mod, rcntx => $cntx, rdesc => $desc, }; } } undef $fl; my @cmdkeys = sort keys %cmdhash; foreach $cmd (@cmdkeys) { if (!defined $cmdhash{$cmd}{lmod}) { $rhonly{$cmd} = $cmdhash{$cmd}; print $cmd." introduced in ".$cmdhash{$cmd}{rmod}."\n"; } elsif (!defined $cmdhash{$cmd}{rmod}) { $lhonly{$cmd} = $cmdhash{$cmd}; print $cmd." deprecated from ".$cmdhash{$cmd}{lmod}."\n"; } else { if ($cmdhash{$cmd}{lmod} ne $cmdhash{$cmd}{rmod}) { print $cmd." moved from ".$cmdhash{$cmd}{lmod}." to ".$cmdhash{$cmd}{rmod}."\n" } if ($cmdhash{$cmd}{lcntx} ne $cmdhash{$cmd}{rcntx}) { print $cmd." options changed\n..from ".$cmdhash{$cmd}{lcntx}."\n....to ".$cmdhash{$cmd}{rcntx}."\n" } if ($descriptive && ($cmdhash{$cmd}{ldesc} ne $cmdhash{$cmd}{rdesc})) { print $cmd." description changed\n..from ".$cmdhash{$cmd}{ldesc}."\n....to ".$cmdhash{$cmd}{rdesc}."\n" } } }