Matt McCutchen's Web Site
/
rsync
/
rsync-patches.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8db8e7d
)
Made the ACL-function callers check preserve_acls.
author
Wayne Davison
<wayned@samba.org>
Thu, 9 Mar 2006 17:14:36 +0000
(17:14 +0000)
committer
Wayne Davison
<wayned@samba.org>
Thu, 9 Mar 2006 17:14:36 +0000
(17:14 +0000)
acls.diff
patch
|
blob
|
blame
|
history
diff --git
a/acls.diff
b/acls.diff
index
09a05cd
..
0c0f519
100644
(file)
--- a/
acls.diff
+++ b/
acls.diff
@@
-32,7
+32,7
@@
ACLs to a non-ACL-supporting disk should complain.
popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
--- old/acls.c
+++ new/acls.c
popt_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
--- old/acls.c
+++ new/acls.c
-@@ -0,0 +1,12
33
@@
+@@ -0,0 +1,12
18
@@
+/* -*- c-file-style: "linux" -*-
+ Copyright (C) Andrew Tridgell 1996
+ Copyright (C) Paul Mackerras 1996
+/* -*- c-file-style: "linux" -*-
+ Copyright (C) Andrew Tridgell 1996
+ Copyright (C) Paul Mackerras 1996
@@
-59,7
+59,6
@@
ACLs to a non-ACL-supporting disk should complain.
+
+#ifdef SUPPORT_ACLS
+
+
+#ifdef SUPPORT_ACLS
+
-+extern int preserve_acls;
+extern int am_root;
+extern int dry_run;
+extern int orig_umask;
+extern int am_root;
+extern int dry_run;
+extern int orig_umask;
@@
-400,7
+399,7
@@
ACLs to a non-ACL-supporting disk should complain.
+ SMB_ACL_TYPE_T type;
+ rsync_acl *curr_racl;
+
+ SMB_ACL_TYPE_T type;
+ rsync_acl *curr_racl;
+
-+ if (
!preserve_acls ||
S_ISLNK(file->mode))
++ if (S_ISLNK(file->mode))
+ return 1;
+
+ curr_racl = &_curr_rsync_acls[0];
+ return 1;
+
+ curr_racl = &_curr_rsync_acls[0];
@@
-438,8
+437,9
@@
ACLs to a non-ACL-supporting disk should complain.
+ SMB_ACL_TYPE_T type;
+ rsync_acl *curr_racl;
+
+ SMB_ACL_TYPE_T type;
+ rsync_acl *curr_racl;
+
-+ if (
!preserve_acls ||
S_ISLNK(file->mode))
++ if (S_ISLNK(file->mode))
+ return;
+ return;
++
+ curr_racl = &_curr_rsync_acls[0];
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
+ curr_racl = &_curr_rsync_acls[0];
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
@@
-785,7
+785,7
@@
ACLs to a non-ACL-supporting disk should complain.
+ SMB_ACL_TYPE_T type;
+ char *fname;
+
+ SMB_ACL_TYPE_T type;
+ char *fname;
+
-+ if (
!preserve_acls ||
S_ISLNK(file->mode))
++ if (S_ISLNK(file->mode))
+ return;
+
+ fname = f_name(file, NULL);
+ return;
+
+ fname = f_name(file, NULL);
@@
-857,9
+857,6
@@
ACLs to a non-ACL-supporting disk should complain.
+{
+ SMB_ACL_TYPE_T type;
+
+{
+ SMB_ACL_TYPE_T type;
+
-+ if (!preserve_acls)
-+ return;
-+
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
+ file_acl_index_list *fileaclidx_list =
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
+ file_acl_index_list *fileaclidx_list =
@@
-906,9
+903,6
@@
ACLs to a non-ACL-supporting disk should complain.
+ SMB_ACL_TYPE_T type;
+ int ret = 0;
+
+ SMB_ACL_TYPE_T type;
+ int ret = 0;
+
-+ if (!preserve_acls)
-+ return 1;
-+
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
+ SMB_ACL_T sacl_orig, sacl_bak;
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
+ SMB_ACL_T sacl_orig, sacl_bak;
@@
-980,9
+974,6
@@
ACLs to a non-ACL-supporting disk should complain.
+ SMB_ACL_TYPE_T type;
+ SMB_ACL_T *sacl;
+
+ SMB_ACL_TYPE_T type;
+ SMB_ACL_T *sacl;
+
-+ if (!preserve_acls)
-+ return;
-+
+ backup_orig_file = file;
+ backup_orig_fname = orig;
+ backup_dest_fname = dest;
+ backup_orig_file = file;
+ backup_orig_fname = orig;
+ backup_dest_fname = dest;
@@
-1009,9
+1000,6
@@
ACLs to a non-ACL-supporting disk should complain.
+ SMB_ACL_T *sacl;
+ int ret = 0;
+
+ SMB_ACL_T *sacl;
+ int ret = 0;
+
-+ if (!preserve_acls)
-+ return 1;
-+
+ sacl = &_backup_sacl[0];
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
+ sacl = &_backup_sacl[0];
+ type = SMB_ACL_TYPE_ACCESS;
+ do {
@@
-1034,9
+1022,6
@@
ACLs to a non-ACL-supporting disk should complain.
+ SMB_ACL_TYPE_T type;
+ SMB_ACL_T *sacl;
+
+ SMB_ACL_TYPE_T type;
+ SMB_ACL_T *sacl;
+
-+ if (!preserve_acls)
-+ return;
-+
+ backup_orig_file = NULL;
+ backup_orig_fname = null_string;
+ backup_dest_fname = null_string;
+ backup_orig_file = NULL;
+ backup_orig_fname = null_string;
+ backup_dest_fname = null_string;
@@
-1058,7
+1043,7
@@
ACLs to a non-ACL-supporting disk should complain.
+ int unchanged = 1;
+ SMB_ACL_TYPE_T type;
+
+ int unchanged = 1;
+ SMB_ACL_TYPE_T type;
+
-+ if (dry_run ||
!preserve_acls ||
S_ISLNK(file->mode))
++ if (dry_run || S_ISLNK(file->mode))
+ return 1;
+
+ if (file == backup_orig_file) {
+ return 1;
+
+ if (file == backup_orig_file) {
@@
-1268,33
+1253,44
@@
ACLs to a non-ACL-supporting disk should complain.
+#endif /* SUPPORT_ACLS */
--- old/backup.c
+++ new/backup.c
+#endif /* SUPPORT_ACLS */
--- old/backup.c
+++ new/backup.c
-@@ -132,6 +132,9 @@ static int make_bak_dir(char *fullpath)
+@@ -28,6 +28,7 @@ extern char *backup_suffix;
+ extern char *backup_dir;
+
+ extern int am_root;
++extern int preserve_acls;
+ extern int preserve_devices;
+ extern int preserve_specials;
+ extern int preserve_links;
+@@ -132,6 +133,10 @@ static int make_bak_dir(char *fullpath)
} else {
do_lchown(fullpath, st.st_uid, st.st_gid);
do_chmod(fullpath, st.st_mode);
+#ifdef SUPPORT_ACLS
} else {
do_lchown(fullpath, st.st_uid, st.st_gid);
do_chmod(fullpath, st.st_mode);
+#ifdef SUPPORT_ACLS
-+ dup_acl(end, fullpath, st.st_mode);
++ if (preserve_acls)
++ dup_acl(end, fullpath, st.st_mode);
+#endif
}
}
*p = '/';
+#endif
}
}
*p = '/';
-@@ -185,6 +1
88,10
@@ static int keep_backup(char *fname)
+@@ -185,6 +1
90,11
@@ static int keep_backup(char *fname)
if (!(buf = get_backup_name(fname)))
return 0;
+#ifdef SUPPORT_ACLS
if (!(buf = get_backup_name(fname)))
return 0;
+#ifdef SUPPORT_ACLS
-+ push_keep_backup_acl(file, fname, buf);
++ if (preserve_acls)
++ push_keep_backup_acl(file, fname, buf);
+#endif
+
/* Check to see if this is a device file, or link */
if ((am_root && preserve_devices && IS_DEVICE(file->mode))
|| (preserve_specials && IS_SPECIAL(file->mode))) {
+#endif
+
/* Check to see if this is a device file, or link */
if ((am_root && preserve_devices && IS_DEVICE(file->mode))
|| (preserve_specials && IS_SPECIAL(file->mode))) {
-@@ -260,6 +2
67,9
@@ static int keep_backup(char *fname)
+@@ -260,6 +2
70,10
@@ static int keep_backup(char *fname)
}
}
set_file_attrs(buf, file, NULL, 0);
+#ifdef SUPPORT_ACLS
}
}
set_file_attrs(buf, file, NULL, 0);
+#ifdef SUPPORT_ACLS
-+ cleanup_keep_backup_acl();
++ if (preserve_acls)
++ cleanup_keep_backup_acl();
+#endif
free(file);
+#endif
free(file);
@@
-1393,47
+1389,61
@@
ACLs to a non-ACL-supporting disk should complain.
--- old/flist.c
+++ new/flist.c
--- old/flist.c
+++ new/flist.c
-@@ -966,6 +966,10 @@ static struct file_struct *send_file_nam
+@@ -44,6 +44,7 @@ extern int filesfrom_fd;
+ extern int one_file_system;
+ extern int copy_dirlinks;
+ extern int keep_dirlinks;
++extern int preserve_acls;
+ extern int preserve_links;
+ extern int preserve_hard_links;
+ extern int preserve_devices;
+@@ -966,6 +967,10 @@ static struct file_struct *send_file_nam
f == -2 ? SERVER_FILTERS : ALL_FILTERS);
if (!file)
return NULL;
+#ifdef SUPPORT_ACLS
f == -2 ? SERVER_FILTERS : ALL_FILTERS);
if (!file)
return NULL;
+#ifdef SUPPORT_ACLS
-+ if (make_acl(file, fname) < 0)
++ if (
preserve_acls &&
make_acl(file, fname) < 0)
+ return NULL;
+#endif
if (chmod_modes && !S_ISLNK(file->mode))
file->mode = tweak_mode(file->mode, chmod_modes);
+ return NULL;
+#endif
if (chmod_modes && !S_ISLNK(file->mode))
file->mode = tweak_mode(file->mode, chmod_modes);
-@@ -977,6 +98
1,12
@@ static struct file_struct *send_file_nam
+@@ -977,6 +98
2,16
@@ static struct file_struct *send_file_nam
if (file->basename[0]) {
flist->files[flist->count++] = file;
send_file_entry(file, f);
+#ifdef SUPPORT_ACLS
if (file->basename[0]) {
flist->files[flist->count++] = file;
send_file_entry(file, f);
+#ifdef SUPPORT_ACLS
-+ send_acl(file, f);
++ if (preserve_acls)
++ send_acl(file, f);
++#endif
+ } else {
+ } else {
++#ifdef SUPPORT_ACLS
+ /* Cleanup unsent ACL(s). */
+ /* Cleanup unsent ACL(s). */
-+ send_acl(file, -1);
++ if (preserve_acls)
++ send_acl(file, -1);
+#endif
}
return file;
}
+#endif
}
return file;
}
-@@ -1365,6 +13
75,10
@@ struct file_list *recv_file_list(int f)
+@@ -1365,6 +13
80,11
@@ struct file_list *recv_file_list(int f)
flags |= read_byte(f) << 8;
file = receive_file_entry(flist, flags, f);
+#ifdef SUPPORT_ACLS
flags |= read_byte(f) << 8;
file = receive_file_entry(flist, flags, f);
+#ifdef SUPPORT_ACLS
-+ receive_acl(file, f);
++ if (preserve_acls)
++ receive_acl(file, f);
+#endif
+
if (S_ISREG(file->mode) || S_ISLNK(file->mode))
stats.total_size += file->length;
+#endif
+
if (S_ISREG(file->mode) || S_ISLNK(file->mode))
stats.total_size += file->length;
-@@ -1387,6 +140
1,10
@@ struct file_list *recv_file_list(int f)
+@@ -1387,6 +140
7,11
@@ struct file_list *recv_file_list(int f)
clean_flist(flist, relative_paths, 1);
+#ifdef SUPPORT_ACLS
clean_flist(flist, relative_paths, 1);
+#ifdef SUPPORT_ACLS
-+ sort_file_acl_index_lists();
++ if (preserve_acls)
++ sort_file_acl_index_lists();
+#endif
+
if (f >= 0) {
+#endif
+
if (f >= 0) {
@@
-4911,7
+4921,15
@@
ACLs to a non-ACL-supporting disk should complain.
/* We now check to see if we are writing file "inplace" */
--- old/rsync.c
+++ new/rsync.c
/* We now check to see if we are writing file "inplace" */
--- old/rsync.c
+++ new/rsync.c
-@@ -101,7 +101,8 @@ void free_sums(struct sum_struct *s)
+@@ -33,6 +33,7 @@
+ extern int verbose;
+ extern int dry_run;
+ extern int daemon_log_format_has_i;
++extern int preserve_acls;
+ extern int preserve_perms;
+ extern int preserve_executability;
+ extern int preserve_times;
+@@ -101,7 +102,8 @@ void free_sums(struct sum_struct *s)
/* This is only called when we aren't preserving permissions. Figure out what
* the permissions should be and return them merged back into the mode. */
/* This is only called when we aren't preserving permissions. Figure out what
* the permissions should be and return them merged back into the mode. */
@@
-4921,7
+4939,7
@@
ACLs to a non-ACL-supporting disk should complain.
{
/* If the file already exists, we'll return the local permissions,
* possibly tweaked by the --executability option. */
{
/* If the file already exists, we'll return the local permissions,
* possibly tweaked by the --executability option. */
-@@ -116,7 +11
7
,7 @@ mode_t dest_mode(mode_t flist_mode, mode
+@@ -116,7 +11
8
,7 @@ mode_t dest_mode(mode_t flist_mode, mode
cur_mode |= (cur_mode & 0444) >> 2;
}
} else
cur_mode |= (cur_mode & 0444) >> 2;
}
} else
@@
-4930,14
+4948,14
@@
ACLs to a non-ACL-supporting disk should complain.
if (daemon_chmod_modes && !S_ISLNK(flist_mode))
cur_mode = tweak_mode(cur_mode, daemon_chmod_modes);
return (flist_mode & ~CHMOD_BITS) | (cur_mode & CHMOD_BITS);
if (daemon_chmod_modes && !S_ISLNK(flist_mode))
cur_mode = tweak_mode(cur_mode, daemon_chmod_modes);
return (flist_mode & ~CHMOD_BITS) | (cur_mode & CHMOD_BITS);
-@@ -203,6 +20
4
,13 @@ int set_file_attrs(char *fname, struct f
+@@ -203,6 +20
5
,13 @@ int set_file_attrs(char *fname, struct f
updated = 1;
}
+#ifdef SUPPORT_ACLS
+ /* It's OK to call set_acl() now, even for a dir, as the generator
+ * will enable owner-writability using chmod, if necessary. */
updated = 1;
}
+#ifdef SUPPORT_ACLS
+ /* It's OK to call set_acl() now, even for a dir, as the generator
+ * will enable owner-writability using chmod, if necessary. */
-+ if (set_acl(fname, file) == 0)
++ if (
preserve_acls &&
set_acl(fname, file) == 0)
+ updated = 1;
+#endif
+
+ updated = 1;
+#endif
+
@@
-5412,7
+5430,7
@@
ACLs to a non-ACL-supporting disk should complain.
+ while ((id = next_acl_gid(flist)) != 0)
+ acl_gid_map(match_gid(id));
+ }
+ while ((id = next_acl_gid(flist)) != 0)
+ acl_gid_map(match_gid(id));
+ }
-+#endif
/* SUPPORT_ACLS */
++#endif
+
/* Now convert all the uids/gids from sender values to our values. */
if (am_root && preserve_uid && !numeric_ids) {
+
/* Now convert all the uids/gids from sender values to our values. */
if (am_root && preserve_uid && !numeric_ids) {