int i;
struct file_struct *file;
int phase = 0;
+ extern struct stats stats;
+ struct stats initial_stats;
if (verbose > 2)
rprintf(FINFO,"send_files starting\n");
if (i < 0 || i >= flist->count) {
rprintf(FERROR,"Invalid file index %d (count=%d)\n",
i, flist->count);
- exit_cleanup(1);
+ exit_cleanup(RERR_PROTOCOL);
}
file = flist->files[i];
fname[0] = 0;
if (file->basedir) {
- strlcpy(fname,file->basedir,MAXPATHLEN-1);
+ strlcpy(fname,file->basedir,MAXPATHLEN);
if (strlen(fname) == MAXPATHLEN-1) {
io_error = 1;
rprintf(FERROR, "send_files failed on long-named directory %s\n",
fname);
return;
}
- strlcat(fname,"/",MAXPATHLEN-1);
+ strlcat(fname,"/",MAXPATHLEN);
offset = strlen(file->basedir)+1;
}
- strlcat(fname,f_name(file),MAXPATHLEN-strlen(fname));
+ strlcat(fname,f_name(file),MAXPATHLEN);
if (verbose > 2)
rprintf(FINFO,"send_files(%d,%s)\n",i,fname);
if (dry_run) {
- if (!am_server && verbose)
- rprintf(FINFO,"%s\n",fname);
+ if (!am_server) {
+ log_transfer(file, fname+offset);
+ }
write_int(f_out,i);
continue;
}
+ initial_stats = stats;
+
s = receive_sums(f_in);
if (!s) {
io_error = 1;
return;
}
- fd = open(fname,O_RDONLY);
+ fd = do_open(fname, O_RDONLY, 0);
if (fd == -1) {
io_error = 1;
rprintf(FERROR,"send_files failed to open %s: %s\n",
if (verbose > 2)
rprintf(FINFO,"send_files mapped %s of size %d\n",
fname,(int)st.st_size);
-
+
write_int(f_out,i);
write_int(f_out,s->count);
if (verbose > 2)
rprintf(FINFO,"calling match_sums %s\n",fname);
- if (!am_server && verbose)
- rprintf(FINFO,"%s\n",fname+offset);
+ if (!am_server) {
+ log_transfer(file, fname+offset);
+ }
+
+ set_compression(fname);
match_sums(f_out,s,buf,st.st_size);
-
+
+ log_send(file, &initial_stats);
+
if (buf) unmap_file(buf);
close(fd);