aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2022-03-24 03:05:23 -0700
committerKaz Kylheku <kaz@kylheku.com>2022-03-24 03:05:23 -0700
commit8aacb4d5fbb4909efa1531e7883c14865387ccd5 (patch)
tree86b2e343c4c0b7fa97375ca96743b2bfb9791fe6
parent5868b2fe93f5b1f444d8b8d5ac5cca84e0d25551 (diff)
downloadcppawk-8aacb4d5fbb4909efa1531e7883c14865387ccd5.tar.gz
cppawk-8aacb4d5fbb4909efa1531e7883c14865387ccd5.tar.bz2
cppawk-8aacb4d5fbb4909efa1531e7883c14865387ccd5.zip
don't create temp file when not needed.
-rwxr-xr-xcppawk31
1 files changed, 17 insertions, 14 deletions
diff --git a/cppawk b/cppawk
index f33cab8..7b166a0 100755
--- a/cppawk
+++ b/cppawk
@@ -154,25 +154,28 @@ done
awk="command $(quote "$awk")"
prepro="command $(quote "$prepro")"
-trap 'rm -f $tmp_file' EXIT INT TERM
-
if [ -n "$awk_file" ] ; then
- tmp_file=$(mktemp)
awk_file_dir=$(dirname "$awk_file")
- $delhashbang "$awk_file" | \
- eval "$prepro $incopt\"$awk_file_dir\" $prepro_opts -" | \
- collapse > $tmp_file
- [ $prepro_only ] \
- && cat $tmp_file \
- || eval "$awk $awk_opts -f $tmp_file -- \"\$@\""
+ if [ $prepro_only ] ; then
+ $delhashbang "$awk_file" \
+ | eval "$prepro $incopt\"$awk_file_dir\" $prepro_opts - | collapse"
+ else
+ trap 'rm -f $tmp_file' EXIT INT TERM
+ tmp_file=$(mktemp)
+ $delhashbang "$awk_file" \
+ | eval "$prepro $incopt\"$awk_file_dir\" $prepro_opts - | collapse" \
+ > $tmp_file
+ eval "$awk $awk_opts -f $tmp_file -- \"\$@\""
+ fi
elif [ $# -gt 0 ] ; then
- tmp_file=$(mktemp)
if [ $prepro_only ] ; then
- printf "%s" "$1" | $delhashbang | \
- eval "$prepro $incopt"$(pwd)" $prepro_opts - | collapse"
+ printf "%s" "$1" | $delhashbang \
+ | eval "$prepro $incopt"$(pwd)" $prepro_opts - | collapse"
else
- printf "%s" "$1" | $delhashbang | \
- eval "$prepro $incopt"$(pwd)" $prepro_opts - | collapse" > $tmp_file
+ trap 'rm -f $tmp_file' EXIT INT TERM
+ tmp_file=$(mktemp)
+ printf "%s" "$1" | $delhashbang \
+ | eval "$prepro $incopt"$(pwd)" $prepro_opts - | collapse" > $tmp_file
shift
eval "$awk $awk_opts -f $tmp_file -- \"\$@\""
fi