make proto
---- orig/generator.c 2005-02-15 20:40:53
+--- orig/generator.c 2005-02-16 15:35:52
+++ generator.c 2005-02-15 21:33:51
@@ -38,6 +38,7 @@ extern int preserve_gid;
extern int preserve_times;
extern int update_only;
extern int opt_ignore_existing;
extern int inplace;
-@@ -524,6 +525,11 @@ static void recv_generator(char *fname,
- itemize_changes ? "" : safe_fname(fname),
- safe_fname(file->u.link));
+@@ -510,6 +511,11 @@ static void recv_generator(char *fname,
+ rprintf(FINFO, "%s -> %s\n", safe_fname(fname),
+ safe_fname(file->u.link));
}
+ if (remove_sent_files && !dry_run) {
+ char numbuf[4];
if (argc == 0)
list_only |= 1;
---- orig/options.c 2005-02-15 21:14:55
+--- orig/options.c 2005-02-16 15:35:53
+++ options.c 2005-02-15 21:33:52
@@ -59,6 +59,7 @@ int delete_during = 0;
int delete_before = 0;
int max_delete = 0;
OFF_T max_size = 0;
int ignore_errors = 0;
-@@ -285,6 +287,7 @@ void usage(enum logcode F)
+@@ -286,6 +288,7 @@ void usage(enum logcode F)
rprintf(F," --rsync-path=PATH specify path to rsync on the remote machine\n");
rprintf(F," --existing only update files that already exist on receiver\n");
rprintf(F," --ignore-existing ignore files that already exist on receiving side\n");
rprintf(F," --del an alias for --delete-during\n");
rprintf(F," --delete delete files that don't exist on the sending side\n");
rprintf(F," --delete-before receiver deletes before transfer (default)\n");
-@@ -368,6 +371,7 @@ static struct poptOption long_options[]
+@@ -369,6 +372,7 @@ static struct poptOption long_options[]
{"delete-during", 0, POPT_ARG_NONE, &delete_during, 0, 0, 0 },
{"delete-after", 0, POPT_ARG_NONE, &delete_after, 0, 0, 0 },
{"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 },
-@@ -968,6 +972,14 @@ int parse_arguments(int *argc, const cha
+@@ -969,6 +973,17 @@ int parse_arguments(int *argc, const cha
return 0;
}
+ if (remove_sent_files) {
++ /* We only want to infer this refusal of --remove-sent-files
++ * via the refusal of "delete", not any of the "delete-FOO"
++ * options. */
+ if (refused_delete && am_sender) {
+ create_refuse_error(refused_delete);
+ return 0;
*argv = poptGetArgs(pc);
*argc = count_args(*argv);
-@@ -1400,6 +1412,9 @@ void server_options(char **args,int *arg
+@@ -1411,6 +1426,9 @@ void server_options(char **args,int *arg
if (fuzzy_basis && am_sender)
args[ac++] = "--fuzzy";
*argc = ac;
return;
---- orig/receiver.c 2005-02-15 19:27:05
+--- orig/receiver.c 2005-02-16 15:35:53
+++ receiver.c 2005-02-15 21:33:52
-@@ -42,6 +42,7 @@ extern int basis_dir_cnt;
+@@ -43,6 +43,7 @@ extern int basis_dir_cnt;
extern int make_backups;
extern int do_progress;
extern int cleanup_got_literal;
extern int module_id;
extern int ignore_errors;
extern int orig_umask;
-@@ -307,7 +308,7 @@ int recv_files(int f_in, struct file_lis
+@@ -310,7 +311,7 @@ int recv_files(int f_in, struct file_lis
char *fname, fbuf[MAXPATHLEN];
char template[MAXPATHLEN];
char fnametmp[MAXPATHLEN];
char fnamecmpbuf[MAXPATHLEN];
uchar *delayed_bits = NULL;
struct file_struct *file;
-@@ -569,7 +570,12 @@ int recv_files(int f_in, struct file_lis
+@@ -588,7 +589,12 @@ int recv_files(int f_in, struct file_lis
cleanup_disable();
int msgtype = csum_length == SUM_LENGTH || read_batch ?
FERROR : FINFO;
if (msgtype == FERROR || verbose) {
-@@ -593,9 +599,8 @@ int recv_files(int f_in, struct file_lis
+@@ -612,9 +618,8 @@ int recv_files(int f_in, struct file_lis
keptstr, redostr);
}
if (csum_length != SUM_LENGTH) {
}
}
}
---- orig/rsync.h 2005-02-15 19:27:05
-+++ rsync.h 2005-02-15 21:33:53
-@@ -62,6 +62,7 @@
- #define FLAG_MOUNT_POINT (1<<2) /* sender only */
- #define FLAG_NO_FUZZY (1<<2) /* generator only */
- #define FLAG_DEL_HERE (1<<3) /* receiver/generator */
-+#define FLAG_SENT (1<<3) /* sender only */
-
- /* update this if you make incompatible changes */
- #define PROTOCOL_VERSION 29
-@@ -144,6 +145,7 @@ enum logcode { FERROR=1, FINFO=2, FLOG=3
- /* Messages types that are sent over the message channel. The logcode
- * values must all be present here with identical numbers. */
- enum msgcode {
-+ MSG_SUCCESS=6, /* successfully updated indicated flist index */
- MSG_DONE=5, /* current phase is done */
- MSG_REDO=4, /* reprocess indicated flist index */
- MSG_ERROR=FERROR, MSG_INFO=FINFO, MSG_LOG=FLOG, /* remote logging */
---- orig/rsync.yo 2005-02-15 20:42:04
+--- orig/rsync.yo 2005-02-16 15:35:54
+++ rsync.yo 2005-02-15 21:33:55
@@ -332,6 +332,7 @@ to the detailed description below for a
--rsync-path=PATH specify path to rsync on the remote machine
dit(bf(--delete)) This tells rsync to delete extraneous files from the
receiving side (ones that aren't on the sending side), but only for the
directories that are being synchronized. You must have asked rsync to
---- orig/rsyncd.conf.yo 2005-02-11 10:53:15
+--- orig/rsyncd.conf.yo 2005-02-16 15:35:54
+++ rsyncd.conf.yo 2005-02-15 21:33:55
-@@ -411,6 +411,10 @@ quote(tt( refuse options = c delete))
+@@ -443,6 +443,10 @@ quote(tt( refuse options = c delete))
The reason the above refuses all delete options is that the options imply
bf(--delete), and implied options are refused just like explicit options.
When an option is refused, the server prints an error message and exits.
To prevent all compression, you can use "dont compress = *" (see below)
---- orig/sender.c 2005-02-15 19:27:05
+--- orig/sender.c 2005-02-16 15:35:54
+++ sender.c 2005-02-15 21:33:55
-@@ -27,6 +27,7 @@ extern int io_error;
+@@ -28,6 +28,7 @@ extern int io_error;
extern int dry_run;
extern int am_server;
extern int am_daemon;
extern int protocol_version;
extern int updating_basis_file;
extern int make_backups;
-@@ -95,7 +96,32 @@ static struct sum_struct *receive_sums(i
+@@ -98,7 +99,32 @@ static struct sum_struct *receive_sums(i
return s;
}
+ return;
+
+ file = the_flist->files[i];
-+ /* The generator can tell us about symlinks we didn't send. */
++ /* The generator might tell us about symlinks we didn't send. */
+ if (!(file->flags & FLAG_SENT) && !S_ISLNK(file->mode))
-+ return; /* We didn't send it -- impossible! */
++ return;
+ if (file->dir.root) {
+ offset = stringjoin(fname, sizeof fname,
+ file->dir.root, "/", NULL);
void send_files(struct file_list *flist, int f_out, int f_in)
{
-@@ -114,6 +140,8 @@ void send_files(struct file_list *flist,
+@@ -117,6 +143,8 @@ void send_files(struct file_list *flist,
if (verbose > 2)
rprintf(FINFO, "send_files starting\n");
while (1) {
unsigned int offset;
-@@ -256,6 +284,9 @@ void send_files(struct file_list *flist,
+@@ -281,6 +309,9 @@ void send_files(struct file_list *flist,
rprintf(FINFO, "sender finished %s\n",
safe_fname(fname));
}