On 6 Dec 2002 [EMAIL PROTECTED] wrote:
> Dirk-Willem van Gulik <[EMAIL PROTECTED]> writes: > > > On Thu, 5 Dec 2002, Aaron Bannert wrote: > > > > > I don't like the idea of having environment variables drive things like > > > this. Temp directories are a great way to get programs to write files > > > wherever you want. I'd much rather have a function where the global > > > tempdir can be set and then retrieved later by apr_get_temp_dir(). The > > > nice thing about this is it doesn't incur any processing overhead when > > > apr_get_temp_dir() is called, and can let apps like httpd create their > > > own config directive for setting the preferred tempdir. > > > > Over the years the same discussion has been had in various unix forums - > > and I have a strong feeling that the consensus reached there (or at least > > the working assumption) that the ability to get a 'free to use' directory > > reference was BAD - and that you are better off asking for a temp file > > name; as to avoid clashes and all sorts of other mayem. > > What's the hangup here? Every Unix I've ever seen, and every Windows > version I've ever seen, has a notion of a temporary directory. Sure - but where it is depends on the unix, wether you are using a secure/trusted unix, who you are logged in at, the NFS mounting situation du jour. Figuring it out -and- respecting the admin wishes is non trivial. Often the only reason you want a tmp directory is to create a temp file. Usually that file should be private to 'you'. So you then need to guess a unique name and make sure no one else uses it and ensure you do not clash with others in what is essentially a NON controlled namespace. So you normally do not try to outgess the system; but rely on libc to give you a tempname with some good warranties and clear contract. What I am challenging is that apr_ actually needs a way of getting a temp DIR; I am advocating that in 99% of the cases being able to get a temp NAME is good enough. (and tmpfile() is inherently safer of course). And that libc is inherently better at getting it right. Dw
