[distcc] g_mkstmp() replacement for tempfile.c
shawn
shawnlandden at gmail.com
Mon Jun 4 19:38:46 MDT 2012
from tempfile.c
==
* It would be nice if we could use a standard function, but I don't
* think any of them are adequate: we need to control the extension
* and know the filename. tmpfile() does not give back the filename.
* tmpnam() is insecure. mkstemp() does not allow us to set the
* extension.
*
* It sucks that there is no standard function. The implementation
* below is inspired by the __gen_tempname() code in glibc; hopefully
* it will be secure on all platforms.
===
well, such a thing DOES exist, in glib:
http://developer.gnome.org/glib/2.33/glib-File-Utilities.html#g-mkstemp
interested in switching?
==
gint g_mkstemp (gchar *tmpl);
Opens a temporary file. See the mkstemp() documentation on most
UNIX-like systems.
The parameter is a string that should follow the rules for mkstemp()
templates, i.e. contain the string "XXXXXX". g_mkstemp() is slightly
more flexible than mkstemp() in that the sequence does not have to occur
at the very end of the template. The X string will be modified to form
the name of a file that didn't exist. The string should be in the GLib
file name encoding. Most importantly, on Windows it should be in UTF-8.
tmpl :
template filename. [type filename]
Returns :
A file handle (as from open()) to the file opened for reading and
writing. The file is opened in binary mode on platforms where there is a
difference. The file handle should be closed with close(). In case of
errors, -1 is returned and errno will be set.
More information about the distcc
mailing list