Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
If --delay-updates is specified with --remove-sent-files, delay
[rsync/rsync.git]
/
receiver.c
diff --git
a/receiver.c
b/receiver.c
index
dbe03c8
..
719a58b
100644
(file)
--- a/
receiver.c
+++ b/
receiver.c
@@
-22,14
+22,14
@@
extern int verbose;
extern int dry_run;
extern int verbose;
extern int dry_run;
+extern int am_daemon;
+extern int am_server;
+extern int do_progress;
extern int log_before_transfer;
extern int log_format_has_i;
extern int daemon_log_format_has_i;
extern int log_before_transfer;
extern int log_format_has_i;
extern int daemon_log_format_has_i;
-extern int am_daemon;
-extern int am_server;
extern int delete_after;
extern int csum_length;
extern int delete_after;
extern int csum_length;
-extern struct stats stats;
extern int read_batch;
extern int batch_gen_fd;
extern int protocol_version;
extern int read_batch;
extern int batch_gen_fd;
extern int protocol_version;
@@
-38,13
+38,10
@@
extern int keep_dirlinks;
extern int preserve_hard_links;
extern int preserve_perms;
extern int io_error;
extern int preserve_hard_links;
extern int preserve_perms;
extern int io_error;
-extern char *tmpdir;
-extern char *partial_dir;
-extern char *basis_dir[];
extern int basis_dir_cnt;
extern int make_backups;
extern int basis_dir_cnt;
extern int make_backups;
-extern int do_progress;
extern int cleanup_got_literal;
extern int cleanup_got_literal;
+extern int remove_sent_files;
extern int module_id;
extern int ignore_errors;
extern int orig_umask;
extern int module_id;
extern int ignore_errors;
extern int orig_umask;
@@
-52,7
+49,11
@@
extern int keep_partial;
extern int checksum_seed;
extern int inplace;
extern int delay_updates;
extern int checksum_seed;
extern int inplace;
extern int delay_updates;
+extern struct stats stats;
extern char *log_format;
extern char *log_format;
+extern char *tmpdir;
+extern char *partial_dir;
+extern char *basis_dir[];
extern struct filter_list_struct server_filter_list;
extern struct filter_list_struct server_filter_list;
@@
-312,7
+313,7
@@
int recv_files(int f_in, struct file_list *flist, char *local_name,
char *fname, fbuf[MAXPATHLEN];
char template[MAXPATHLEN];
char fnametmp[MAXPATHLEN];
char *fname, fbuf[MAXPATHLEN];
char template[MAXPATHLEN];
char fnametmp[MAXPATHLEN];
- char *fnamecmp, *partialptr;
+ char *fnamecmp, *partialptr
, numbuf[4]
;
char fnamecmpbuf[MAXPATHLEN];
uchar *delayed_bits = NULL;
struct file_struct *file;
char fnamecmpbuf[MAXPATHLEN];
uchar *delayed_bits = NULL;
struct file_struct *file;
@@
-595,7
+596,14
@@
int recv_files(int f_in, struct file_list *flist, char *local_name,
cleanup_disable();
cleanup_disable();
- if (!recv_ok) {
+ if (recv_ok) {
+ if (delay_updates && delayed_bits[i/8] & (1 << (i % 8)))
+ ;
+ else if (remove_sent_files) {
+ SIVAL(numbuf, 0, i);
+ send_msg(MSG_SUCCESS, numbuf, 4);
+ }
+ } else {
int msgtype = csum_length == SUM_LENGTH || read_batch ?
FERROR : FINFO;
if (msgtype == FERROR || verbose) {
int msgtype = csum_length == SUM_LENGTH || read_batch ?
FERROR : FINFO;
if (msgtype == FERROR || verbose) {
@@
-619,9
+627,8
@@
int recv_files(int f_in, struct file_list *flist, char *local_name,
keptstr, redostr);
}
if (csum_length != SUM_LENGTH) {
keptstr, redostr);
}
if (csum_length != SUM_LENGTH) {
- char buf[4];
- SIVAL(buf, 0, i);
- send_msg(MSG_REDO, buf, 4);
+ SIVAL(numbuf, 0, i);
+ send_msg(MSG_REDO, numbuf, 4);
}
}
}
}
}
}
@@
-649,6
+656,10
@@
int recv_files(int f_in, struct file_list *flist, char *local_name,
full_fname(fname),
safe_fname(partialptr));
} else {
full_fname(fname),
safe_fname(partialptr));
} else {
+ if (remove_sent_files) {
+ SIVAL(numbuf, 0, i);
+ send_msg(MSG_SUCCESS,numbuf,4);
+ }
handle_partial_dir(partialptr,
PDIR_DELETE);
}
handle_partial_dir(partialptr,
PDIR_DELETE);
}