--- cvs-1.11.23/FAQ +++ cvs-1.11.23/FAQ @@ -1568,7 +1568,8 @@ You can branch a branch. After running "make" you might try running the "sanity.sh" script: ./src/sanity.sh `pwd`/src/cvs - It writes into /tmp/cvs-sanity by default. + By default, it writes into a temporary directory it creates under + $TMPDIR or under /tmp if $TMPDIR is not set. Finish reading the INSTALL file and test out the system. @@ -4956,30 +4957,30 @@ kingdon@cyclic.com than the recovery step described below. Let's assume your original import procedure was: (We assume there is - enough disk space in /tmp.) + enough disk space in ~/tmp.) cd - cvs import -m 'xyz 1.3' gnu/xyz GNU GNUXYZ_1_3 | tee /tmp/IMP + cvs import -m 'xyz 1.3' gnu/xyz GNU GNUXYZ_1_3 | tee ~/tmp/IMP To import just the files ignored by "import", I would do this: Create a list of the ignored files to import: - cd awk '/^I / {print $2}' /tmp/IMP | sed - 's|^gnu/xyz/||' > /tmp/IG [Edit the IG file to contain just the files + cd awk '/^I / {print $2}' ~/tmp/IMP | sed + 's|^gnu/xyz/||' > ~/tmp/IG [Edit the IG file to contain just the files you want.] Then create a sparse directory by handing your list to the GNU version of "tar", installed in many places as "gtar": - mkdir /tmp/FIXUP gtar -T /tmp/IG -c -f - . | (cd /tmp/FIXUP; gtar xvBf + mkdir ~/tmp/FIXUP gtar -T ~/tmp/IG -c -f - . | (cd ~/tmp/FIXUP; gtar xvBf -) Then rerun the import. Use the exact same command, but execute it in the sparse directory tree you just created. And this time, tell it not to ignore anything. - cd /tmp/FIXUP + cd ~/tmp/FIXUP cvs import -I ! -m 'xyz 1.3' gnu/xyz GNU GNUXYZ_1_3 Last modified: _6/13/1997_ --- cvs-1.11.23/TESTS +++ cvs-1.11.23/TESTS @@ -13,10 +13,10 @@ Also note that you must be logged in as a regular user, not root. WARNING: This test can take quite a while to run, esp. if your disks are slow or over-loaded. -The tests work in /tmp/cvs-sanity (which the tests create) by default. -If for some reason you want them to work in a different directory, you -can set the TESTDIR environment variable to the desired location -before running them. +By default, the tests create and use a temporary directory under +$TMPDIR or under /tmp if $TMPDIR is not set. If for some reason you +want them to work in a different directory, you can set the TESTDIR +environment variable to the desired location before running them. The tests use a number of tools (awk, expr, id, tr, etc.) that are not required for running CVS itself. In most cases, the standard vendor- --- cvs-1.11.23/TODO +++ cvs-1.11.23/TODO @@ -654,27 +654,27 @@ space than it could, typically. working directory is not a CVS-controlled directory with the correct CVSROOT. For example, the following will fail: - cd /tmp + cd ~/tmp cvs -d /repos co foo cd / - cvs update /tmp/foo + cvs update ~/tmp/foo It is possible to read the CVSROOT from the administrative files in the directory specified by the absolute pathname argument to update. In that case, the last command above would be equivalent to: - cd /tmp/foo + cd ~/tmp/foo cvs update . This can be problematic, however, if we ask CVS to update two directories with different CVSROOTs. Currently, CVS has no way of changing CVSROOT mid-stream. Consider the following: - cd /tmp + cd ~/tmp cvs -d /repos1 co foo cvs -d /repos2 co bar cd / - cvs update /tmp/foo /tmp/bar + cvs update ~/tmp/foo ~/tmp/bar To make that example work, we need to think hard about: --- cvs-1.11.23/contrib/check_cvs.in +++ cvs-1.11.23/contrib/check_cvs.in @@ -99,7 +99,7 @@ my @ignore_files; # # COMMENTS : # Do not run this script inside the repository. Choose -# a nice safe spot( like /tmp ) outside of the repository. +# a nice safe spot outside of the repository. # ###################################################################### my $directory_to_look_at; @@ -374,15 +374,21 @@ sub check_revision $file =~ s/(["\$`\\])/\\$1/g; my $cwd = getcwd(); - chdir( "/tmp" ); + my $mkdir_succeeded = mkdir( "tmp", 0700 ); - my $ret_code = 0xffff & system( "cvs co -n -p -r $revision \"$file\" > /dev/null 2>&1" ); + my $ret_code; + if (chdir( "tmp" )) + { + $ret_code = 0xffff & system( "cvs -l co -n -p -r $revision '$file' > /dev/null 2>&1" ); + } else { + $ret_code = 1; + } - chdir( $cwd ); + if (chdir( $cwd )) { + rmdir( "tmp" ) if ($mkdir_succeeded); + } return( 1 ) if ( $ret_code == 0 ); return( 0 ); - - return( $ret_code ); } ###################################################################### --- cvs-1.11.23/contrib/cvs2vendor.sh +++ cvs-1.11.23/contrib/cvs2vendor.sh @@ -48,11 +48,12 @@ fi tsrcdir=$1 tdstdir=$2 -revfile=/tmp/cvs2vendor_$$_rev -rm -f $revfile - -commentfile=/tmp/cvs2vendor_$$_comment -rm -f $commentfile +revfile= +commentfile= +trap 'rm -f -- "$revfile" "$commentfile"' EXIT +trap 'trap - EXIT ; rm -f -- "$revfile" "$commentfile"; exit 1' HUP INT QUIT TERM +revfile="`mktemp -t cvs2vendor.rev.XXXXXXXXXX`" || exit +commentfile="`mktemp -t cvs2vendor.comment.XXXXXXXXXX`" || exit if sort -k 1,1 /dev/null 2>/dev/null then sort_each_field='-k 1 -k 2 -k 3 -k 4 -k 5 -k 6 -k 7 -k 8 -k 9' --- cvs-1.11.23/contrib/debug_check_log.sh +++ cvs-1.11.23/contrib/debug_check_log.sh @@ -22,7 +22,10 @@ # Contributed by Derek R. Price # - +dcldir= +trap 'rm -rf -- "$dcldir"' EXIT +trap 'trap - EXIT; rm -rf -- "$dcldir"; exit 1' HUP INT QUIT TERM +dcldir="`mktemp -td dcl.XXXXXXXXXX`" || exit usage () { @@ -99,13 +102,13 @@ process_check_log () # file contains a second regex if test $dcl_dofirst -eq 1; then # get the first pattern - sed -ne '/^\*\* expected: $/,/^\*\* or: $/p' <$1 >/tmp/dcle$$ - dcl_exprfiles="$dcl_exprfiles /tmp/dcle$$" + sed -ne '/^\*\* expected: $/,/^\*\* or: $/p' <$1 >$dcldir/e + dcl_exprfiles="$dcl_exprfiles $dcldir/e" fi if test $dcl_doalternate -eq 1; then # get the alternate pattern - sed -ne '/^\*\* or: $/,/^\*\* got: $/p' <$1 >/tmp/dclo$$ - dcl_exprfiles="$dcl_exprfiles /tmp/dclo$$" + sed -ne '/^\*\* or: $/,/^\*\* got: $/p' <$1 >$dcldir/o + dcl_exprfiles="$dcl_exprfiles $dcldir/o" else echo "WARNING: Ignoring alternate pattern in file: $1" >&2 fi @@ -113,8 +116,8 @@ process_check_log () # file doesn't contain a second regex if test $dcl_dofirst = 1; then # get the only pattern - sed -ne '/^\*\* expected: $/,/^\*\* got: $/p' <$1 >/tmp/dcle$$ - dcl_exprfiles="$dcl_exprfiles /tmp/dcle$$" + sed -ne '/^\*\* expected: $/,/^\*\* got: $/p' <$1 >$dcldir/e + dcl_exprfiles="$dcl_exprfiles $dcldir/e" fi if test $dcl_doalternate -eq 1; then echo "WARNING: No alternate pattern in file: $1" >&2 @@ -122,34 +125,34 @@ process_check_log () fi # and get the actual output - sed -ne '/^\*\* got: $/,$p' <$1 >/tmp/dclg$$ + sed -ne '/^\*\* got: $/,$p' <$1 >$dcldir/g sed -ne '1D $D -p' /tmp/dclh$$ - mv /tmp/dclh$$ /tmp/dclg$$ +p' <$dcldir/g >$dcldir/h + mv $dcldir/h $dcldir/g # compare the output against each pattern requested for dcl_f in $dcl_exprfiles; do sed -ne '1D $D -p' <$dcl_f >/tmp/dclp$$ - mv /tmp/dclp$$ $dcl_f +p' <$dcl_f >$dcldir/p + mv $dcldir/p $dcl_f case $dcl_f in - /tmp/dcle*) + $dcldir/e) echo "********** $1 : Primary **********" ;; - /tmp/dclo*) + $dcldir/o) echo "********** $1 : Alternate **********" ;; esac - expr_line_by_line /tmp/dclg$$ $dcl_f + expr_line_by_line $dcldir/g $dcl_f rm $dcl_f done - rm /tmp/dclg$$ + rm $dcldir/g } ### --- cvs-1.11.23/contrib/pvcs2rcs.in +++ cvs-1.11.23/contrib/pvcs2rcs.in @@ -146,9 +146,6 @@ my %bin_ext = # The binaries this script is dependant on: my @bin_dependancies = ("vcs", "vlog", "rcs", "ci"); -# Where we should put temporary files -my $tmpdir = $ENV{TMPDIR} ? $ENV{TMPDIR} : "/var/tmp"; - # We use these... use strict; @@ -828,7 +825,6 @@ sub execdir $wtr->print (".\n"); $wtr->close; # $ci_output = `$ci_command`; - # $ci_output = `cat $tmpdir/ci.out`; $first_time = 0 if ($first_time); } # foreach revision --- cvs-1.11.23/contrib/rcs-to-cvs.sh +++ cvs-1.11.23/contrib/rcs-to-cvs.sh @@ -40,8 +40,11 @@ usage="Usage: rcs-to-cvs [-v] [-m message] [-f message_file] repository" vbose=0 -message="" -if [ -d /var/tmp ]; then message_file=/var/tmp/checkin.$$; else message_file=/usr/tmp/checkin.$$; fi +message= +message_file= +trap 'rm -f -- "$message_file"' EXIT +trap 'trap - EXIT; rm -f -- "$message_file"; exit 1' HUP INT QUIT TERM +message_file="`mktemp -t checkin.XXXXXXXXXX`" || exit got_one=0 if [ $# -lt 1 ]; then --- cvs-1.11.23/contrib/rcs2log.sh +++ cvs-1.11.23/contrib/rcs2log.sh @@ -68,9 +68,6 @@ under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. Author: Paul Eggert ' -# functions -@MKTEMP_SH_FUNCTION@ - # Use the traditional C locale. LANG=C LANGUAGE=C @@ -94,9 +91,7 @@ nl=' # Parse options. # defaults -: ${MKTEMP="@MKTEMP@"} : ${AWK=awk} -: ${TMPDIR=/tmp} changelog=ChangeLog # change log file name datearg= # rlog date option @@ -199,11 +194,11 @@ month_data=' m[9]="Oct"; m[10]="Nov"; m[11]="Dec" ' -logdir=`$MKTEMP -d $TMPDIR/rcs2log.XXXXXX` -test -n "$logdir" || exit +logdir= +trap 'rm -rf -- "$logdir"' EXIT +trap 'trap - EXIT; rm -rf -- "$logdir"; exit 1' HUP INT QUIT TERM +logdir="`mktemp -td rcs2log.XXXXXXXXXX`" || exit llogout=$logdir/l -trap exit 1 2 13 15 -trap "rm -fr $logdir 2>/dev/null" 0 # If no rlog-format log file is given, generate one into $rlogfile. case $rlogfile in --- cvs-1.11.23/contrib/rcs2sccs.sh +++ cvs-1.11.23/contrib/rcs2sccs.sh @@ -20,20 +20,19 @@ if [ ! -d SCCS ] ; then mkdir SCCS fi -logfile=/tmp/rcs2sccs_$$_log -rm -f $logfile -tmpfile=/tmp/rcs2sccs_$$_tmp -rm -f $tmpfile -emptyfile=/tmp/rcs2sccs_$$_empty -echo -n "" > $emptyfile -initialfile=/tmp/rcs2sccs_$$_init +rcs2sccsdir= +trap 'rm -rf -- "$rcs2sccsdir"' EXIT +trap 'trap - EXIT; rm -rf -- "$rcs2sccsdir"; exit 1' HUP INT QUIT TERM +rcs2sccsdir="`mktemp -td rcs2sccs.XXXXXXXXXX`" || exit +logfile="$rcs2sccsdir/log" +tmpfile="$rcs2sccsdir/tmp" +emptyfile="$rcs2sccsdir/empty" +> $emptyfile +initialfile="$rcs2sccsdir/init" echo "Initial revision" > $initialfile -sedfile=/tmp/rcs2sccs_$$_sed -rm -f $sedfile -revfile=/tmp/rcs2sccs_$$_rev -rm -f $revfile -commentfile=/tmp/rcs2sccs_$$_comment -rm -f $commentfile +sedfile="$rcs2sccsdir/sed" +revfile="$rcs2sccsdir/rev" +commentfile="$rcs2sccsdir/comment" # create the sed script cat > $sedfile << EOF --- cvs-1.11.23/contrib/sccs2rcs.in +++ cvs-1.11.23/contrib/sccs2rcs.in @@ -96,18 +96,18 @@ endif sccs clean -set logfile = /tmp/sccs2rcs_$$_log -rm -f $logfile -set tmpfile = /tmp/sccs2rcs_$$_tmp -rm -f $tmpfile -set emptyfile = /tmp/sccs2rcs_$$_empty -echo -n "" > $emptyfile -set initialfile = /tmp/sccs2rcs_$$_init +sccs2rcsdir= +trap 'rm -rf -- "$sccs2rcsdir"' EXIT +trap 'trap - EXIT; rm -rf -- "$sccs2rcsdir"; exit 1' HUP INT QUIT TERM +sccs2rcsdir="`mktemp -td sccs2rcs.XXXXXXXXXX`" || exit +logfile="$sccs2rcsdir/log" +tmpfile="$sccs2rcsdir/tmp" +emptyfile="$sccs2rcsdir/empty" +: > $emptyfile +set initialfile = "$sccs2rcsdir/init" echo "Initial revision" > $initialfile -set sedfile = /tmp/sccs2rcs_$$_sed -rm -f $sedfile -set revfile = /tmp/sccs2rcs_$$_rev -rm -f $revfile +sedfile="$sccs2rcsdir/sed" +revfile="$sccs2rcsdir/rev" # the quotes surround the dollar signs to fool RCS when I check in this script set sccs_keywords = (\ --- cvs-1.11.23/doc/cvs.texinfo +++ cvs-1.11.23/doc/cvs.texinfo @@ -12639,8 +12639,8 @@ cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag @c :::::::::::::::::: @c : @c [ -f $1 ] || exit 1 -@c zcat $1 > /tmp/.#$1.$$ -@c mv /tmp/.#$1.$$ $1 +@c zcat $1 > $1.gunzipcp.$$ +@c mv $1.gunzipcp.$$ $1 @c @c :::::::::::::::::: @c gzipcp @@ -14020,8 +14020,6 @@ Directory in which temporary files are located. The @sc{cvs} server uses @code{TMPDIR}. @xref{Global options}, for a description of how to specify this. -Some parts of @sc{cvs} will always use @file{/tmp} (via -the @code{tmpnam} function provided by the system). On Windows NT, @code{TMP} is used (via the @code{_tempnam} function provided by the system). @@ -14221,7 +14219,7 @@ more subtle cause, which is that the temporary directory on the server is set to a subdirectory of the root (which is also not allowed). If this is the problem, set the temporary directory to somewhere else, -for example @file{/var/tmp}; see @code{TMPDIR} in +for example @file{$HOME/tmp}; see @code{TMPDIR} in @ref{Environment variables}, for how to set the temporary directory. --- cvs-1.11.23/man/cvsbug.8 +++ cvs-1.11.23/man/cvsbug.8 @@ -201,12 +201,11 @@ Submit small code samples with the PR. Contact the support site for instructions on submitting larger test cases and problematic source code. .SH FILES -.ta \w'/tmp/pbad$$ 'u -/tmp/p$$ copy of PR used in editing session +$TMPDIR/p.XXXXXXXXXX copy of PR used in editing session .br -/tmp/pf$$ copy of empty PR form, for testing purposes +$TMPDIR/pf.XXXXXXXXXX copy of empty PR form, for testing purposes .br -/tmp/pbad$$ file for rejected PRs +$TMPDIR/pbad.XXXXXXXXXX file for rejected PRs .SH INSTALLATION AND CONFIGURATION See .B INSTALL --- cvs-1.11.23/src/cvsbug.in +++ cvs-1.11.23/src/cvsbug.in @@ -48,10 +48,6 @@ DEFAULT_ORGANIZATION="net" ## # Newer config information? ## [ -f ${GNATS_ROOT}/gnats-adm/config ] && . ${GNATS_ROOT}/gnats-adm/config -# Hack mktemp on systems that don't have it. -@MKTEMP_SH_FUNCTION@ -MKTEMP="@MKTEMP@" - # What mailer to use. This must come after the config file, since it is # host-dependent. SENDMAIL="@SENDMAIL@" @@ -84,11 +80,18 @@ fi # -[ -z "$TMPDIR" ] && TMPDIR=/tmp +# $xs kludge apparently needed by Sun /bin/sh (and is relied upon by the +# rest of this script, on all platforms). +xs=0 -TEMP="`$MKTEMP $TMPDIR/p.XXXXXX`" -BAD="`$MKTEMP $TMPDIR/pbad.XXXXXX`" -REF="`$MKTEMP $TMPDIR/pf.XXXXXX`" +TEMP= +BAD= +REF= +trap 'rm -f -- "$TEMP" "$BAD" "$REF"; exit $xs' EXIT +trap 'trap - EXIT; rm -f -- "$TEMP" "$BAD" "$REF"; exit 1' HUP INT QUIT TERM +TEMP="`mktemp -t cvsbug.p.XXXXXXXXXX`" || exit +BAD="`mktemp -t cvsbug.pbad.XXXXXXXXXX`" || exit +REF="`mktemp -t cvsbug.pf.XXXXXXXXXX`" || exit if [ -z "$LOGNAME" -a -n "$USER" ]; then LOGNAME=$USER @@ -110,14 +113,12 @@ elif [ -f /bin/domainname ]; then "$YPCAT" passwd 2>/dev/null | cat - /etc/passwd | grep "^$LOGNAME:" | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP ORIGINATOR="`cat $TEMP`" - rm -f $TEMP fi fi if [ "$ORIGINATOR" = "" ]; then grep "^$LOGNAME:" /etc/passwd | cut -f5 -d':' | sed -e 's/,.*//' > $TEMP ORIGINATOR="`cat $TEMP`" - rm -f $TEMP fi if [ -n "$ORGANIZATION" ]; then @@ -266,11 +267,6 @@ DESCRIPTION_C='' HOW_TO_REPEAT_C='' FIX_C='' -# Catch some signals. ($xs kludge needed by Sun /bin/sh) -xs=0 -trap 'rm -f $REF $TEMP; exit $xs' 0 -trap 'echo "$COMMAND: Aborting ..."; rm -f $REF $TEMP; xs=1; exit' 1 2 3 13 15 - # If they told us to use a specific file, then do so. if [ -n "$IN_FILE" ]; then if [ "$IN_FILE" = "-" ]; then --- cvs-1.11.23/src/filesubr.c +++ cvs-1.11.23/src/filesubr.c @@ -702,7 +702,7 @@ cvs_temp_name () error (1, errno, "Failed to create temporary file %s", fn ? fn : "(null)"); if (fclose (fp) == EOF) - error (0, errno, "Failed to close temporary file %s", fn); + error (1, errno, "Failed to close temporary file %s", fn); return fn; } @@ -755,9 +755,10 @@ cvs_temp_file (filename) { int fd; + int save_errno; - fn = xmalloc (strlen (Tmpdir) + 11); - sprintf (fn, "%s/%s", Tmpdir, "cvsXXXXXX" ); + fn = xmalloc (strlen (Tmpdir) + 12); + sprintf (fn, "%s/%s", Tmpdir, "cvs.XXXXXX" ); fd = mkstemp (fn); /* a NULL return will be interpreted by callers as an error and @@ -769,24 +770,21 @@ cvs_temp_file (filename) /* Attempt to close and unlink the file since mkstemp returned * sucessfully and we believe it's been created and opened. */ - int save_errno = errno; + save_errno = errno; if (close (fd)) - error (0, errno, "Failed to close temporary file %s", fn); + error (1, errno, "Failed to close temporary file %s", fn); if (CVS_UNLINK (fn)) - error (0, errno, "Failed to unlink temporary file %s", fn); + error (1, errno, "Failed to unlink temporary file %s", fn); errno = save_errno; } + save_errno = errno; if (fp == NULL) { free (fn); fn = NULL; } - /* mkstemp is defined to open mode 0600 using glibc 2.0.7+ */ - /* FIXME - configure can probably tell us which version of glibc we are - * linking to and not chmod for 2.0.7+ - */ - else chmod (fn, 0600); + errno = save_errno; } --- cvs-1.11.23/src/logmsg.c +++ cvs-1.11.23/src/logmsg.c @@ -210,14 +210,9 @@ do_editor (dir, messagep, repository, changes) if (strcmp (Editor, "") == 0 && !editinfo_editor) error(1, 0, "no editor defined, must use -e or -m"); - /* Create a temporary file */ - /* FIXME - It's possible we should be relying on cvs_temp_file to open - * the file here - we get race conditions otherwise. - */ - fname = cvs_temp_name (); again: errno = 0; /* Standard C doesn't require errno be set on error */ - if ((fp = CVS_FOPEN (fname, "w+")) == NULL) + if ((fp = cvs_temp_file (&fname)) == NULL) error (1, 0, "cannot create temporary file %s", fname); if (*messagep) --- cvs-1.11.23/src/sanity.sh +++ cvs-1.11.23/src/sanity.sh @@ -311,34 +311,7 @@ touch check.log # causing the test to fail. [ -n "$DISPLAY" ] && unset DISPLAY -# The default value of /tmp/cvs-sanity for TESTDIR is dubious, -# because it loses if two people/scripts try to run the tests -# at the same time. Some possible solutions: -# 1. Use /tmp/cvs-test$$. One disadvantage is that the old -# cvs-test* directories would pile up, because they wouldn't -# necessarily get removed. -# 2. Have everyone/everything running the testsuite set -# TESTDIR to some appropriate directory. -# 3. Have the default value of TESTDIR be some variation of -# `pwd`/cvs-sanity. The biggest problem here is that we have -# been fairly careful to test that CVS prints in messages the -# actual pathnames that we pass to it, rather than a different -# pathname for the same directory, as may come out of `pwd`. -# So this would be lost if everything was `pwd`-based. I suppose -# if we wanted to get baroque we could start making symlinks -# to ensure the two are different. : ${CVS_RSH=rsh}; export CVS_RSH -if test -n "$remotehost"; then - # We need to set $tmp on the server since $TMPDIR is compared against - # messages generated by the server. - tmp=`$CVS_RSH $remotehost 'cd /tmp; /bin/pwd || pwd' 2>/dev/null` - if test $? != 0; then - echo "$CVS_RSH $remotehost failed." >&2 - exit 1 - fi -else - tmp=`(cd /tmp; /bin/pwd || pwd) 2>/dev/null` -fi # Now: # 1) Set TESTDIR if it's not set already @@ -346,18 +319,32 @@ fi # 3) Create $TESTDIR # 4) Normalize TESTDIR with `cd && (/bin/pwd || pwd)` # (This will match CVS output later) -: ${TESTDIR=$tmp/cvs-sanity} +if [ -n "$TESTDIR" ]; then # clean any old remnants (we need the chmod because some tests make # directories read-only) -if test -d ${TESTDIR}; then + if test -d ${TESTDIR}; then chmod -R a+wx ${TESTDIR} rm -rf ${TESTDIR} -fi + fi # These exits are important. The first time I tried this, if the `mkdir && cd` # failed then the build directory would get blown away. Some people probably # wouldn't appreciate that. -mkdir ${TESTDIR} || exit 1 + mkdir ${TESTDIR} || exit 1 +fi +if ! $keep; then + trap 'cd "$TESTDIR/.." && rm -rf -- "$TESTDIR"' EXIT + trap 'trap - EXIT; cd "$TESTDIR/.." && rm -rf -- "$TESTDIR"; exit 1' HUP INT QUIT TERM +fi +if [ -z "$TESTDIR" ]; then + TESTDIR="`mktemp -td cvs-sanity.XXXXXXXXXX`" || exit +fi cd ${TESTDIR} || exit 1 +touch $TESTDIR/cvs-sanity-testdir +TESTDIR=`(/bin/pwd || pwd) 2>/dev/null` +if ! test -e $TESTDIR/cvs-sanity-testdir; then + echo "Unable to expand any possible symlinks in TESTDIR." >&2 + exit 1 +fi # Ensure $TESTDIR is absolute if echo "${TESTDIR}" |grep '^[^/]'; then # Don't resolve this unless we have to. This keeps symlinks intact. This @@ -371,7 +358,6 @@ if test -z "${TESTDIR}" || echo "${TESTDIR}" |grep '^[^/]'; then echo "Unable to resolve TESTDIR to an absolute directory." >&2 exit 1 fi -cd ${TESTDIR} # Now set $TMPDIR if the user hasn't overridden it. # @@ -30247,8 +30233,4 @@ if $keep; then exit 0 fi -# Remove the test directory, but first change out of it. -cd `dirname ${TESTDIR}` -rm -rf ${TESTDIR} - # end of sanity.sh