From f8949e7647748c5841babfd969ed837bed70fea6 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sun, 30 Mar 2008 08:05:42 -0700 Subject: [PATCH] Fixed a path-exclusion glitch when checking more than one arg. --- flist.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/flist.c b/flist.c index 2c1094b0..f8e809a6 100644 --- a/flist.c +++ b/flist.c @@ -242,10 +242,10 @@ static inline int is_daemon_excluded(const char *fname, int is_dir) return 0; } -static inline int path_is_daemon_excluded(char *path, int ignore_filename) +static inline int path_is_daemon_excluded(const char *path, int ignore_filename) { - if (daemon_filter_list.head && path) { - char *slash = path; + if (daemon_filter_list.head) { + char *slash = (char*)path; while ((slash = strchr(slash+1, '/')) != NULL) { int ret; @@ -353,10 +353,9 @@ int push_pathname(const char *dir, int len) exit_cleanup(RERR_FILESELECT); } - if (dir && !push_dir(dir, 0)) { + if (dir && (path_is_daemon_excluded(dir, 0) || !push_dir(dir, 0))) { io_error |= IOERR_GENERAL; - rsyserr(FERROR, errno, "push_dir %s failed in %s", - full_fname(dir), curr_dir); + rsyserr(FERROR, errno, "push_dir %s failed", full_fname(dir)); return 0; } @@ -1871,8 +1870,8 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) disable_buffering = io_start_buffering_out(f); if (filesfrom_fd >= 0) { if (argv[0] && !push_dir(argv[0], 0)) { - rsyserr(FERROR_XFER, errno, "push_dir %s failed in %s", - full_fname(argv[0]), curr_dir); + rsyserr(FERROR_XFER, errno, "push_dir %s failed", + full_fname(argv[0])); exit_cleanup(RERR_FILESELECT); } use_ff_fd = 1; @@ -1995,12 +1994,6 @@ struct file_list *send_file_list(int f, int argc, char *argv[]) dirlen = dir ? strlen(dir) : 0; if (dirlen != lastdir_len || memcmp(lastdir, dir, dirlen) != 0) { - if (path_is_daemon_excluded(dir, 0)) { - io_error |= IOERR_GENERAL; - rsyserr(FERROR, errno, "push_dir %s failed in %s", - full_fname(dir), curr_dir); - continue; - } if (!push_pathname(dir ? strdup(dir) : NULL, dirlen)) continue; lastdir = pathname; -- 2.34.1