temporary files - what is the resolution?
Marco Leise
Marco.Leise at gmx.de
Wed Jul 25 18:49:27 PDT 2012
From the DMD versioning talk I came to the changelog for 2.060 and found #7537 fixed (http://d.puremagic.com/issues/show_bug.cgi?id=7537), which I had to work around before.
Seeing as this is a basic C library function, I was wondering if D could have a modern version. Looking at the MSDN it seems, like Microsoft added quite a few functions to the Visual Studio C Runtime over the years:
directory generates security enhanced¹
tmpnam_s current working² filename yes
tmpnam current working² filename no
_tempnam TMP/user defined filename no
tmpfile_s system root FILE ptr³ yes
tmpfile system root FILE ptr³ no
¹ = http://msdn.microsoft.com/en-us/library/8ef0s5kh(v=vs.80).aspx
² = functions that use the current working directory require that you set it to the desired location first, which makes them difficult to use in a library, especially since the cwd is attached to the process and other user threads may not be prepared for sudden changes
³ = these files are automagically deleted when the process exists
It looks like "GetTempFileName" (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364991(v=vs.85).aspx) is the actual operating system function that is used by the C Runtime. I'd like to see a cross-platform solution that uses GetTempFileName on Windows. The result should be usable as a D File. It is currently impossible to create a std.stream wrapped around a File.tmpfile, because it returns a C FILE pointer (and until 2.060, because of the administrator rights issue on Windows).
On Unix mkstemp (http://pubs.opengroup.org/onlinepubs/009695399/functions/mkstemp.html) looks like a pretty similar function as well. Unlike the Windows equivalent it returns an open file descriptor/handle in addition to the file name. In both cases the user has to delete the files after use. To me it looks they are flexible enough to write up set of cross-platform (Windows/MacOS X/Linux/FreeBSD) functions for temporary files.
The question is: Is the problem solved with the fixed bug, or is there interest in D functions for temporary files?
--
Marco
More information about the Digitalmars-d
mailing list