Fix --remove-source-files sanity check w/--copy-links the right way.
[rsync.git] / acls.c
diff --git a/acls.c b/acls.c
index 46c5be5949e097954a32bb35069f9dd8c7abc908..7351ad687385ce744ea93481b4db89054fce219a 100644 (file)
--- a/acls.c
+++ b/acls.c
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 1996 Andrew Tridgell
  * Copyright (C) 1996 Paul Mackerras
- * Copyright (C) 2006-2013 Wayne Davison
+ * Copyright (C) 2006-2018 Wayne Davison
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -423,7 +423,7 @@ static BOOL pack_smb_acl(SMB_ACL_T *smb_acl, const rsync_acl *racl)
 #ifdef ACLS_NEED_MASK
        mask_bits = racl->mask_obj == NO_ENTRY ? racl->group_obj & ~NO_ENTRY : racl->mask_obj;
        COE( sys_acl_create_entry,(smb_acl, &entry) );
-       COE( sys_acl_set_info,(entry, SMB_ACL_MASK, mask_bits, NULL) );
+       COE( sys_acl_set_info,(entry, SMB_ACL_MASK, mask_bits, 0) );
 #else
        if (racl->mask_obj != NO_ENTRY) {
                COE( sys_acl_create_entry,(smb_acl, &entry) );
@@ -560,7 +560,8 @@ int get_acl(const char *fname, stat_x *sxp)
                if (!preserve_devices)
 #endif
                        return 0;
-       }
+       } else if (IS_MISSING_FILE(sxp->st))
+               return 0;
 
        if (get_rsync_acl(fname, sxp->acc_acl, SMB_ACL_TYPE_ACCESS,
                          sxp->st.st_mode) < 0) {
@@ -1116,14 +1117,12 @@ int default_perms_for_dir(const char *dir)
                case ENOSYS:
                        /* No ACLs are available. */
                        break;
-               case ENOENT:
-                       if (dry_run) {
+               default:
+                       if (dry_run && errno == ENOENT) {
                                /* We're doing a dry run, so the containing directory
                                 * wasn't actually created.  Don't worry about it. */
                                break;
                        }
-                       /* Otherwise fall through. */
-               default:
                        rprintf(FWARNING,
                                "default_perms_for_dir: sys_acl_get_file(%s, %s): %s, falling back on umask\n",
                                dir, str_acl_type(SMB_ACL_TYPE_DEFAULT), strerror(errno));