This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

mkstemp vs. text mode


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Should we change mkstemp to always open in binary mode, regardless of the
mount mode of the directory of the template name?  Arguments for this is
that mkstemp is often used by programs for binary data, where a text-mode
/tmp mount point would corrupt that data if we defer to the mount point.
Also, a temp file is an intermediate data storage location, similar to
pipes, and we currently treat pipes as binary by default; a program
copying data to a temp file, then from there to a final destination, only
needs text mode on the final destination.  Programs that really want a
text-mode temp file can do setmode after the fact, but this is probably
less common.

This should still be a trivial patch.  Meanwhile, I will start the process
of getting an employee disclaimer for Red Hat (it took me almost a year to
get one signed for FSF).

2006-04-17  Eric Blake  <ebb9@byu.net>

	* mktemp.cc (_gettemp): Open temp files in binary mode.

- --
Life is short - so eat dessert first!

Eric Blake             ebb9@byu.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFEQ4ee84KuGfSFAYARAkpIAKCYK1IRVHZ4dMkWUTgyzycxyMkBawCfXgz4
wCvt41FDUXLB67JFnv+vZgg=
=LLV/
-----END PGP SIGNATURE-----
Index: mktemp.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/mktemp.cc,v
retrieving revision 1.2
diff -u -p -r1.2 mktemp.cc
--- mktemp.cc	25 May 2005 03:43:58 -0000	1.2
+++ mktemp.cc	17 Apr 2006 12:15:39 -0000
@@ -105,7 +105,8 @@ _gettemp(char *path, int *doopen, int do
     {
       if (doopen)
 	{
-	  if ((*doopen = open (path, O_CREAT | O_EXCL | O_RDWR, 0600)) >= 0)
+	  if ((*doopen = open (path, O_CREAT | O_EXCL | O_RDWR | O_BINARY,
+			       S_IRUSR | S_IWUSR)) >= 0)
 	    return 1;
 	  if (errno != EEXIST)
 	    return 0;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]