@@ -145,6 +145,28 @@ sub filter_text {
145
145
146
146
} # filter_text
147
147
148
+ sub store_diffs {
149
+
150
+ my ($header , $diff_file1 , $diff_file2 ) = @_ ;
151
+ my $diff = " " ;
152
+
153
+ # also compare files and regex text, add + 1 to error if added
154
+ # do the same at the end of the while if not yet done
155
+ if (defined $header && $header ne " " ) {
156
+
157
+ $diff = $diff . $header . " \n " ;
158
+ if (defined $diff_file1 && $diff_file1 ne " " ) {
159
+ $diff = $diff . $diff_file1 ;
160
+ }
161
+ if (defined $diff_file2 && $diff_file2 ne " " ) {
162
+ $diff = $diff . " ---\n " . $diff_file2 ;
163
+ }
164
+ }
165
+
166
+ return $diff ;
167
+
168
+ } # store_diffs
169
+
148
170
# does a diff on existing directories, files, and file content
149
171
sub diff_files_complete {
150
172
my $file = $_ ;
@@ -179,8 +201,12 @@ sub diff_files_complete {
179
201
my @diff_args = ($diff_cmd , $filename1 , $filename2 );
180
202
open (my $fh , " -|" , @diff_args ) || die (" cannot diff $filename1 $filename2 \n " );
181
203
204
+ my $header ;
205
+ my $diff_file1 ;
206
+ my $diff_file2 ;
207
+ my $skip = 1;
208
+
182
209
while (my $line = <$fh >) {
183
-
184
210
chomp $line ;
185
211
186
212
if ($line eq " " ) {
@@ -193,6 +219,20 @@ sub diff_files_complete {
193
219
# generation date. We ignore the rest of the diff output at
194
220
# this point.
195
221
if ($line =~ / ^\d / ) {
222
+
223
+ # store previous diff.
224
+ # also compare files and regex text, add + 1 to error if added
225
+ # do the same at the end of the while if not yet done
226
+
227
+ unless ($skip ) {
228
+ $diffs .= store_diffs ($header , $diff_file1 , $diff_file2 );
229
+ $local_errors ++;
230
+ }
231
+
232
+ $skip = 0;
233
+ $header = $line ;
234
+ $diff_file1 = $diff_file2 = " " ;
235
+
196
236
if ($line =~ / \d +c\d +/ ) {
197
237
if (!$is_attachment_dir ) {
198
238
my ($ln_1 , $ln_2 ) = split /c/, $line ;
@@ -202,32 +242,46 @@ sub diff_files_complete {
202
242
my ($ln_2_1 , $ln_2_2 ) = split /,/, $ln_2 ;
203
243
204
244
if (%{ $generated_by_lines }
205
- && (defined $ln_1_2 && defined $ln_2_2
206
- && ($ln_1_2 - $ln_1_1 ) == ($ln_2_1 - $ln_1_1 ))
207
- || (defined $ln_1_1 && defined $ln_2_1
208
- && ! defined $ln_1_2 && !defined $ln_2_2 )) {
245
+ && (defined $ln_1_2 && defined $ln_2_2
246
+ && ($ln_1_2 - $ln_1_1 ) == ($ln_2_2 - $ln_2_1 ))
247
+ || (defined $ln_1_1 && ! defined $ln_1_2
248
+ && defined $ln_2_1 && !defined $ln_2_2 )) {
209
249
210
250
if ($ignore_footer ) {
211
251
if ($ln_1_1 >= $footer_line ) {
252
+ $skip = 1;
212
253
last ;
213
254
}
214
255
} elsif ((!defined $ln_1_2
215
256
&& $$generated_by_lines {$ln_1_1 })
216
257
|| (defined $ln_1_2
217
258
&& $$generated_by_lines {$ln_1_1 }
218
259
&& $$generated_by_lines {$ln_1_2 })) {
260
+ $skip = 1;
219
261
last ;
220
262
}
221
263
}
222
264
}
223
265
}
224
- $local_errors ++;
266
+
267
+ } else {
268
+ if ($line =~ / ^</ ) {
269
+ $diff_file1 = $line . " \n " ;
270
+ } elsif ($line =~ / ^>/ ) {
271
+ $diff_file2 = $line . " \n " ;
272
+ }
225
273
}
226
- $diffs .= $line . " \n " ;
227
274
}
275
+
228
276
close ($fh );
277
+
278
+ # store last diff.
279
+ unless ($skip ) {
280
+ $diffs .= store_diffs ($header , $diff_file1 , $diff_file2 );
281
+ $local_errors ++;
282
+ }
229
283
230
- if ($diffs ne " " && !$quiet ) {
284
+ if ($local_errors > 0 && !$quiet ) {
231
285
$errors ++;
232
286
print " \n " if $show_progress ;
233
287
print " [$errors ] $filename1 \n [$errors ] $filename2 : found $local_errors difference" . ($local_errors == 1 ? " " : " s" ) . " \n " ;
0 commit comments