Make sure that all programs that use syscall.o also include
[rsync/rsync.git] / syscall.c
index 95646a3..600d91c 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -152,7 +152,7 @@ int do_mkstemp(char *template, mode_t perms)
        RETURN_ERROR_IF(dry_run, 0);
        RETURN_ERROR_IF(read_only, EROFS);
 
-#if defined(HAVE_SECURE_MKSTEMP) && defined(HAVE_FCHMOD)
+#if HAVE_SECURE_MKSTEMP && HAVE_FCHMOD && (!HAVE_OPEN64 || HAVE_MKSTEMP64)
        {
                int fd = mkstemp(template);
                if (fd == -1)
@@ -164,6 +164,9 @@ int do_mkstemp(char *template, mode_t perms)
                        errno = errno_save;
                        return -1;
                }
+#if HAVE_SETMODE && O_BINARY
+               setmode(fd, O_BINARY);
+#endif
                return fd;
        }
 #else