log_init();
---- orig/exclude.c 2004-08-10 18:17:01
+--- orig/exclude.c 2004-09-22 08:47:31
+++ exclude.c 2004-08-13 07:40:08
@@ -30,13 +30,69 @@ extern int verbose;
extern int eol_nulls;
s += 2;
} else if (xflags & XFLG_DEF_INCLUDE)
mflags |= MATCHFLG_INCLUDE;
-@@ -273,6 +660,8 @@ static const char *get_exclude_tok(const
+@@ -275,6 +662,8 @@ static const char *get_exclude_tok(const
if (*p == '!' && len == 1 && !(xflags & XFLG_WORDS_ONLY))
mflags |= MATCHFLG_CLEAR_LIST;
*len_ptr = len;
*flag_ptr = mflags;
-@@ -284,7 +673,7 @@ void add_exclude(struct exclude_list_str
+@@ -286,7 +675,7 @@ void add_exclude(struct exclude_list_str
int xflags)
{
unsigned int pat_len, mflags;
if (!pattern)
return;
-@@ -292,9 +681,15 @@ void add_exclude(struct exclude_list_str
+@@ -294,9 +683,15 @@ void add_exclude(struct exclude_list_str
cp = pattern;
pat_len = 0;
while (1) {
if (mflags & MATCHFLG_CLEAR_LIST) {
if (verbose > 2) {
-@@ -306,13 +701,24 @@ void add_exclude(struct exclude_list_str
+@@ -308,13 +703,24 @@ void add_exclude(struct exclude_list_str
continue;
}
}
}
-@@ -321,7 +727,7 @@ void add_exclude_file(struct exclude_lis
+@@ -323,7 +729,7 @@ void add_exclude_file(struct exclude_lis
int xflags)
{
FILE *fp;
char *eob = line + sizeof line - 1;
int word_split = xflags & XFLG_WORD_SPLIT;
-@@ -342,6 +748,12 @@ void add_exclude_file(struct exclude_lis
+@@ -344,6 +750,12 @@ void add_exclude_file(struct exclude_lis
}
return;
}
while (1) {
char *s = line;
-@@ -402,7 +814,21 @@ void send_exclude_list(int f)
+@@ -404,7 +816,21 @@ void send_exclude_list(int f)
if (ent->match_flags & MATCHFLG_INCLUDE) {
write_int(f, l + 2);
write_buf(f, "+ ", 2);
write_int(f, l + 2);
write_buf(f, "- ", 2);
} else
-@@ -443,6 +869,7 @@ void add_cvs_excludes(void)
+@@ -445,6 +871,7 @@ void add_cvs_excludes(void)
char fname[MAXPATHLEN];
char *p;
if (link_stat(fname, &st, keep_dirlinks) != 0) {
if (f != -1) {
io_error |= IOERR_GENERAL;
---- orig/options.c 2004-09-20 05:10:48
+--- orig/options.c 2004-09-23 17:42:07
+++ options.c 2004-08-12 18:59:28
@@ -287,6 +287,7 @@ void usage(enum logcode F)
rprintf(F," --include=PATTERN don't exclude files matching PATTERN\n");
case 'P':
do_progress = 1;
keep_partial = 1;
---- orig/rsync.h 2004-08-03 15:41:32
-+++ rsync.h 2004-08-08 06:07:01
-@@ -108,6 +108,7 @@
- #define XFLG_DEF_INCLUDE (1<<1)
+--- orig/rsync.h 2004-09-22 08:47:31
++++ rsync.h 2004-09-22 08:48:53
+@@ -109,6 +109,7 @@
#define XFLG_WORDS_ONLY (1<<2)
#define XFLG_WORD_SPLIT (1<<3)
-+#define XFLG_ABS_PATH (1<<4)
+ #define XFLG_DIRECTORY (1<<4)
++#define XFLG_ABS_PATH (1<<5)
#define PERMS_REPORT (1<<0)
#define PERMS_SKIP_MTIME (1<<1)
-@@ -499,11 +500,18 @@ struct map_struct {
+@@ -500,11 +501,18 @@ struct map_struct {
#define MATCHFLG_INCLUDE (1<<4) /* this is an include, not an exclude */
#define MATCHFLG_DIRECTORY (1<<5) /* this matches only directories */
#define MATCHFLG_CLEAR_LIST (1<<6) /* this item is the "!" token */
};
struct exclude_list_struct {
---- orig/rsync.yo 2004-09-20 05:10:48
+--- orig/rsync.yo 2004-09-24 16:42:30
+++ rsync.yo 2004-08-13 00:43:31
@@ -364,6 +364,7 @@ verb(
--include=PATTERN don't exclude files matching PATTERN
-0 --from0 all file lists are delimited by nulls
--version print version number
--daemon run as an rsync daemon
-@@ -1025,24 +1026,32 @@ The exclude and include patterns specifi
+@@ -1037,24 +1038,32 @@ The exclude and include patterns specifi
selection of which files to transfer and which files to skip.
Rsync builds an ordered list of include/exclude options as specified on
Let's say that we want to match two source files, one with an absolute
path of "/home/me/foo/bar", and one with a path of "/home/you/bar/baz".
-@@ -1089,23 +1098,27 @@ because rsync did not descend through th
+@@ -1101,23 +1110,27 @@ because rsync did not descend through th
hierarchy.
Note also that the --include and --exclude options take one pattern
it() if the pattern ends with a / then it will only match a
directory, not a file, link, or device.
-@@ -1118,22 +1131,31 @@ itemize(
+@@ -1130,22 +1143,31 @@ itemize(
single asterisk pattern "*" will stop at slashes.
it() if the pattern contains a / (not counting a trailing /) or a "**"
)
The +/- rules are most useful in a list that was read from a file, allowing
-@@ -1180,8 +1202,160 @@ itemize(
+@@ -1192,8 +1214,160 @@ itemize(
it() --include "*/" --include "*.c" --exclude "*" would include all
directories and C source files
it() --include "foo/" --include "foo/bar.c" --exclude "*" would include