RE: Consider escaping special characters like 'less' does

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Jeff King
> Sent: Monday, October 16, 2017 6:13 PM
> To: Joris Valette
> Cc: Andreas Schwab; Jason Pyeron; git@xxxxxxxxxxxxxxx
> Subject: Re: Consider escaping special characters like 'less' does
> 
<snip/>
> 
> I.e., something like this would probably help your case 
> without hurting
> anybody:
> 
> diff --git a/git-add--interactive.perl b/git-add--interactive.perl
> index 28b325d754..d44e5ea459 100755
> --- a/git-add--interactive.perl
> +++ b/git-add--interactive.perl
> @@ -714,6 +714,16 @@ sub parse_diff {
>  		push @{$hunk[-1]{DISPLAY}},
>  			(@colored ? $colored[$i] : $diff[$i]);
>  	}
> +
> +	foreach my $hunk (@hunk) {
> +		foreach my $line (@{$hunk->{DISPLAY}}) {
> +			# all control chars minus newline and 
> ESC (for color)
> +			if ($line =~ s/[\000-\011\013-\032\034-\037]/?/g) {

What about CR [0x0D] ?

> +				$hunk->{CONTROLCHARS} = 1;
> +			}
> +		}
> +	}
> +
>  	return @hunk;
>  }
>  
> @@ -1407,6 +1417,9 @@ sub patch_update_file {
>  		if ($hunk[$ix]{TYPE} eq 'hunk') {
>  			$other .= ',e';
>  		}
> +		if ($hunk[$ix]->{CONTROLCHARS}) {
> +			print "warning: control characters in 
> hunk have been replaced by '?'\n";
> +		}
>  		for (@{$hunk[$ix]{DISPLAY}}) {
>  			print;
>  		}
> 
> I can't help but feel this is the tip of a larger iceberg, 
> though. E.g.,
> what about characters outside of the terminal's correct encoding? Or
> broken UTF-8 characters?
> 
> -Peff
> 




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux