}
}
+void write_ndx_and_attrs(int f_out, int ndx, int iflags,
+ uchar fnamecmp_type, char *buf, int len)
+{
+ write_int(f_out, ndx);
+ if (protocol_version < 29)
+ return;
+ write_shortint(f_out, iflags);
+ if (iflags & ITEM_BASIS_TYPE_FOLLOWS)
+ write_byte(f_out, fnamecmp_type);
+ if (iflags & ITEM_XNAME_FOLLOWS)
+ write_vstring(f_out, buf, len);
+}
+
void send_files(struct file_list *flist, int f_out, int f_in)
{
int fd = -1;
unsigned int offset;
i = read_int(f_in);
- if (i == -1) {
+ if (i == NDX_DONE) {
if (++phase > max_phase)
break;
csum_length = SUM_LENGTH;
if (verbose > 2)
rprintf(FINFO, "send_files phase=%d\n", phase);
- write_int(f_out, -1);
+ write_int(f_out, NDX_DONE);
/* For inplace: redo phase turns off the backup
* flag so that we do a regular inplace send. */
make_backups = 0;
stats.current_file_index = i;
stats.num_transferred_files++;
- stats.total_transferred_size += file->length;
+ stats.total_transferred_size += F_LENGTH(file);
if (!do_xfers) { /* log the transfer */
log_item(FCLIENT, file, &stats, iflags, NULL);
match_report();
- write_int(f_out, -1);
+ write_int(f_out, NDX_DONE);
}