The branch, master has been updated
       via  96be713f Update NEWS.
       via  13d8fc95 Avoid some extraneous parent-dir warnings
       via  f74473b1 Don't create a path for a file marked as missing.
       via  5eda68f1 Tweak include syntax.
       via  f6352073 Save the build into an artifact.
       via  64f7e893 Ignore *.exe files (for Cygwin builds).
       via  31556ec7 Use just $(...) instead of a mix of that and ${...}.
       via  9ad3f438 Make the daily build happen a few hours later.
      from  e9899dbd Add strict (no-skipping) checks and use them.

https://git.samba.org/?p=rsync.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 96be713fd23bb1c39a66a031596bfee04be7995b
Author: Wayne Davison <wa...@opencoder.net>
Date:   Tue Jul 21 12:35:45 2020 -0700

    Update NEWS.

commit 13d8fc9542a1441dd93bc2c4ca1348b1b2b1a9e8
Author: Wayne Davison <wa...@opencoder.net>
Date:   Tue Jul 21 11:42:32 2020 -0700

    Avoid some extraneous parent-dir warnings
    
    Don't complain about an absent parent dir if the current file is marked
    as missing and there is a marked-as-missing entry for the parent dir.

commit f74473b15141416be399018b019340c82d3657ea
Author: Wayne Davison <wa...@opencoder.net>
Date:   Tue Jul 21 11:22:24 2020 -0700

    Don't create a path for a file marked as missing.

commit 5eda68f11bf6efe782cca60a2415191f4532c3b5
Author: Wayne Davison <wa...@opencoder.net>
Date:   Mon Jul 20 18:44:37 2020 -0700

    Tweak include syntax.

commit f63520734708d98573aa9269808985d206684e6e
Author: Wayne Davison <wa...@opencoder.net>
Date:   Mon Jul 20 14:43:28 2020 -0700

    Save the build into an artifact.

commit 64f7e893f3b133b2c340b21e1a32f6fec2b06a1f
Author: Wayne Davison <wa...@opencoder.net>
Date:   Mon Jul 20 14:43:06 2020 -0700

    Ignore *.exe files (for Cygwin builds).

commit 31556ec7a8f7dd781f8ac29ffe5f517af09778e0
Author: Wayne Davison <wa...@opencoder.net>
Date:   Mon Jul 20 14:42:13 2020 -0700

    Use just $(...) instead of a mix of that and ${...}.

commit 9ad3f4385f055e2a9abbde0058a92eef169c6699
Author: Wayne Davison <wa...@opencoder.net>
Date:   Sat Jul 18 23:17:25 2020 -0700

    Make the daily build happen a few hours later.

-----------------------------------------------------------------------

Summary of changes:
 .github/workflows/build.yml | 34 ++++++++++++++++++++++++++++++++--
 .gitignore                  |  1 +
 Makefile.in                 | 22 +++++++++++-----------
 NEWS.md                     |  6 +++++-
 checksum.c                  |  2 +-
 generator.c                 | 15 ++++++++++-----
 6 files changed, 60 insertions(+), 20 deletions(-)


Changeset truncated at 500 lines:

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 182fa6c9..812171dc 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -6,11 +6,11 @@ on:
   pull_request:
     branches: [ master ]
   schedule:
-    - cron: '42 5 * * *'
+    - cron: '42 8 * * *'
 
 jobs:
 
-  linux-build:
+  ubuntu-build:
     runs-on: ubuntu-20.04
     steps:
     - uses: actions/checkout@v2
@@ -34,6 +34,16 @@ jobs:
       run: sudo make strict_check29
     - name: ssl file list
       run: rsync-ssl --no-motd download.samba.org::rsyncftp/ || true
+    - name: save artifact
+      uses: actions/upload-artifact@v2
+      with:
+        name: ubuntu-bin
+        path: |
+          rsync
+          rsync-ssl
+          rsync.1
+          rsync-ssl.1
+          rsyncd.conf.5
 
   macos-build:
     runs-on: macos-latest
@@ -56,6 +66,16 @@ jobs:
       run: sudo make check
     - name: ssl file list
       run: rsync-ssl --no-motd download.samba.org::rsyncftp/ || true
+    - name: save artifact
+      uses: actions/upload-artifact@v2
+      with:
+        name: macos-bin
+        path: |
+          rsync
+          rsync-ssl
+          rsync.1
+          rsync-ssl.1
+          rsyncd.conf.5
 
   cygwin-build:
     runs-on: windows-latest
@@ -81,3 +101,13 @@ jobs:
       run: bash -c 'make check'
     - name: ssl file list
       run: bash -c 'PATH="/usr/local/bin:$PATH" rsync-ssl --no-motd 
download.samba.org::rsyncftp/ || true'
+    - name: save artifact
+      uses: actions/upload-artifact@v2
+      with:
+        name: cygwin-bin
+        path: |
+          rsync.exe
+          rsync-ssl.exe
+          rsync.1
+          rsync-ssl.1
+          rsyncd.conf.5
diff --git a/.gitignore b/.gitignore
index b8e90ca4..6fb512ee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,3 +53,4 @@ aclocal.m4
 /build
 /auto-build-save
 .deps
+/*.exe
diff --git a/Makefile.in b/Makefile.in
index 07479ca2..513b2f8c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -72,23 +72,23 @@ all: Makefile rsync$(EXEEXT) stunnel-rsyncd.conf @MAKE_MAN@
 
 .PHONY: install
 install: all
-       -${MKDIR_P} ${DESTDIR}${bindir}
-       ${INSTALLCMD} ${INSTALL_STRIP} -m 755 rsync$(EXEEXT) ${DESTDIR}${bindir}
-       ${INSTALLCMD} -m 755 $(srcdir)/rsync-ssl ${DESTDIR}${bindir}
-       -${MKDIR_P} ${DESTDIR}${mandir}/man1
-       -${MKDIR_P} ${DESTDIR}${mandir}/man5
-       if test -f rsync.1; then ${INSTALLMAN} -m 644 rsync.1 
${DESTDIR}${mandir}/man1; fi
-       if test -f rsync-ssl.1; then ${INSTALLMAN} -m 644 rsync-ssl.1 
${DESTDIR}${mandir}/man1; fi
-       if test -f rsyncd.conf.5; then ${INSTALLMAN} -m 644 rsyncd.conf.5 
${DESTDIR}${mandir}/man5; fi
+       -$(MKDIR_P) $(DESTDIR)$(bindir)
+       $(INSTALLCMD) $(INSTALL_STRIP) -m 755 rsync$(EXEEXT) $(DESTDIR)$(bindir)
+       $(INSTALLCMD) -m 755 $(srcdir)/rsync-ssl $(DESTDIR)$(bindir)
+       -$(MKDIR_P) $(DESTDIR)$(mandir)/man1
+       -$(MKDIR_P) $(DESTDIR)$(mandir)/man5
+       if test -f rsync.1; then $(INSTALLMAN) -m 644 rsync.1 
$(DESTDIR)$(mandir)/man1; fi
+       if test -f rsync-ssl.1; then $(INSTALLMAN) -m 644 rsync-ssl.1 
$(DESTDIR)$(mandir)/man1; fi
+       if test -f rsyncd.conf.5; then $(INSTALLMAN) -m 644 rsyncd.conf.5 
$(DESTDIR)$(mandir)/man5; fi
 
 install-ssl-daemon: stunnel-rsyncd.conf
-       -${MKDIR_P} ${DESTDIR}/etc/stunnel
-       ${INSTALLCMD} -m 644 stunnel-rsyncd.conf 
${DESTDIR}/etc/stunnel/rsyncd.conf
+       -$(MKDIR_P) $(DESTDIR)/etc/stunnel
+       $(INSTALLCMD) -m 644 stunnel-rsyncd.conf 
$(DESTDIR)/etc/stunnel/rsyncd.conf
        @if ! ls /etc/rsync-ssl/certs/server.* >/dev/null 2>/dev/null; then \
            echo "Note that you'll need to install the certificate used by 
/etc/stunnel/rsyncd.conf"; \
        fi
 
-install-all: install install-ssl-client install-ssl-daemon
+install-all: install install-ssl-daemon
 
 install-strip:
        $(MAKE) INSTALL_STRIP='-s' install
diff --git a/NEWS.md b/NEWS.md
index 6ab53861..3ae5f74c 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -15,6 +15,10 @@
  - Restored the ability to use --bwlimit=0 to specify no bandwidth limit.  (It
    was accidentally broken in 3.2.2.)
 
+ - Fix a bug when combining `--delete-missing-args` with `--no-implied-dirs` &
+   `-R` where rsync might create the destination path of a missing arg.  The
+   code also avoids some superfluous warnings for nested paths of removed args.
+
 ### ENHANCEMENTS:
 
  - Allow `--max-alloc=0` to specify no limit to the alloc sanity check.
@@ -33,7 +37,7 @@
    user & group names inside a chrooted daemon module.  This is based on the
    nameconverter patch with some improvements, including a tweak to the request
    protocol (so if you used this patch in the past, be sure to update your
-   converter script).
+   converter script to use newlines instead of null chars).
 
  - Added the ability to specify "@netgroup" names to the `hosts allow` and
    `hosts deny` daemon parameters.  This is a finalized version of the
diff --git a/checksum.c b/checksum.c
index 6dabfb08..1ed76828 100644
--- a/checksum.c
+++ b/checksum.c
@@ -29,7 +29,7 @@
 #include "rsync.h"
 
 #ifdef SUPPORT_XXHASH
-#include "xxhash.h"
+#include <xxhash.h>
 # if XXH_VERSION_NUMBER >= 800
 #  define SUPPORT_XXH3 1
 # endif
diff --git a/generator.c b/generator.c
index adb3307c..1648db1c 100644
--- a/generator.c
+++ b/generator.c
@@ -1277,20 +1277,25 @@ static void recv_generator(char *fname, struct 
file_struct *file, int ndx,
                         * this function was asked to process in the file list. 
*/
                        if (!inc_recurse
                         && (*dn != '.' || dn[1]) /* Avoid an issue with 
--relative and the "." dir. */
-                        && (!prior_dir_file || strcmp(dn, 
f_name(prior_dir_file, NULL)) != 0)
-                        && flist_find_name(cur_flist, dn, 1) < 0) {
+                        && (!prior_dir_file || strcmp(dn, 
f_name(prior_dir_file, NULL)) != 0)) {
+                               int ok = 0, j = flist_find_name(cur_flist, dn, 
-1);
+                               if (j >= 0) {
+                                       struct file_struct *f = 
cur_flist->sorted[j];
+                                       if (S_ISDIR(f->mode) || (missing_args 
== 2 && !file->mode && !f->mode))
+                                               ok = 1;
+                               }
                                /* The --delete-missing-args option can 
actually put invalid entries into
                                 * the file list, so if that option was 
specified, we'll just complain about
                                 * it and allow it. */
-                               if (missing_args == 2 && file->mode == 0)
+                               if (!ok && missing_args == 2 && file->mode == 0 
&& j < 0)
                                        rprintf(FERROR, "WARNING: parent dir is 
absent in the file list: %s\n", dn);
-                               else {
+                               else if (!ok) {
                                        rprintf(FERROR, "ABORTING due to 
invalid path from sender: %s/%s\n",
                                                dn, file->basename);
                                        exit_cleanup(RERR_PROTOCOL);
                                }
                        }
-                       if (relative_paths && !implied_dirs
+                       if (relative_paths && !implied_dirs && file->mode != 0
                         && do_stat(dn, &sx.st) < 0) {
                                if (dry_run)
                                        goto parent_is_dry_missing;


-- 
The rsync repository.

_______________________________________________
rsync-cvs mailing list
rsync-cvs@lists.samba.org
https://lists.samba.org/mailman/listinfo/rsync-cvs

Reply via email to