- Moved the err_list* stuff here from log.c and renamed them msg_list*.
[rsync/rsync.git] / cleanup.c
index 49d1830..3e85d4e 100644 (file)
--- a/cleanup.c
+++ b/cleanup.c
@@ -118,7 +118,7 @@ void _exit_cleanup(int code, const char *file, int line)
                if (cleanup_fd2 != -1) close(cleanup_fd2);
                finish_transfer(cleanup_new_fname, fname, cleanup_file);
        }
-       io_flush();
+       io_flush(FULL_FLUSH);
        if (cleanup_fname)
                do_unlink(cleanup_fname);
        if (code) {
@@ -131,8 +131,11 @@ void _exit_cleanup(int code, const char *file, int line)
                }
        }
 
-       if (code == 0 && (io_error || log_got_error)) {
-               code = RERR_PARTIAL;
+       if (code == 0) {
+               if ((io_error & ~IOERR_VANISHED) || log_got_error)
+                       code = RERR_PARTIAL;
+               else if (io_error)
+                       code = RERR_VANISHED;
        }
 
        if (code) log_exit(code, file, line);