On Mon, 27 Jul 2015 20:35:30 +0100 Simon Slavin <slavins at bigfraud.org> wrote:
> On 27 Jul 2015, at 8:03pm, Zsb?n Ambrus <ambrus at math.bme.hu> wrote: > > > Does this work with the same environment variable name on both unix > > and windows? I'm asking because unix and windows programs each use > > different conventions for what environment variable to care about > > when determining the temporary directory, and these conventions > > differ on unix and windows, though I believe TEMP is the customary > > variable on windows ... > If it's going to be documented, it would also be nice to see it on > > <https://www.sqlite.org/tempfiles.html> > > which, according to my browser, doesn't mention the word > 'environment'. I would be nice to have clearly documented the means by which the location of temporary files is controlled. I assumed some flavor of tmpfile(3) was used, but evidently SQLite doesn't rely on that function. BTW, Posix is almost silent on the question. It says TMPDIR will define the location of a temporary store, but not how. The C standard library doesn't mention it for functions like tmpfile. BSDs such as OS X do, but according to the docs GNU glibc doesn't. The issue of thead safety when using environment variables is spurious. In a few places I can think of in libc (time zone, locale), it consults the environment once on startup (or first use) and uses that variable henceforward. SQLite could do something similar, or otherwise ensure that whenever the environment is read all threads get a consistent view. --jkl