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
Updated the --max-delete docs.
[rsync/rsync.git]
/
receiver.c
diff --git
a/receiver.c
b/receiver.c
index
21528a7
..
9866648
100644
(file)
--- a/
receiver.c
+++ b/
receiver.c
@@
-6,8
+6,9
@@
* Copyright (C) 2003-2007 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* Copyright (C) 2003-2007 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-15,8
+16,7
@@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ * with this program; if not, visit the http://fsf.org website.
*/
#include "rsync.h"
*/
#include "rsync.h"
@@
-54,7
+54,7
@@
extern struct stats stats;
extern char *tmpdir;
extern char *partial_dir;
extern char *basis_dir[];
extern char *tmpdir;
extern char *partial_dir;
extern char *basis_dir[];
-extern struct file_list *cur_flist, *first_flist;
+extern struct file_list *cur_flist, *first_flist
, *dir_flist
;
extern struct filter_list_struct server_filter_list;
static struct bitbag *delayed_bits = NULL;
extern struct filter_list_struct server_filter_list;
static struct bitbag *delayed_bits = NULL;
@@
-321,9
+321,9
@@
static int get_next_gen_ndx(int fd, int next_gen_ndx, int desired_ndx)
next_gen_ndx = read_int(fd);
if (next_gen_ndx == -1) {
if (inc_recurse)
next_gen_ndx = read_int(fd);
if (next_gen_ndx == -1) {
if (inc_recurse)
- next_gen_ndx = first_flist->prev->
count
+ first_flist->prev->ndx_start;
+ next_gen_ndx = first_flist->prev->
used
+ first_flist->prev->ndx_start;
else
else
- next_gen_ndx = cur_flist->
count
;
+ next_gen_ndx = cur_flist->
used
;
}
}
return next_gen_ndx;
}
}
return next_gen_ndx;
@@
-357,10
+357,10
@@
int recv_files(int f_in, char *local_name)
int ndx, recv_ok;
if (verbose > 2)
int ndx, recv_ok;
if (verbose > 2)
- rprintf(FINFO, "recv_files(%d) starting\n", cur_flist->
count
);
+ rprintf(FINFO, "recv_files(%d) starting\n", cur_flist->
used
);
if (delay_updates)
if (delay_updates)
- delayed_bits = bitbag_create(cur_flist->
count
+ 1);
+ delayed_bits = bitbag_create(cur_flist->
used
+ 1);
updating_basis = inplace;
updating_basis = inplace;
@@
-378,8
+378,8
@@
int recv_files(int f_in, char *local_name)
}
if (read_batch && cur_flist) {
int high = inc_recurse
}
if (read_batch && cur_flist) {
int high = inc_recurse
- ? first_flist->prev->
count
+ first_flist->prev->ndx_start
- : cur_flist->
count
;
+ ? first_flist->prev->
used
+ first_flist->prev->ndx_start
+ : cur_flist->
used
;
get_next_gen_ndx(batch_gen_fd, next_gen_ndx, high);
next_gen_ndx = -1;
}
get_next_gen_ndx(batch_gen_fd, next_gen_ndx, high);
next_gen_ndx = -1;
}
@@
-389,11
+389,14
@@
int recv_files(int f_in, char *local_name)
rprintf(FINFO, "recv_files phase=%d\n", phase);
if (phase == 2 && delay_updates)
handle_delayed_updates(local_name);
rprintf(FINFO, "recv_files phase=%d\n", phase);
if (phase == 2 && delay_updates)
handle_delayed_updates(local_name);
- send_msg(MSG_DONE, "", 0);
+ send_msg(MSG_DONE, "", 0
, 0
);
continue;
}
continue;
}
- file = cur_flist->files[ndx - cur_flist->ndx_start];
+ if (ndx - cur_flist->ndx_start >= 0)
+ file = cur_flist->files[ndx - cur_flist->ndx_start];
+ else
+ file = dir_flist->files[cur_flist->parent_ndx];
fname = local_name ? local_name : f_name(file, fbuf);
if (verbose > 2)
fname = local_name ? local_name : f_name(file, fbuf);
if (verbose > 2)
@@
-470,6
+473,8
@@
int recv_files(int f_in, char *local_name)
"(Skipping batched update for \"%s\")\n",
fname);
discard_receive_data(f_in, F_LENGTH(file));
"(Skipping batched update for \"%s\")\n",
fname);
discard_receive_data(f_in, F_LENGTH(file));
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
next_gen_ndx = -1;
continue;
}
next_gen_ndx = -1;
@@
-553,6
+558,8
@@
int recv_files(int f_in, char *local_name)
full_fname(fnamecmp));
discard_receive_data(f_in, F_LENGTH(file));
close(fd1);
full_fname(fnamecmp));
discard_receive_data(f_in, F_LENGTH(file));
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
continue;
}
@@
-566,6
+573,8
@@
int recv_files(int f_in, char *local_name)
full_fname(fnamecmp));
discard_receive_data(f_in, F_LENGTH(file));
close(fd1);
full_fname(fnamecmp));
discard_receive_data(f_in, F_LENGTH(file));
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
continue;
}
@@
-599,6
+608,8
@@
int recv_files(int f_in, char *local_name)
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
} else {
continue;
}
} else {
@@
-606,6
+617,8
@@
int recv_files(int f_in, char *local_name)
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
continue;
}
@@
-632,6
+645,8
@@
int recv_files(int f_in, char *local_name)
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
discard_receive_data(f_in, F_LENGTH(file));
if (fd1 != -1)
close(fd1);
+ if (inc_recurse)
+ send_msg_int(MSG_NO_SEND, ndx);
continue;
}
continue;
}