i think that libapreq shouldn't be using tempnam() It frustraiting that you can't force tempnam to use a given directory via some sort of api. this makes the TEMP_DIR argument to Apache::Request behave inconsistently depending on what environment variables may or may not be set. If you tell an object to put temp files in a certain place, you expect it to behave that way. Also, with the way the current ApacheRequest_tmpfile() code is written it's hard to figure out what went wrong, because you can't really print the returned name from tempnam() making it even harder to track down the fact that tempnam() returned a file name in a different one than you asked Apache::Request to put it.
tempnam isn't posix, and even the manpage on most linux systems say:
BUGS:
The precise meaning of ‘appropriate’ is undefined; it is unspecified
how accessibility of a directory is determined. Never use this func-
tion. Use mkstemp(3) instead.
I propose that we follow this good advice and use mkstemp instead. The change is fairly easy to do, and will certainly avoid headaches that i'm sure many of us have run into.
I see that somewhere between apreq1.1 and 1.3 the man page was updated to mention this, so i know i'm not the only one who's been bitten by this.
any objections if i send in a patch?
-- Reporting bugs: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html