..wayne..
---- orig/clientserver.c 2005-01-01 21:11:00
+--- orig/clientserver.c 2005-01-22 22:48:52
+++ clientserver.c 2005-01-16 23:33:02
@@ -49,12 +49,14 @@ extern int no_detach;
extern int default_af_hint;
/**
* Run a client connected to an rsyncd. The alternative to this
* function for remote-shell connections is do_cmd().
-@@ -304,26 +306,33 @@ static int rsync_module(int f_in, int f_
+@@ -310,26 +312,33 @@ static int rsync_module(int f_in, int f_
/* TODO: Perhaps take a list of gids, and make them into the
* supplementary groups. */
log_init();
---- orig/exclude.c 2005-01-13 23:15:56
-+++ exclude.c 2005-01-17 05:55:59
+--- orig/exclude.c 2005-01-22 22:48:52
++++ exclude.c 2005-01-23 07:33:21
@@ -30,15 +30,68 @@ extern int verbose;
extern int eol_nulls;
extern int list_only;
while (1) {
char *s = line;
-@@ -388,7 +862,7 @@ void send_exclude_list(int f)
- * FIXME: This pattern shows up in the output of
- * report_exclude_result(), which is not ideal. */
- if (list_only && !recurse)
+@@ -386,7 +860,7 @@ void send_exclude_list(int f)
+ /* This is a complete hack - blame Rusty. FIXME!
+ * Remove this hack when older rsyncs (below 2.6.4) are gone. */
+ if (list_only == 1 && !recurse)
- add_exclude(&exclude_list, "/*/*", 0);
+ add_exclude(&exclude_list, "/*/*", XFLG_DEF_EXCLUDE);
for (ent = exclude_list.head; ent; ent = ent->next) {
unsigned int l;
-@@ -402,10 +876,34 @@ void send_exclude_list(int f)
+@@ -400,10 +874,34 @@ void send_exclude_list(int f)
p[l] = '\0';
}
write_int(f, l + 2);
write_buf(f, "- ", 2);
} else
-@@ -419,14 +917,15 @@ void send_exclude_list(int f)
+@@ -417,14 +915,15 @@ void send_exclude_list(int f)
void recv_exclude_list(int f)
{
}
}
-@@ -443,18 +942,18 @@ static char default_cvsignore[] =
+@@ -441,18 +940,18 @@ static char default_cvsignore[] =
void add_cvs_excludes(void)
{
- XFLG_WORD_SPLIT | XFLG_WORDS_ONLY);
+ add_exclude(&exclude_list, getenv("CVSIGNORE"), cvs_flags);
}
---- orig/flist.c 2005-01-21 00:35:26
+--- orig/flist.c 2005-01-22 22:48:52
+++ flist.c 2004-08-12 18:59:28
@@ -40,11 +40,10 @@ extern int module_id;
extern int ignore_errors;
}
}
-@@ -1002,6 +987,7 @@ static void send_directory(int f, struct
+@@ -1004,6 +989,7 @@ static void send_directory(int f, struct
struct dirent *di;
char fname[MAXPATHLEN];
unsigned int offset;
char *p;
d = opendir(dir);
-@@ -1025,18 +1011,7 @@ static void send_directory(int f, struct
+@@ -1027,18 +1013,7 @@ static void send_directory(int f, struct
offset++;
}
for (errno = 0, di = readdir(d); di; errno = 0, di = readdir(d)) {
char *dname = d_name(di);
-@@ -1057,6 +1032,8 @@ static void send_directory(int f, struct
+@@ -1060,6 +1035,8 @@ static void send_directory(int f, struct
rsyserr(FERROR, errno, "readdir(%s)", dir);
}
closedir(d);
}
-@@ -1076,6 +1053,7 @@ struct file_list *send_file_list(int f,
+@@ -1079,6 +1056,7 @@ struct file_list *send_file_list(int f,
char *p, *dir, olddir[sizeof curr_dir];
char lastpath[MAXPATHLEN] = "";
struct file_list *flist;
int64 start_write;
int use_ff_fd = 0;
-@@ -1096,6 +1074,10 @@ struct file_list *send_file_list(int f,
+@@ -1099,6 +1077,10 @@ struct file_list *send_file_list(int f,
exit_cleanup(RERR_FILESELECT);
}
use_ff_fd = 1;
}
}
-@@ -1126,6 +1108,15 @@ struct file_list *send_file_list(int f,
- }
- }
+@@ -1135,6 +1117,15 @@ struct file_list *send_file_list(int f,
+ } else if (recurse > 0)
+ recurse = 0;
+ if (need_first_push) {
+ if ((p = strrchr(fname, '/')) != NULL) {
FN_LOCAL_STRING(lp_exclude, exclude)
FN_LOCAL_STRING(lp_exclude_from, exclude_from)
FN_LOCAL_STRING(lp_include, include)
---- orig/options.c 2005-01-20 23:05:34
-+++ options.c 2005-01-16 23:34:15
-@@ -145,6 +145,7 @@ int list_only = 0;
+--- orig/options.c 2005-01-23 01:45:43
++++ options.c 2005-01-23 07:33:55
+@@ -146,6 +146,7 @@ int list_only = 0;
char *batch_name = NULL;
static int daemon_opt; /* sets am_daemon after option error-reporting */
static int modify_window_set;
static char *dest_option = NULL;
static char *max_size_arg;
-@@ -292,6 +293,9 @@ void usage(enum logcode F)
+@@ -294,6 +295,9 @@ void usage(enum logcode F)
rprintf(F," -P equivalent to --partial --progress\n");
rprintf(F," -z, --compress compress file data\n");
rprintf(F," -C, --cvs-exclude auto ignore files in the same way CVS does\n");
rprintf(F," --exclude=PATTERN exclude files matching PATTERN\n");
rprintf(F," --exclude-from=FILE exclude patterns listed in FILE\n");
rprintf(F," --include=PATTERN don't exclude files matching PATTERN\n");
-@@ -321,7 +325,7 @@ void usage(enum logcode F)
+@@ -323,7 +327,7 @@ void usage(enum logcode F)
}
enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
-- OPT_DELETE_AFTER, OPT_DELETE_EXCLUDED,
-+ OPT_FILTER, OPT_DELETE_AFTER, OPT_DELETE_EXCLUDED,
- OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST,
+- OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST,
++ OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_TIMEOUT, OPT_MAX_SIZE,
-@@ -344,6 +348,7 @@ static struct poptOption long_options[]
- {"delete-excluded", 0, POPT_ARG_NONE, 0, OPT_DELETE_EXCLUDED, 0, 0 },
+ OPT_REFUSED_BASE = 9000};
+@@ -345,6 +349,7 @@ static struct poptOption long_options[]
+ {"delete-excluded", 0, POPT_ARG_NONE, &delete_excluded, 0, 0, 0 },
{"force", 0, POPT_ARG_NONE, &force_delete, 0, 0, 0 },
{"numeric-ids", 0, POPT_ARG_NONE, &numeric_ids, 0, 0, 0 },
+ {"filter", 'f', POPT_ARG_STRING, 0, OPT_FILTER, 0, 0 },
{"exclude", 0, POPT_ARG_STRING, 0, OPT_EXCLUDE, 0, 0 },
{"include", 0, POPT_ARG_STRING, 0, OPT_INCLUDE, 0, 0 },
{"exclude-from", 0, POPT_ARG_STRING, 0, OPT_EXCLUDE_FROM, 0, 0 },
-@@ -394,6 +399,7 @@ static struct poptOption long_options[]
+@@ -397,6 +402,7 @@ static struct poptOption long_options[]
{"ignore-errors", 0, POPT_ARG_NONE, &ignore_errors, 0, 0, 0 },
{"blocking-io", 0, POPT_ARG_VAL, &blocking_io, 1, 0, 0 },
{"no-blocking-io", 0, POPT_ARG_VAL, &blocking_io, 0, 0, 0 },
{0, 'P', POPT_ARG_NONE, 0, 'P', 0, 0 },
{"port", 0, POPT_ARG_INT, &rsync_port, 0, 0, 0 },
{"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 },
-@@ -623,10 +629,15 @@ int parse_arguments(int *argc, const cha
- delete_mode = 1;
+@@ -618,10 +624,15 @@ int parse_arguments(int *argc, const cha
+ modify_window_set = 1;
break;
- case OPT_EXCLUDE:
case OPT_INCLUDE:
add_exclude(&exclude_list, poptGetOptArg(pc),
XFLG_DEF_INCLUDE);
-@@ -644,8 +655,8 @@ int parse_arguments(int *argc, const cha
+@@ -639,8 +650,8 @@ int parse_arguments(int *argc, const cha
goto options_rejected;
}
add_exclude_file(&exclude_list, arg, XFLG_FATAL_ERRORS
break;
case 'h':
-@@ -669,6 +680,19 @@ int parse_arguments(int *argc, const cha
+@@ -664,6 +675,19 @@ int parse_arguments(int *argc, const cha
am_sender = 1;
break;
};
struct exclude_list_struct {
---- orig/rsync.yo 2005-01-20 19:47:08
+--- orig/rsync.yo 2005-01-22 22:48:52
+++ rsync.yo 2005-01-21 19:56:38
@@ -361,6 +361,9 @@ verb(
-P equivalent to --partial --progress