Fixed a problem with how the daemon filters deal with
authorWayne Davison <wayned@samba.org>
Wed, 16 Apr 2008 16:32:22 +0000 (09:32 -0700)
committerWayne Davison <wayned@samba.org>
Wed, 16 Apr 2008 16:32:22 +0000 (09:32 -0700)
a destination directory with a trailing slash.

main.c

diff --git a/main.c b/main.c
index f08d359..5fba5e6 100644 (file)
--- a/main.c
+++ b/main.c
@@ -507,12 +507,20 @@ static char *get_local_name(struct file_list *flist, char *dest_path)
        if (!dest_path || list_only)
                return NULL;
 
-       if (daemon_filter_list.head
-        && (check_filter(&daemon_filter_list, FLOG, dest_path, 0 != 0) < 0
-         || check_filter(&daemon_filter_list, FLOG, dest_path, 1 != 0) < 0)) {
-               rprintf(FERROR, "skipping daemon-excluded destination \"%s\"\n",
-                       dest_path);
-               exit_cleanup(RERR_FILESELECT);
+       if (daemon_filter_list.head) {
+               char *slash = strrchr(dest_path, '/');
+               if (slash && slash[1] == '\0')
+                       *slash = '\0';
+               else
+                       slash = NULL;
+               if (check_filter(&daemon_filter_list, FLOG, dest_path, 0) < 0
+                || check_filter(&daemon_filter_list, FLOG, dest_path, 1) < 0) {
+                       rprintf(FERROR, "skipping daemon-excluded destination \"%s\"\n",
+                               dest_path);
+                       exit_cleanup(RERR_FILESELECT);
+               }
+               if (slash)
+                       *slash = '/';
        }
 
        /* See what currently exists at the destination. */