glib r6531 - trunk/gio



Author: alexl
Date: Mon Feb 18 10:10:58 2008
New Revision: 6531
URL: http://svn.gnome.org/viewvc/glib?rev=6531&view=rev

Log:
2008-02-18  Alexander Larsson  <alexl redhat com>

        * glocalfile.c:
        * glocalfileoutputstream.c:
	Open files with O_BINARY on windows. (#517140)



Modified:
   trunk/gio/ChangeLog
   trunk/gio/glocalfile.c
   trunk/gio/glocalfileoutputstream.c

Modified: trunk/gio/glocalfile.c
==============================================================================
--- trunk/gio/glocalfile.c	(original)
+++ trunk/gio/glocalfile.c	Mon Feb 18 10:10:58 2008
@@ -46,6 +46,10 @@
 #include <sys/mount.h>
 #endif
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 #if defined(HAVE_STATFS) && defined(HAVE_STATVFS)
 /* Some systems have both statfs and statvfs, pick the
    most "native" for these */
@@ -1110,7 +1114,7 @@
   int fd;
   struct stat buf;
   
-  fd = g_open (local->filename, O_RDONLY, 0);
+  fd = g_open (local->filename, O_RDONLY|O_BINARY, 0);
   if (fd == -1)
     {
       int errsv = errno;

Modified: trunk/gio/glocalfileoutputstream.c
==============================================================================
--- trunk/gio/glocalfileoutputstream.c	(original)
+++ trunk/gio/glocalfileoutputstream.c	Mon Feb 18 10:10:58 2008
@@ -48,6 +48,10 @@
 #endif
 #endif
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 #include "gioalias.h"
 
 #define g_local_file_output_stream_get_type _g_local_file_output_stream_get_type
@@ -456,7 +460,7 @@
   else
     mode = 0666;
   
-  fd = g_open (filename, O_CREAT | O_EXCL | O_WRONLY, mode);
+  fd = g_open (filename, O_CREAT | O_EXCL | O_WRONLY | O_BINARY, mode);
   if (fd == -1)
     {
       int errsv = errno;
@@ -497,7 +501,7 @@
   else
     mode = 0666;
 
-  fd = g_open (filename, O_CREAT | O_APPEND | O_WRONLY, mode);
+  fd = g_open (filename, O_CREAT | O_APPEND | O_WRONLY | O_BINARY, mode);
   if (fd == -1)
     {
       int errsv = errno;
@@ -611,9 +615,9 @@
   /* We only need read access to the original file if we are creating a backup.
    * We also add O_CREATE to avoid a race if the file was just removed */
   if (create_backup)
-    open_flags = O_RDWR | O_CREAT;
+    open_flags = O_RDWR | O_CREAT | O_BINARY;
   else
-    open_flags = O_WRONLY | O_CREAT;
+    open_flags = O_WRONLY | O_CREAT | O_BINARY;
   
   /* Some systems have O_NOFOLLOW, which lets us avoid some races
    * when finding out if the file we opened was a symlink */
@@ -766,7 +770,7 @@
 	}
 
       bfd = g_open (backup_filename,
-		    O_WRONLY | O_CREAT | O_EXCL,
+		    O_WRONLY | O_CREAT | O_EXCL | O_BINARY,
 		    original_stat.st_mode & 0777);
 
       if (bfd == -1)
@@ -890,7 +894,7 @@
     mode = 0666;
 
   /* If the file doesn't exist, create it */
-  fd = g_open (filename, O_CREAT | O_EXCL | O_WRONLY, mode);
+  fd = g_open (filename, O_CREAT | O_EXCL | O_WRONLY | O_BINARY, mode);
 
   if (fd == -1 && errno == EEXIST)
     {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]