Make sure that all programs that use syscall.o also include
[rsync/rsync.git] / syscall.c
index cbc5e53..600d91c 100644 (file)
--- a/syscall.c
+++ b/syscall.c
@@ -90,7 +90,7 @@ int do_rmdir(char *pathname)
 int do_open(char *pathname, int flags, mode_t mode)
 {
        if (flags != O_RDONLY) {
-               RETURN_ERROR_IF(dry_run, ENOMSG);
+               RETURN_ERROR_IF(dry_run, 0);
                RETURN_ERROR_IF_RO_OR_LO;
        }
 
@@ -149,10 +149,10 @@ int do_mkdir(char *fname, mode_t mode)
 /* like mkstemp but forces permissions */
 int do_mkstemp(char *template, mode_t perms)
 {
-       RETURN_ERROR_IF(dry_run, ENOMSG);
+       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