From 98e67d22011cf4b0eb2c9935b9c740f2ec9504a7 Mon Sep 17 00:00:00 2001 From: Fergus Henderson Date: Mon, 11 Oct 1999 05:47:12 +0000 Subject: [PATCH] Fix a problem where the test cases were sometimes failing Estimated hours taken: 0.5 Fix a problem where the test cases were sometimes failing if old /tmp/mmake* directories were left lying around. scripts/ml.in: scripts/mmake.in: When creating the temporary directory, if mkdir fails (e.g. because that directory already exists), then try again with a different directory name. Only report an error if it fails 20 times in a row. --- scripts/ml.in | 24 +++++++++++++++--------- scripts/mmake.in | 26 ++++++++++++++++---------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/scripts/ml.in b/scripts/ml.in index 90c470525..02f72f428 100644 --- a/scripts/ml.in +++ b/scripts/ml.in @@ -591,15 +591,21 @@ case $demangle in # create the pipe, making sure we remove it if interrupted old_umask=`umask` umask 022 - ML_TMPDIR=$TMPDIR/ml$$ - PIPE=$ML_TMPDIR/pipe - trap 'rmdir $ML_TMPDIR >/dev/null 2>&1; exit 1' 1 2 3 13 15 - if mkdir $ML_TMPDIR ; then - true - else - echo "Unable to create temporary pipe" 1>&2 - exit 1 - fi + try=0 + until + ML_TMPDIR=$TMPDIR/ml$$ + PIPE=$ML_TMPDIR/pipe + trap 'rmdir $ML_TMPDIR >/dev/null 2>&1; exit 1' 1 2 3 13 15 + mkdir $ML_TMPDIR + do + try="`expr $try + 1`" + # give up after 20 tries + case "$try" in 20) + echo "ml: unable to create temporary directory" \ + "for pipe" 1>&2 + exit 1 + esac + done trap 'rm -rf $ML_TMPDIR; exit 1' 1 2 3 13 15 umask $old_umask $MKFIFO $PIPE diff --git a/scripts/mmake.in b/scripts/mmake.in index 574adebf5..099d92f36 100644 --- a/scripts/mmake.in +++ b/scripts/mmake.in @@ -182,16 +182,22 @@ else case "$MKTEMP" in "") old_umask=`umask` umask 022 - mmake_tmpdir=$TMPDIR/mmake$$ - tmp=$mmake_tmpdir/mmake - trap 'rmdir $mmake_tmpdir >/dev/null 2>&1; exit 1' \ - 1 2 3 13 15 - if mkdir $mmake_tmpdir ; then - true - else - echo "Unable to create temporary makefile" 1>&2 - exit 1 - fi + try=0 + until + mmake_tmpdir=$TMPDIR/mmake$$-$try + tmp=$mmake_tmpdir/mmake + trap 'rmdir $mmake_tmpdir >/dev/null 2>&1; exit 1' \ + 1 2 3 13 15 + mkdir $mmake_tmpdir + do + try=`expr $try + 1` + # give up after 20 tries + case $try in 20) + echo "mmake: unable to create directory" \ + "for temporary makefile" 1>&2 + exit 1 + esac + done trap 'status=$?; rm -rf $mmake_tmpdir; exit $status' \ 0 1 2 3 13 15 umask $old_umask