X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/16edf86595a5a990a942fa045dfb523dae1fe6cb..3f0211b63a6cdc4a2cecfd2a0dffeba172c86a47:/sender.c diff --git a/sender.c b/sender.c index 8a3a7d5c..33d5b947 100644 --- a/sender.c +++ b/sender.c @@ -6,8 +6,9 @@ * 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 @@ -15,8 +16,7 @@ * 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" @@ -44,7 +44,7 @@ extern int inplace; extern int batch_fd; extern int write_batch; extern struct stats stats; -extern struct file_list *cur_flist, *first_flist; +extern struct file_list *cur_flist, *first_flist, *dir_flist; /** * @file @@ -135,7 +135,7 @@ void successful_send(int ndx) } file = flist->files[ndx - flist->ndx_start]; - if (!push_flist_dir(F_ROOTDIR(file), -1)) + if (!push_pathname(F_PATHNAME(file), -1)) return; f_name(file, fname); @@ -211,14 +211,17 @@ void send_files(int f_in, int f_out) if (inc_recurse) send_extra_file_list(f_out, FILECNT_LOOKAHEAD); - file = cur_flist->files[ndx - cur_flist->ndx_start]; - if (F_ROOTDIR(file)) { - path = F_ROOTDIR(file); + 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]; + if (F_PATHNAME(file)) { + path = F_PATHNAME(file); slash = "/"; } else { path = slash = ""; } - if (!push_flist_dir(F_ROOTDIR(file), -1)) + if (!push_pathname(F_PATHNAME(file), -1)) continue; f_name(file, fname); @@ -286,13 +289,13 @@ void send_files(int f_in, int f_out) if (errno == ENOENT) { enum logcode c = am_daemon && protocol_version < 28 ? FERROR - : FINFO; + : FWARNING; io_error |= IOERR_VANISHED; rprintf(c, "file has vanished: %s\n", full_fname(fname)); } else { io_error |= IOERR_GENERAL; - rsyserr(FERROR, errno, + rsyserr(FERROR_XFER, errno, "send_files failed to open %s", full_fname(fname)); } @@ -346,7 +349,7 @@ void send_files(int f_in, int f_out) j = unmap_file(mbuf); if (j) { io_error |= IOERR_GENERAL; - rsyserr(FERROR, j, + rsyserr(FERROR_XFER, j, "read errors mapping %s", full_fname(fname)); }