@@ -82,6 +82,7 @@ int proper_seed_order = 0;
8282int inplace_partial = 0 ;
8383int do_negotiated_strings = 0 ;
8484int xmit_id0_names = 0 ;
85+ int skip_unchanged_negotiated = 0 ;
8586
8687struct name_num_item * xattr_sum_nni ;
8788int xattr_sum_len = 0 ;
@@ -124,6 +125,7 @@ struct name_num_obj valid_compressions = {
124125#define CF_INPLACE_PARTIAL_DIR (1<<6)
125126#define CF_VARINT_FLIST_FLAGS (1<<7)
126127#define CF_ID0_NAMES (1<<8)
128+ #define CF_SKIP_UNCHANGED (1<<9)
127129
128130static const char * client_info ;
129131
@@ -727,6 +729,8 @@ void setup_protocol(int f_out,int f_in)
727729 compat_flags |= CF_INPLACE_PARTIAL_DIR ;
728730 if (strchr (client_info , 'u' ) != NULL )
729731 compat_flags |= CF_ID0_NAMES ;
732+ if (strchr (client_info , 'U' ) != NULL )
733+ compat_flags |= CF_SKIP_UNCHANGED ;
730734 if (strchr (client_info , 'v' ) != NULL ) {
731735 do_negotiated_strings = 1 ;
732736 compat_flags |= CF_VARINT_FLIST_FLAGS ;
@@ -748,6 +752,9 @@ void setup_protocol(int f_out,int f_in)
748752 proper_seed_order = compat_flags & CF_CHKSUM_SEED_FIX ? 1 : 0 ;
749753 xfer_flags_as_varint = compat_flags & CF_VARINT_FLIST_FLAGS ? 1 : 0 ;
750754 xmit_id0_names = compat_flags & CF_ID0_NAMES ? 1 : 0 ;
755+ if (compat_flags & CF_SKIP_UNCHANGED ) {
756+ skip_unchanged_negotiated = 1 ;
757+ }
751758 if (!xfer_flags_as_varint && preserve_crtimes ) {
752759 fprintf (stderr , "Both rsync versions must be at least 3.2.0 for --crtimes.\n" );
753760 exit_cleanup (RERR_PROTOCOL );
0 commit comments