From: Paul Eggert Date: Sat, 5 Feb 2005 00:11:43 +0000 (+0000) Subject: (Limitations of Usual Tools): New mkstemp entry. Based on a X-Git-Tag: AUTOCONF-2.59c~463 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ec55ba03f32edcf7d94dc44359ffaed8e98621ad;p=thirdparty%2Fautoconf.git (Limitations of Usual Tools): New mkstemp entry. Based on a suggestion by Bruno Haible. --- diff --git a/doc/autoconf.texi b/doc/autoconf.texi index 60eca763d..4550d4acb 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -11819,6 +11819,35 @@ recent enough (the copies shipped with Automake 1.8.3 are OK, those from older versions are not thread-safe either). +@item @command{mktemp} +@c ------------------- +@prindex @command{mktemp} +@cindex Creating temporary files +The command @command{mktemp} lets shell scripts use temporary files +safely, but it does not exist on all systems. A portable way to create +a safe temporary file name is to create a temporary directory with mode +700 and use a file inside this directory. + +Here is sample code to create a new temporary directory safely +under @code{$TMPDIR}, with the default location being @file{/tmp}: + +@example +: $@{TMPDIR=/tmp@} +@{ + # Prefer mktemp if it exists, as it is more reliable. + tmp=` + (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" +@} || +@{ + # Fall back on mkdir; $RANDOM makes collisions less likely. + tmp=$TMPDIR/foo$$-$RANDOM + (umask 077 && mkdir "$tmp") +@} || exit $? +@end example + + @item @command{mv} @c --------------- @prindex @command{mv}