Fixed file writing on WIN32 to use O_BINARY. A patch by
authorPekka Riikonen <priikone@silcnet.org>
Tue, 17 Dec 2002 09:07:20 +0000 (09:07 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Tue, 17 Dec 2002 09:07:20 +0000 (09:07 +0000)
Matthew Aldous.

CHANGES
lib/silcutil/silcfileutil.c

diff --git a/CHANGES b/CHANGES
index d960e2aa34838e3721026f16a13f4d724f5d23fa..c4c9e7b3efd89b98db3701e077aa4955b7fc2a35 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,9 @@
+Tue Dec 17 10:05:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed file writing on WIN32 to use O_BINARY flag.  Affected
+         file is lib/silcutil/silcfileutil.c.  A patch by Matthew
+         Aldous <Matthew@Aldous.com>.
+
 Mon Dec 16 19:33:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
 
        * Fixed double free in async host lookup code.  Affected file
index 7d2d14757281af64b6f1e7ae737fa72ed1cd7fe6..22c6dc9a4d1da1666984c1b95cf30913a312323e 100644 (file)
@@ -65,8 +65,14 @@ int silc_file_writefile(const char *filename, const char *buffer,
                        SilcUInt32 len)
 {
   int fd;
+  int flags = O_CREAT | O_WRONLY | O_TRUNC;
 
-  if ((fd = creat(filename, 0644)) == -1) {
+#if defined(O_BINARY)
+  flags |= O_BINARY;
+#endif /* O_BINARY */
+
+  if ((fd = open(filename, flags, 0644))
+     == -1) {
     SILC_LOG_ERROR(("Cannot open file %s for writing: %s", filename,
                    strerror(errno)));
     return -1;
@@ -90,8 +96,14 @@ int silc_file_writefile_mode(const char *filename, const char *buffer,
                             SilcUInt32 len, int mode)
 {
   int fd;
+  int flags = O_CREAT | O_WRONLY | O_TRUNC;
+
+#if defined(O_BINARY)
+  flags |= O_BINARY;
+#endif /* O_BINARY */
 
-  if ((fd = creat(filename, mode)) == -1) {
+  if ((fd = open(filename, flags, 0644))
+      == -1) {
     SILC_LOG_ERROR(("Cannot open file %s for writing: %s", filename,
                    strerror(errno)));
     return -1;