configure: Place all temporary files in one separate directory

Place all temporary files within a single, quasi-atomically created
temporary directory rather than relying on unsafe 'mktemp -u'. This
prevents possible race conditions in case two parallel 'mktemp -u' calls
returned the same path. Additionally, it reduces TMPDIR pollution by
keeping all test files in a single subdirectory.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
This commit is contained in:
Michał Górny 2014-09-21 11:38:25 +02:00 committed by Diego Biurrun
parent 11e225db31
commit 7848982207

16
configure vendored
View File

@ -2959,19 +2959,23 @@ if ! check_cmd mktemp -u XXXXXX; then
# simple replacement for missing mktemp
# NOT SAFE FOR GENERAL USE
mktemp(){
echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
tmpname="${2%%XXX*}.${HOSTNAME}.${UID}.$$"
echo "$tmpname"
mkdir "$tmpname"
}
fi
AVTMPDIR=$(mktemp -d "${TMPDIR}/avconf.XXXXXXXX" 2> /dev/null) ||
die "Unable to create temporary directory in $TMPDIR."
tmpfile(){
tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
(set -C; exec > $tmp) 2>/dev/null ||
die "Unable to create temporary file in $TMPDIR."
append TMPFILES $tmp
tmp="${AVTMPDIR}/test"$2
(set -C; exec > $tmp) 2> /dev/null ||
die "Unable to create temporary file in $AVTMPDIR."
eval $1=$tmp
}
trap 'rm -f -- $TMPFILES' EXIT
trap 'rm -rf -- "$AVTMPDIR"' EXIT
tmpfile TMPASM .asm
tmpfile TMPC .c