[pve-devel] [PATCH common v2 2/3] INotify.pm: use run_command instead of open for calling diff

Thomas Lamprecht t.lamprecht at proxmox.com
Fri Sep 7 10:08:57 CEST 2018


On 9/5/18 10:54 AM, Dominik Csapak wrote:
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
>  src/PVE/INotify.pm | 15 +++++++--------
>  1 file changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm
> index f17f4c5..184f00d 100644
> --- a/src/PVE/INotify.pm
> +++ b/src/PVE/INotify.pm
> @@ -19,7 +19,8 @@ use PVE::ProcFSTools;
>  use Clone qw(clone);
>  use Linux::Inotify2;
>  use base 'Exporter';
> -use JSON; 
> +use JSON;
> +use Encode qw(encode decode);
>  
>  our @EXPORT_OK = qw(read_file write_file register_file);
>  
> @@ -56,13 +57,11 @@ sub ccache_compute_diff {
>  
>      my $diff = '';
>  
> -    open (TMP, "diff -b -N -u '$filename' '$shadow'|");
> -	
> -    while (my $line = <TMP>) {
> -	$diff .= $line;
> -    }
> -
> -    close (TMP);
> +    my $cmd = ['/usr/bin/diff', '-b', '-N', '-u', $filename, $shadow];
> +    PVE::Tools::run_command($cmd, noerr => 1, outfunc => sub {
> +	my ($line) = @_;
> +	$diff .= decode('UTF-8', $line) . "\n";

you also silently switch over to UTF-8 decoding all input without
any mention in the commit message... What's that about?

> +    });
>  
>      $diff = undef if !$diff;
>  
> 





More information about the pve-devel mailing list