* rename.c (O_BINARY): Define as 0 if not defined.
authorIan Lance Taylor <ian@airs.com>
Sat, 12 Jun 1999 16:04:07 +0000 (16:04 +0000)
committerIan Lance Taylor <ian@airs.com>
Sat, 12 Jun 1999 16:04:07 +0000 (16:04 +0000)
(simple_copy): Open files with O_BINARY.

binutils/ChangeLog
binutils/rename.c

index 56f98b1c7fccf6aeca046e033ac50a70851f3e00..ab0b602ca342d6027cc2a3c4a00646687289eeed 100644 (file)
@@ -1,5 +1,8 @@
 1999-06-12  Ian Lance Taylor  <ian@zembu.com>
 
+       * rename.c (O_BINARY): Define as 0 if not defined.
+       (simple_copy): Open files with O_BINARY.
+
        Based on patch from H. Peter Anvin <hpa@transmeta.com>:
        * objcopy.c (struct section_list): Add copy field.
        (sections_copied): New static variable.
index f8314fbd0958358dbf2323d306640cfb739d5d9d..78ea9fd6b20da379640dee500926e13067c98694 100644 (file)
 #endif /* HAVE_UTIMES */
 #endif /* ! HAVE_GOOD_UTIME_H */
 
+/* We need to open the file in binary modes on system where that makes
+   a difference.  */
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 static int simple_copy PARAMS ((const char *, const char *));
 
 /* The number of bytes to copy at once.  */
@@ -48,10 +54,14 @@ simple_copy (from, to)
   int saved;
   char buf[COPY_BUF];
 
-  fromfd = open (from, O_RDONLY);
+  fromfd = open (from, O_RDONLY | O_BINARY);
   if (fromfd < 0)
     return -1;
+#ifdef O_CREAT
+  tofd = open (to, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0777);
+#else
   tofd = creat (to, 0777);
+#endif
   if (tofd < 0)
     {
       saved = errno;