- Use read_short() and write_short().
[rsync/rsync.git] / receiver.c
index 1afdf2d..85086f6 100644 (file)
@@ -21,8 +21,8 @@
 #include "rsync.h"
 
 extern int verbose;
-extern int itemize_changes;
 extern int log_before_transfer;
+extern int itemize_changes;
 extern int delete_after;
 extern int csum_length;
 extern struct stats stats;
@@ -370,10 +370,15 @@ int recv_files(int f_in, struct file_list *flist, char *local_name,
 
                file = flist->files[i];
 
-               if (itemize_changes) {
-                       iflags = read_byte(f_in);
+               if (protocol_version >= 29) {
+                       iflags = read_short(f_in);
                        if (!(iflags & ITEM_UPDATING) || !S_ISREG(file->mode)) {
-                               if (!dry_run || !am_server)
+                               if (am_server)
+                                       ; /* do nothing */
+                               else if (itemize_changes
+                                   || iflags & ITEM_UPDATING
+                                   || (S_ISDIR(file->mode)
+                                    && iflags & ITEM_REPORT_TIME))
                                        log_recv(file, &stats, iflags);
                                continue;
                        }
@@ -403,9 +408,7 @@ int recv_files(int f_in, struct file_list *flist, char *local_name,
                        rprintf(FINFO, "recv_files(%s)\n", safe_fname(fname));
 
                if (dry_run) { /* log the transfer */
-                       if (!am_server && verbose && !log_format)
-                               rprintf(FINFO, "%s\n", safe_fname(fname));
-                       else if (!am_server)
+                       if (!am_server && log_format)
                                log_recv(file, &stats, iflags);
                        continue;
                }
@@ -551,7 +554,7 @@ int recv_files(int f_in, struct file_list *flist, char *local_name,
                /* log the transfer */
                if (log_before_transfer)
                        log_recv(file, &initial_stats, iflags);
-               else if (!am_server && verbose && (!log_format || do_progress))
+               else if (!am_server && verbose && do_progress)
                        rprintf(FINFO, "%s\n", safe_fname(fname));
 
                /* recv file data */