X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/3eabe6aa41f18e4e3ce4d9f5251ed25e5b82f017..0b52f94da727c4881b58c1cd6f2cf2a824e02b30:/generator.c diff --git a/generator.c b/generator.c index bf112758..4eb5325a 100644 --- a/generator.c +++ b/generator.c @@ -278,10 +278,10 @@ static enum delret delete_dir_contents(char *fname, int flags) } strlcpy(p, fp->basename, remainder); - if (F_OWNER(fp) == our_uid) + if (!uid_ndx || (uid_t)F_OWNER(fp) == our_uid) flags |= DEL_OWNED_BY_US; else - flags &= DEL_OWNED_BY_US; + flags &= ~DEL_OWNED_BY_US; /* Save stack by recursing to ourself directly. */ if (S_ISDIR(fp->mode)) { if (!am_root && !(fp->mode & S_IWUSR) && flags & DEL_OWNED_BY_US) @@ -503,7 +503,7 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev) } if (flist_find(cur_flist, fp) < 0) { int flags = DEL_RECURSE - | (F_OWNER(fp) == our_uid ? DEL_OWNED_BY_US : 0); + | (!uid_ndx || (uid_t)F_OWNER(fp) == our_uid ? DEL_OWNED_BY_US : 0); f_name(fp, delbuf); if (delete_during == 2) { if (!remember_delete(fp, delbuf, flags)) @@ -1229,11 +1229,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, excluded_dir = file; } skipping: - if (verbose) { - rprintf(FINFO, - "skipping server-excluded file \"%s\"\n", - fname); - } + rprintf(FERROR_XFER, + "skipping daemon-excluded file \"%s\"\n", + fname); return; } } @@ -1316,7 +1314,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx, return; } - if (statret == 0 && F_OWNER(file) == our_uid) + if (statret == 0 && sx.st.st_uid == our_uid) del_opts |= DEL_OWNED_BY_US; if (S_ISDIR(file->mode)) {