Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
We need VA_COPY() defined more. Fix dangling #endif.
[rsync/rsync.git]
/
acls.c
diff --git
a/acls.c
b/acls.c
index
ef2751c
..
35734bb
100644
(file)
--- a/
acls.c
+++ b/
acls.c
@@
-495,9
+495,15
@@
static int get_rsync_acl(const char *fname, rsync_acl *racl,
}
racl->user_obj = IVAL(buf, 0);
}
racl->user_obj = IVAL(buf, 0);
+ if (racl->user_obj == NO_ENTRY)
+ racl->user_obj = (mode >> 6) & 7;
racl->group_obj = IVAL(buf, 4);
racl->group_obj = IVAL(buf, 4);
+ if (racl->group_obj == NO_ENTRY)
+ racl->group_obj = (mode >> 3) & 7;
racl->mask_obj = IVAL(buf, 8);
racl->other_obj = IVAL(buf, 12);
racl->mask_obj = IVAL(buf, 8);
racl->other_obj = IVAL(buf, 12);
+ if (racl->other_obj == NO_ENTRY)
+ racl->other_obj = mode & 7;
if (cnt) {
char *bp = buf + 4*4;
if (cnt) {
char *bp = buf + 4*4;
@@
-589,9
+595,9
@@
static void send_ida_entries(int f, const ida_entries *idal)
const char *name;
if (ida->access & NAME_IS_USER) {
xbits |= XFLAG_NAME_IS_USER;
const char *name;
if (ida->access & NAME_IS_USER) {
xbits |= XFLAG_NAME_IS_USER;
- name = add_uid(ida->id);
+ name =
numeric_ids ? NULL :
add_uid(ida->id);
} else
} else
- name = add_gid(ida->id);
+ name =
numeric_ids ? NULL :
add_gid(ida->id);
write_varint(f, ida->id);
if (inc_recurse && name) {
int len = strlen(name);
write_varint(f, ida->id);
if (inc_recurse && name) {
int len = strlen(name);
@@
-1101,6
+1107,9
@@
int default_perms_for_dir(const char *dir)
if (sacl == NULL) {
/* Couldn't get an ACL. Darn. */
switch (errno) {
if (sacl == NULL) {
/* Couldn't get an ACL. Darn. */
switch (errno) {
+ case EINVAL:
+ /* If SMB_ACL_TYPE_DEFAULT isn't valid, then the ACLs must be non-POSIX. */
+ break;
#ifdef ENOTSUP
case ENOTSUP:
#endif
#ifdef ENOTSUP
case ENOTSUP:
#endif