From 6853c2262dd0b9cfe03219e5011c229973f20269 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Wed, 14 Dec 2022 14:20:45 +0100 Subject: [PATCH] Use open instead of ticks --- bin/shell-replace | 27 +++++++++++++++++---------- etc/vim/source/vars.vim | 4 ++-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/bin/shell-replace b/bin/shell-replace index 0a993dc7..e944f262 100755 --- a/bin/shell-replace +++ b/bin/shell-replace @@ -190,19 +190,26 @@ sub wanted { close $hfile; } +#use String::ShellQuote; sub cmd { my $cmd = join(' ',@_); + # NB 14.12.22 #$cmd =~ s/\$'\\t'/"\t"/g; + #$cmd =~ s/(')/\\$1/g; +# NB 14.12.22 #die $cmd; + # NB 14.12.22 my @cmd = `$cmd`; + # NB 14.12.22 die "$!" if $?; + # NB 14.12.22 return wantarray ? @cmd : join('',@cmd); my $hcmd; -#die $_; - my @cmd = `$cmd`; - die "$!" if $?; + my $pid; + die $! unless defined ($pid = open($hcmd,"-|")); + if ($pid == 0) { + exec "$cmd"; + } + my @cmd = <$hcmd>; + close $hcmd; + #waitpid $pid,0; + die "ERROR $cmd: $!" if $? != 0; return wantarray ? @cmd : join('',@cmd); - # NB 13.12.22 $cmd =~ s/"/\\"/g; - # NB 13.12.22 open reurn pid if command failed, so die never called: open($hcmd,qq/bash -lc "$cmd" |/) or die $!; - # NB 13.12.22 open($hcmd,"$cmd |") or die $!; - # NB 13.12.22 my @cmd = <$hcmd>; - # NB 13.12.22 close $hcmd; - # NB 13.12.22 return wantarray ? @cmd : join('',@cmd); } sub shell_replace { @@ -364,7 +371,7 @@ $NAME --find path/ Find files which contains start and tags >SHELL_REPLACE .. SHELL_REPLACE dbq.php nb meta ls key,val cat=mime.comment format=vim_hash preff=$'\t' name=mimeComment +#>SHELL_REPLACE Shell command ..... #SHELL_REPLACE dbq.php nb meta ls key,val cat=file.check format=vim_hash preff=$'\t' name=mimeCheck +">SHELL_REPLACE dbq db=nb t=meta action=table.rows rows.fields=key,val cat=file.check format=vim_hash name=mimeCheck preff="$(printf "\t")" let mimeCheck = { \ 'awk' : 'awk < /dev/null --lint=no-ext --file' \,'bash' : 'bash -c' @@ -30,7 +30,7 @@ let mimeCheck = { \} "SHELL_REPLACE dbq.php nb meta ls key,val cat=mime.comment format=vim_hash preff=$'\t' name=mimeComment +">SHELL_REPLACE dbq.php nb meta ls key,val cat=mime.comment format=vim_hash preff="$(printf "\t")" name=mimeComment let mimeComment = { \ 'bindzone' : ';' \,'c' : '//' -- 2.47.3