difftool: Check all return codes from compare()
Handle the case where compare() is unable to read its inputs. Emit a warning so that the user knows that something went wrong. We may later want to restructure the code so that we can inhibit tempdir cleanup when this condition is reached. Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		 David Aguilar
					David Aguilar
				
			
				
					committed by
					
						 Junio C Hamano
						Junio C Hamano
					
				
			
			
				
	
			
			
			 Junio C Hamano
						Junio C Hamano
					
				
			
						parent
						
							7c7584b970
						
					
				
				
					commit
					283abb2c8a
				
			| @ -370,7 +370,16 @@ sub dir_diff | ||||
| 	# external tool did not replace the original link with a file. | ||||
| 	for my $file (@worktree) { | ||||
| 		next if $symlinks && -l "$b/$file"; | ||||
| 		if (-f "$b/$file" && compare("$b/$file", "$workdir/$file")) { | ||||
| 		next if ! -f "$b/$file"; | ||||
|  | ||||
| 		my $diff = compare("$b/$file", "$workdir/$file"); | ||||
| 		if ($diff == 0) { | ||||
| 			next; | ||||
| 		} elsif ($diff == -1) { | ||||
| 			my $errmsg = "warning: Could not compare "; | ||||
| 			$errmsg += "'$b/$file' with '$workdir/$file'\n"; | ||||
| 			warn $errmsg; | ||||
| 		} elsif ($diff == 1) { | ||||
| 			copy("$b/$file", "$workdir/$file") or die $!; | ||||
| 			my $mode = stat("$b/$file")->mode; | ||||
| 			chmod($mode, "$workdir/$file") or die $!; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user