aboutsummaryrefslogtreecommitdiffstats
path: root/bib-extract
diff options
context:
space:
mode:
Diffstat (limited to 'bib-extract')
-rwxr-xr-xbib-extract13
1 files changed, 8 insertions, 5 deletions
diff --git a/bib-extract b/bib-extract
index 297588a..ac0363d 100755
--- a/bib-extract
+++ b/bib-extract
@@ -23,7 +23,10 @@ aux=$1
shift
[ -r "$aux" ] || { printf 'bib-extract: cannot read %s\n' "$aux" >&2; exit 1; }
-keys=$(awk '
+keyfile=$(mktemp) || exit 1
+trap 'rm -f "$keyfile"' EXIT INT TERM
+
+awk '
# classic bibtex: \citation{key,key,...}
{
line = $0
@@ -46,10 +49,10 @@ keys=$(awk '
print s
line = substr(line, RSTART + RLENGTH)
}
- }' "$aux" | sort -u | paste -sd, -)
+ }' "$aux" | sort -u > "$keyfile"
-[ -n "$keys" ] || exit 0
+[ -s "$keyfile" ] || exit 0
# a key of "*" (from \nocite{*}) selects the whole database
-exec awk -f "$LIB/bib-parse.awk" -f "$LIB/bib-canon.awk" \
- -f "$LIB/bib-select.awk" -v keys="$keys" -v invert=0 "$@"
+awk -f "$LIB/bib-parse.awk" -f "$LIB/bib-canon.awk" \
+ -f "$LIB/bib-select.awk" -v keyfile="$keyfile" -v invert=0 "$@"