diff --git a/neno/neno b/neno/neno index ae9cf05..4a8ef59 100755 --- a/neno/neno +++ b/neno/neno @@ -34,7 +34,7 @@ No output if file exists: =head1 AUTHOR -Copyright (C) 2017 Ole Tange, +Copyright (C) 2017-2020 Ole Tange, http://ole.tange.dk and Free Software Foundation, Inc. @@ -64,23 +64,21 @@ B =cut _tmp=$(mktemp -d /tmp/no-error.XXXXX) -true 2>$_tmp/stderr >$_tmp/stdout -# Save original stdout/stderr -exec 11>&1 12>&2 -# Redirect stdout/stderr to tmpfiles -exec 1>$_tmp/stdout 2>$_tmp/stderr -# Open the tmpfiles for reading +true >$_tmp/stdout 2>$_tmp/stderr +# Open the tmp-files for reading on file descriptor 21+22 exec 21<$_tmp/stdout 22<$_tmp/stderr -# Unlink files (but keep them open) -rm -rf $_tmp +( + # Unlink tmp-files (but keep them open) + rm -rf $_tmp -eval "$@" + eval "$@" +) >$_tmp/stdout 2>$_tmp/stderr _error=$? if [ $_error == 0 ] ; then # skip true else - cat 0<&21 >&11 - cat 0<&22 >&12 + cat 0<&21 + cat 0<&22 >&2 fi exit $_error