#!/usr/bin/env perl use strict; $^W=1; my $file_CL = 'ChangeLog.xml'; my $file_DTX = 'hyperref.dtx'; my $version_entry = ''; my $version_star = ''; my $version_dtx = ''; my $date_cl = ''; my $date_dtx = ''; open(IN, '<', $file_CL) or die "!!! Error: Cannot open `$file_CL'!\n"; while () { if (/ENTRY.*version="([^"]+)"/) { $version_entry = $1; if (/date="(\d{4}-\d{2}-\d{2})"/) { $date_cl = $1; } $_ = ; if (/^\* (\d+\.\d+[a-z]?)$/) { $version_star = $1; } last; } } close(IN); my $found_none = 0; open(IN, '<', $file_DTX) or die "!!! Error: Cannot open `$file_DTX'!\n"; while () { if (/^%/) { $found_none = 1; if (m|\[(\d{4}/\d{2}/\d{2}) |) { $date_dtx = $1; } if (/\d v(\d+\.\d+[a-z]?) %$/) { $version_dtx = $1; } last; } } close(IN); $found_none or die "!!! Error: Missing \"%\" in hyperref.dtx!\n"; $date_cl or die "!!! Error: Missing last hyperref date in ChangeLog!\n"; $date_dtx or die "!!! Error: Missing hyperref date in hyperref.dtx!\n"; $version_entry or die "!!! Error: Missing last hyperref version in ChangeLog ENTRY!\n"; $version_star or die "!!! Error: Missing last hyperref version item in ChangeLog!\n"; $version_dtx or die "!!! Error: Missing hyperref version in hyperref.dtx!\n"; my $date_tmp = $date_cl; $date_tmp =~ s|-|/|g; $date_tmp eq $date_dtx or die <<"END_ERR"; * ChangeLog: $date_cl * hyperref.dtx: $date_dtx !!! Error: Date mismatch! END_ERR $version_entry eq $version_star or die <<"END_ERR"; * ChangeLog, ENTRY/\@version: $version_entry * ChangeLog, star item: $version_star !!! Error: Version mismatch in ChangeLog! END_ERR $version_entry eq $version_dtx or die <<"END_ERR"; * ChangeLog: $version_entry * hyperref.dtx: $version_dtx !!! Error: Version mismatch! END_ERR 1; __END__