- Added long-name versions of the options.
authorWayne Davison <wayned@samba.org>
Tue, 8 Feb 2005 19:14:19 +0000 (19:14 +0000)
committerWayne Davison <wayned@samba.org>
Tue, 8 Feb 2005 19:14:19 +0000 (19:14 +0000)
- Added "send" and "unprotect" (opposites of "hide" and "protect").

sender-receiver-excludes.diff

index 30e6280..0aa0285 100644 (file)
@@ -32,8 +32,8 @@ See the updated manpage for the details.
        if (am_server) {
                if (!checksum_seed)
                        checksum_seed = time(NULL);
---- orig/exclude.c     2005-02-05 06:48:21
-+++ exclude.c  2005-02-05 06:56:47
+--- orig/exclude.c     2005-02-08 19:06:38
++++ exclude.c  2005-02-08 18:34:22
 @@ -53,7 +53,8 @@ struct filter_list_struct server_filter_
  #define MAX_RULE_PREFIX (16)
  
@@ -44,14 +44,51 @@ See the updated manpage for the details.
  
  /* The dirbuf is set by push_local_filters() to the current subdirectory
   * relative to curr_dir that is being processed.  The path always has a
-@@ -667,6 +668,14 @@ static const char *parse_rule_tok(const 
+@@ -678,6 +679,10 @@ static const char *parse_rule_tok(const 
+                       if ((s = RULE_MATCH(s, "exclude")) != NULL)
+                               ch = '-';
+                       break;
++              case 'h':
++                      if ((s = RULE_MATCH(s, "hide")) != NULL)
++                              ch = 'H';
++                      break;
+               case 'i':
+                       if ((s = RULE_MATCH(s, "include")) != NULL)
+                               ch = '+';
+@@ -686,6 +691,19 @@ static const char *parse_rule_tok(const 
+                       if ((s = RULE_MATCH(s, "merge")) != NULL)
+                               ch = '.';
+                       break;
++              case 'p':
++                      if ((s = RULE_MATCH(s, "protect")) != NULL)
++                              ch = 'P';
++                      break;
++              case 's':
++                      if ((s = RULE_MATCH(s, "send")) != NULL)
++                              ch = 'S';
++                      break;
++              case 'u':
++                      if ((s = RULE_MATCH(s, "unprotect")) != NULL)
++                              ch = 'U';
++                      break;
++
+               default:
+                       ch = *s;
+                       if (s[1] == ',')
+@@ -707,6 +725,20 @@ static const char *parse_rule_tok(const 
                case '-':
                        mods = MODIFIERS_INCL_EXCL;
                        break;
++              case 'S':
++                      new_mflags |= MATCHFLG_INCLUDE;
++                      /* FALL THROUGH */
 +              case 'H':
 +                      new_mflags |= MATCHFLG_SENDER_SIDE;
 +                      mods = MODIFIERS_HIDE_PROTECT;
 +                      break;
++              case 'U':
++                      new_mflags |= MATCHFLG_INCLUDE;
++                      /* FALL THROUGH */
 +              case 'P':
 +                      new_mflags |= MATCHFLG_RECEIVER_SIDE;
 +                      mods = MODIFIERS_HIDE_PROTECT;
@@ -59,7 +96,7 @@ See the updated manpage for the details.
                case '!':
                        new_mflags |= MATCHFLG_CLEAR_LIST;
                        mods = NULL;
-@@ -719,6 +728,12 @@ static const char *parse_rule_tok(const 
+@@ -759,6 +791,12 @@ static const char *parse_rule_tok(const 
                        case 'n':
                                new_mflags |= MATCHFLG_NO_INHERIT;
                                break;
@@ -72,7 +109,7 @@ See the updated manpage for the details.
                        case 'w':
                                new_mflags |= MATCHFLG_WORD_SPLIT;
                                break;
-@@ -973,6 +988,11 @@ char *get_rule_prefix(int match_flags, c
+@@ -1013,6 +1051,11 @@ char *get_rule_prefix(int match_flags, c
        }
        if (match_flags & MATCHFLG_EXCLUDE_SELF)
                *op++ = 'e';
@@ -84,7 +121,7 @@ See the updated manpage for the details.
        if (legal_len)
                *op++ = ' ';
        if (op - buf > legal_len)
-@@ -985,19 +1005,37 @@ char *get_rule_prefix(int match_flags, c
+@@ -1025,19 +1068,37 @@ char *get_rule_prefix(int match_flags, c
  
  static void send_rules(int f_out, struct filter_list_struct *flp)
  {
@@ -126,7 +163,7 @@ See the updated manpage for the details.
                p = get_rule_prefix(ent->match_flags, ent->pattern, 1, &plen);
                if (!p) {
                        rprintf(FERROR,
-@@ -1015,12 +1053,13 @@ static void send_rules(int f_out, struct
+@@ -1055,12 +1116,13 @@ static void send_rules(int f_out, struct
                if (dlen)
                        write_byte(f_out, '/');
        }
@@ -141,7 +178,7 @@ See the updated manpage for the details.
  
        if (local_server || (am_sender && !receiver_wants_list))
                f_out = -1;
-@@ -1035,10 +1074,10 @@ void send_filter_list(int f_out)
+@@ -1075,10 +1137,10 @@ void send_filter_list(int f_out)
        if (list_only == 1 && !recurse)
                parse_rule(&filter_list, "/*/*", MATCHFLG_NO_PREFIXES, 0);
  
@@ -155,7 +192,7 @@ See the updated manpage for the details.
  
        if (cvs_exclude) {
                if (!am_sender || protocol_version < 29)
-@@ -1054,7 +1093,7 @@ void recv_filter_list(int f_in)
+@@ -1094,7 +1156,7 @@ void recv_filter_list(int f_in)
        char line[MAXPATHLEN+MAX_RULE_PREFIX+1]; /* +1 for trailing slash. */
        int xflags = protocol_version >= 29 ? 0 : XFLG_OLD_PREFIXES;
        unsigned int len;
@@ -164,7 +201,7 @@ See the updated manpage for the details.
  
        if (!local_server && (am_sender || receiver_wants_list)) {
                while ((len = read_int(f_in)) != 0) {
-@@ -1071,4 +1110,7 @@ void recv_filter_list(int f_in)
+@@ -1111,4 +1173,7 @@ void recv_filter_list(int f_in)
                if (local_server || am_sender)
                        parse_rule(&filter_list, "-C", 0, 0);
        }
@@ -172,9 +209,9 @@ See the updated manpage for the details.
 +      if (local_server) /* filter out any rules that aren't for us. */
 +              send_rules(-1, &filter_list);
  }
---- orig/flist.c       2005-02-03 19:23:55
+--- orig/flist.c       2005-02-07 20:41:56
 +++ flist.c    2005-02-05 05:31:09
-@@ -979,7 +979,7 @@ void send_file_name(int f, struct file_l
+@@ -980,7 +980,7 @@ void send_file_name(int f, struct file_l
  
        /* f is set to -1 when calculating deletion file list */
        file = make_file(fname, flist,
@@ -183,7 +220,7 @@ See the updated manpage for the details.
  
        if (!file)
                return;
---- orig/rsync.h       2005-02-04 22:28:09
+--- orig/rsync.h       2005-02-07 20:41:57
 +++ rsync.h    2005-02-05 05:31:10
 @@ -565,9 +565,12 @@ struct map_struct {
  #define MATCHFLG_FINISH_SETUP (1<<13)/* per-dir merge file needs setup */
@@ -199,8 +236,8 @@ See the updated manpage for the details.
  
  struct filter_struct {
        struct filter_struct *next;
---- orig/rsync.yo      2005-02-06 07:24:23
-+++ rsync.yo   2005-02-06 07:21:31
+--- orig/rsync.yo      2005-02-08 19:06:38
++++ rsync.yo   2005-02-08 19:10:12
 @@ -678,7 +678,9 @@ send the whole directory (e.g. "dir" or 
  for the directory's contents (e.g. "dir/*") since the wildcard is expanded
  by the shell and rsync thus gets a request to transfer individual files, not
@@ -222,43 +259,40 @@ See the updated manpage for the details.
  See bf(--delete) (which is implied) for more details on file-deletion.
  
  dit(bf(--ignore-errors)) Tells bf(--delete) to go ahead and delete files
-@@ -1241,6 +1246,8 @@ bf(-) specifies an exclude pattern. nl()
- bf(+) specifies an include pattern. nl()
- bf(.) specifies a merge-file to read for more rules. nl()
- bf(:) specifies a per-directory merge-file. nl()
-+bf(H) specifies a pattern for hiding files from the transfer. nl()
-+bf(P) specifies a pattern for protecting files from deletion. nl()
- bf(!) clears the current include/exclude list (takes no arg) nl()
+@@ -1243,6 +1248,10 @@ bf(exclude, -) specifies an exclude patt
+ bf(include, +) specifies an include pattern. nl()
+ bf(merge, .) specifies a merge-file to read for more rules. nl()
+ bf(dir-merge, :) specifies a per-directory merge-file. nl()
++bf(hide, H) specifies a pattern for hiding files from the transfer. nl()
++bf(send, S) the opposite of a "hide". nl()
++bf(protect, P) specifies a pattern for protecting files from deletion. nl()
++bf(unprotect, U) the opposite of a "protect". nl()
+ bf(clear, !) clears the current include/exclude list (takes no arg) nl()
  )
  
-@@ -1263,8 +1270,13 @@ comment lines that start with a "#".
+@@ -1267,8 +1276,8 @@ the bf(--include-from)/bf(--exclude-from
  
  manpagesection(INCLUDE/EXCLUDE PATTERN RULES)
  
 -You can include and exclude files by specifying patterns using the "+" and
 -"-" filter rules (as introduced in the FILTER RULES section above).
 +You can include and exclude files by specifying patterns using the "+",
-+"-", "H", and "P" filter rules (as introduced in the FILTER RULES section
-+above).
-+Note that the "H" (hide) rule is just a more intuitive way to specify a "-"
-+rule with an "s" modifier (a sender-only exclusion) and "P" (protect) is
-+just a more intuitive way to specify a "-" rule with an "r" modifier (a
-+receiver-only exclusion).  See the modifiers below for more information.
++"-", etc. filter rules (as introduced in the FILTER RULES section above).
  The include/exclude rules each specify a pattern that is matched against
  the names of the files that are going to be transferred.  These patterns
-@@ -1402,7 +1414,9 @@ itemize(
-   specified to turn off the parsing of prefixes).
-   it() You may also specify any of the modifiers for "+" or "-" to have the
-   rules that are read-in default to having that option set.  For instance,
--  ".-/_.excl" would treat the contents of .excl as absolute-path excludes.
-+  ".-/_.excl" would treat the contents of .excl as absolute-path excludes,
-+  while ":s_.filt" and ":Cs" would each make all their per-directory
-+  rules apply only on the server side.
+ can take several forms:
+@@ -1407,7 +1416,9 @@ itemize(
+   it() You may also specify any of the modifiers for the "+" or "-" rules
+   (below) in order  to have the rules that are read-in from the file
+   default to having that modifier set.  For instance, "merge,-/_.excl" would
+-  treat the contents of .excl as absolute-path excludes.
++  treat the contents of .excl as absolute-path excludes,
++  while "dir-merge,s_.filt" and ":sC" would each make all their
++  per-directory rules apply only on the server side.
  )
  
  The following modifiers are accepted after a "+" or "-":
-@@ -1418,6 +1432,16 @@ itemize(
+@@ -1423,6 +1434,16 @@ itemize(
    it() A bf(C) is used to indicate that all the global CVS-exclude rules
    should be inserted as excludes in place of the "-C".  No arg should
    follow.