Changed the style of the diff headers (use "patch -p1" now).
[rsync/rsync-patches.git] / acls.diff
index d851f32..48dd174 100644 (file)
--- a/acls.diff
+++ b/acls.diff
@@ -1,9 +1,7 @@
 After applying this patch, run these commands for a successful build:
 
-    autoconf
-    autoheader
+    ./prepare-source
     ./configure --enable-acl-support
-    make proto
     make
 
 The program currently complains when the --acls (-A) option is used to copy
@@ -11,8 +9,8 @@ from a disk that doesn't support ACLs.  This should be changed to silently
 notice that no ACLs are available to copy.  Of course, trying to write out
 ACLs to a non-ACL-supporting disk should complain.
 
---- orig/Makefile.in   2006-01-14 08:14:29
-+++ Makefile.in        2005-11-07 04:31:05
+--- old/Makefile.in
++++ new/Makefile.in
 @@ -25,15 +25,15 @@ VERSION=@VERSION@
  .SUFFIXES:
  .SUFFIXES: .c .o
@@ -32,8 +30,8 @@ ACLs to a non-ACL-supporting disk should complain.
  OBJS3=progress.o pipe.o
  DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
  popt_OBJS=popt/findme.o  popt/popt.o  popt/poptconfig.o \
---- orig/acls.c        2006-01-31 19:25:53
-+++ acls.c     2006-01-31 19:25:53
+--- old/acls.c
++++ new/acls.c
 @@ -0,0 +1,1202 @@
 +/* -*- c-file-style: "linux" -*-
 +   Copyright (C) Andrew Tridgell 1996
@@ -1237,8 +1235,8 @@ ACLs to a non-ACL-supporting disk should complain.
 +}
 +
 +#endif /* SUPPORT_ACLS */
---- orig/backup.c      2006-01-30 07:18:27
-+++ backup.c   2004-10-06 00:13:09
+--- old/backup.c
++++ new/backup.c
 @@ -135,6 +135,7 @@ static int make_bak_dir(char *fullpath)
                        } else {
                                do_lchown(fullpath, st.st_uid, st.st_gid);
@@ -1264,8 +1262,8 @@ ACLs to a non-ACL-supporting disk should complain.
        free(file);
  
        if (verbose > 1) {
---- orig/configure.in  2006-02-02 02:41:09
-+++ configure.in       2004-08-19 19:53:27
+--- old/configure.in
++++ new/configure.in
 @@ -478,6 +478,11 @@ if test x"$ac_cv_func_strcasecmp" = x"no
      AC_CHECK_LIB(resolv, strcasecmp)
  fi
@@ -1278,7 +1276,7 @@ ACLs to a non-ACL-supporting disk should complain.
  dnl At the moment we don't test for a broken memcmp(), because all we
  dnl need to do is test for equality, not comparison, and it seems that
  dnl every platform has a memcmp that can do at least that.
-@@ -751,6 +756,77 @@ AC_SUBST(OBJ_RESTORE)
+@@ -734,6 +739,77 @@ AC_SUBST(OBJ_RESTORE)
  AC_SUBST(CC_SHOBJ_FLAG)
  AC_SUBST(BUILD_POPT)
  
@@ -1356,8 +1354,8 @@ ACLs to a non-ACL-supporting disk should complain.
  AC_CONFIG_FILES([Makefile lib/dummy zlib/dummy popt/dummy shconfig])
  AC_OUTPUT
  
---- orig/flist.c       2006-01-31 02:30:18
-+++ flist.c    2006-01-31 02:37:33
+--- old/flist.c
++++ new/flist.c
 @@ -967,6 +967,8 @@ static struct file_struct *send_file_nam
                         f == -2 ? SERVER_FILTERS : ALL_FILTERS);
        if (!file)
@@ -1396,9 +1394,9 @@ ACLs to a non-ACL-supporting disk should complain.
        if (f >= 0) {
                recv_uid_list(f, flist);
  
---- orig/generator.c   2006-01-31 18:59:39
-+++ generator.c        2006-02-04 20:12:42
-@@ -756,6 +756,7 @@ static int try_dests_non(struct file_str
+--- old/generator.c
++++ new/generator.c
+@@ -754,6 +754,7 @@ static int try_dests_non(struct file_str
  }
  
  static int phase = 0;
@@ -1406,7 +1404,7 @@ ACLs to a non-ACL-supporting disk should complain.
  
  /* Acts on the_file_list->file's ndx'th item, whose name is fname.  If a dir,
   * make sure it exists, and has the right permissions/timestamp info.  For
-@@ -772,7 +773,7 @@ static void recv_generator(char *fname, 
+@@ -770,7 +771,7 @@ static void recv_generator(char *fname, 
                           enum logcode code, int f_out)
  {
        static int missing_below = -1, excluded_below = -1;
@@ -1415,7 +1413,7 @@ ACLs to a non-ACL-supporting disk should complain.
        static struct file_list *fuzzy_dirlist = NULL;
        struct file_struct *fuzzy_file = NULL;
        int fd = -1, f_copy = -1;
-@@ -791,12 +792,12 @@ static void recv_generator(char *fname, 
+@@ -789,12 +790,12 @@ static void recv_generator(char *fname, 
                if (fuzzy_dirlist) {
                        flist_free(fuzzy_dirlist);
                        fuzzy_dirlist = NULL;
@@ -1429,14 +1427,14 @@ ACLs to a non-ACL-supporting disk should complain.
                return;
        }
  
-@@ -831,15 +832,24 @@ static void recv_generator(char *fname, 
+@@ -829,15 +830,24 @@ static void recv_generator(char *fname, 
                statret = -1;
                stat_errno = ENOENT;
        } else {
 -              if (fuzzy_basis && S_ISREG(file->mode)) {
 +              if ((fuzzy_basis && S_ISREG(file->mode))
 +#ifdef SUPPORT_ACLS
-+               || (!preserve_perms && !S_ISDIR(file->mode))
++               || !preserve_perms
 +#endif
 +              ) {
                        char *dn = file->dirname ? file->dirname : ".";
@@ -1459,7 +1457,7 @@ ACLs to a non-ACL-supporting disk should complain.
                }
  
                statret = link_stat(fname, &st,
-@@ -861,7 +871,8 @@ static void recv_generator(char *fname, 
+@@ -859,7 +869,8 @@ static void recv_generator(char *fname, 
        if (!preserve_perms) {
                int exists = statret == 0
                          && S_ISDIR(st.st_mode) == S_ISDIR(file->mode);
@@ -1469,7 +1467,7 @@ ACLs to a non-ACL-supporting disk should complain.
        }
  
        if (S_ISDIR(file->mode)) {
-@@ -895,6 +906,10 @@ static void recv_generator(char *fname, 
+@@ -893,6 +904,10 @@ static void recv_generator(char *fname, 
                if (set_file_attrs(fname, file, statret ? NULL : &st, 0)
                    && verbose && code && f_out != -1)
                        rprintf(code, "%s/\n", fname);
@@ -1480,7 +1478,7 @@ ACLs to a non-ACL-supporting disk should complain.
                if (delete_during && f_out != -1 && !phase && dry_run < 2
                    && (file->flags & FLAG_DEL_HERE))
                        delete_in_dir(the_file_list, fname, file, &st);
-@@ -1330,6 +1345,8 @@ void generate_files(int f_out, struct fi
+@@ -1328,6 +1343,8 @@ void generate_files(int f_out, struct fi
         * notice that and let us know via the redo pipe (or its closing). */
        ignore_timeout = 1;
  
@@ -1489,8 +1487,8 @@ ACLs to a non-ACL-supporting disk should complain.
        for (i = 0; i < flist->count; i++) {
                struct file_struct *file = flist->files[i];
  
---- orig/lib/sysacls.c 2005-05-16 23:27:53
-+++ lib/sysacls.c      2005-05-16 23:27:53
+--- old/lib/sysacls.c
++++ new/lib/sysacls.c
 @@ -0,0 +1,3242 @@
 +/* 
 +   Unix SMB/CIFS implementation.
@@ -4734,8 +4732,8 @@ ACLs to a non-ACL-supporting disk should complain.
 +#endif
 +      return 0;
 +}
---- orig/lib/sysacls.h 2005-05-16 23:25:51
-+++ lib/sysacls.h      2005-05-16 23:25:51
+--- old/lib/sysacls.h
++++ new/lib/sysacls.h
 @@ -0,0 +1,28 @@
 +#define SMB_MALLOC(cnt) new_array(char, cnt)
 +#define SMB_MALLOC_P(obj) new_array(obj, 1)
@@ -4765,8 +4763,8 @@ ACLs to a non-ACL-supporting disk should complain.
 +int sys_acl_free_text(char *text);
 +int sys_acl_free_acl(SMB_ACL_T the_acl);
 +int sys_acl_free_qualifier(void *qual, SMB_ACL_TAG_T tagtype);
---- orig/mkproto.awk   2006-02-02 02:41:09
-+++ mkproto.awk        2006-02-02 02:41:47
+--- old/mkproto.awk
++++ new/mkproto.awk
 @@ -58,7 +58,7 @@ BEGIN {
    next;
  }
@@ -4776,8 +4774,8 @@ ACLs to a non-ACL-supporting disk should complain.
    next;
  }
  
---- orig/options.c     2006-02-03 23:51:57
-+++ options.c  2006-02-04 19:58:53
+--- old/options.c
++++ new/options.c
 @@ -44,6 +44,7 @@ int keep_dirlinks = 0;
  int copy_links = 0;
  int preserve_links = 0;
@@ -4872,8 +4870,8 @@ ACLs to a non-ACL-supporting disk should complain.
        if (preserve_uid)
                argstr[x++] = 'o';
        if (preserve_gid)
---- orig/receiver.c    2006-01-31 02:30:18
-+++ receiver.c 2006-02-03 05:46:43
+--- old/receiver.c
++++ new/receiver.c
 @@ -410,6 +410,10 @@ int recv_files(int f_in, struct file_lis
        int itemizing = am_daemon ? daemon_log_format_has_i
                      : !am_server && log_format_has_i;
@@ -4903,9 +4901,9 @@ ACLs to a non-ACL-supporting disk should complain.
                }
  
                /* We now check to see if we are writing file "inplace" */
---- orig/rsync.c       2006-02-04 19:52:05
-+++ rsync.c    2006-02-04 19:53:13
-@@ -54,7 +54,8 @@ void free_sums(struct sum_struct *s)
+--- old/rsync.c
++++ new/rsync.c
+@@ -91,7 +91,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. */
@@ -4915,7 +4913,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. */
-@@ -69,7 +70,7 @@ mode_t dest_mode(mode_t flist_mode, mode
+@@ -106,7 +107,7 @@ mode_t dest_mode(mode_t flist_mode, mode
                                dest_mode |= (dest_mode & 0444) >> 2;
                }
        } else
@@ -4924,7 +4922,7 @@ ACLs to a non-ACL-supporting disk should complain.
        return (flist_mode & ~CHMOD_BITS) | (dest_mode & CHMOD_BITS);
  }
  
-@@ -168,6 +169,14 @@ int set_file_attrs(char *fname, struct f
+@@ -205,6 +206,14 @@ int set_file_attrs(char *fname, struct f
        }
  #endif
  
@@ -4939,8 +4937,8 @@ ACLs to a non-ACL-supporting disk should complain.
        if (verbose > 1 && flags & ATTRS_REPORT) {
                enum logcode code = daemon_log_format_has_i || dry_run
                                  ? FCLIENT : FINFO;
---- orig/rsync.h       2006-02-03 20:00:36
-+++ rsync.h    2006-01-31 19:27:00
+--- old/rsync.h
++++ new/rsync.h
 @@ -657,6 +657,44 @@ struct chmod_mode_struct;
  
  #define UNUSED(x) x __attribute__((__unused__))
@@ -4986,8 +4984,8 @@ ACLs to a non-ACL-supporting disk should complain.
  #include "proto.h"
  
  /* We have replacement versions of these if they're missing. */
---- orig/rsync.yo      2006-02-03 23:51:58
-+++ rsync.yo   2006-01-31 03:14:05
+--- old/rsync.yo
++++ new/rsync.yo
 @@ -317,6 +317,7 @@ to the detailed description below for a 
   -K, --keep-dirlinks         treat symlinked dir on receiver as dir
   -p, --perms                 preserve permissions
@@ -4996,32 +4994,33 @@ ACLs to a non-ACL-supporting disk should complain.
       --chmod=CHMOD           change destination permissions
   -o, --owner                 preserve owner (super-user only)
   -g, --group                 preserve group
-@@ -691,14 +692,23 @@ quote(itemize(
+@@ -691,7 +692,9 @@ quote(itemize(
    permissions, though the bf(--executability) option might change just
    the execute permission for the file.
-   it() Each new file gets its permissions set based on the source file's
--  permissions, but masked by the receiving end's umask setting (including
-+  permissions, but masked by the receiving end's destination-default
-+  permissions (which is either based on the ACL of the destination
-+  directory, if available, or the receiving end's umask setting) and
-+  includes
-   the stripping of the three special permission bits).
-+  Hint: Using bf(--chmod=ugo=rwX) without bf(--perms) will cause new
-+  files to get all the destination-default permissions.
+   it() New files get their "normal" permission bits set to the source
+-  file's permissions masked with the receiving end's umask setting, and
++  file's permissions masked with the receiving directory's default
++  permissions (either the receiving process's umask, or the permissions
++  specified via the destination directory's default ACL), and
+   their special permission bits disabled except in the case where a new
+   directory inherits a setgid bit from its parent directory.
  ))
-   
- Thus, when bf(--perms) and bf(--executability) are both disabled,
- rsync's behavior is the same as that of other file-copy utilities,
- such as bf(cp)(1) and bf(tar)(1).
+@@ -722,9 +725,11 @@ The preservation of the destination's se
+ directories when bf(--perms) is off was added in rsync 2.6.7.  Older rsync
+ versions erroneously preserved the three special permission bits for
+ newly-created files when bf(--perms) was off, while overriding the
+-destination's setgid bit setting on a newly-created directory.  (Keep in
+-mind that it is the version of the receiving rsync that affects this
+-behavior.)
++destination's setgid bit setting on a newly-created directory.  Default ACL
++observance was added to the ACL patch for rsync 2.6.7, so older (or
++non-ACL-enabled) rsyncs use the umask even if default ACLs are present.
++(Keep in mind that it is the version of the receiving rsync that affects
++these behaviors.)
  
-+This version of rsync observes default ACLs; patched versions of rsync only
-+applied the umask, and could thus set wrong permissions in the presence of
-+default ACLs.
-+
  dit(bf(-E, --executability)) This option causes rsync to preserve the
  executability (or non-executability) of regular files when bf(--perms) is
- not enabled.  A regular file is considered to be executable if at least one
-@@ -713,6 +723,10 @@ quote(itemize(
+@@ -742,6 +747,10 @@ quote(itemize(
  
  If bf(--perms) is enabled, this option is ignored.
  
@@ -5032,8 +5031,8 @@ ACLs to a non-ACL-supporting disk should complain.
  dit(bf(--chmod)) This option tells rsync to apply one or more
  comma-separated "chmod" strings to the permission of the files in the
  transfer.  The resulting value is treated as though it was the permissions
---- orig/smb_acls.h    2004-06-30 00:04:07
-+++ smb_acls.h 2004-06-30 00:04:07
+--- old/smb_acls.h
++++ new/smb_acls.h
 @@ -0,0 +1,277 @@
 +/* 
 +   Unix SMB/Netbios implementation.
@@ -5312,9 +5311,9 @@ ACLs to a non-ACL-supporting disk should complain.
 +
 +#endif /* No ACLs. */
 +#endif /* _SMB_ACLS_H */
---- orig/testsuite/default-acls.test   2006-02-04 19:56:21
-+++ testsuite/default-acls.test        2006-02-04 19:56:21
-@@ -0,0 +1,52 @@
+--- old/testsuite/default-acls.test
++++ new/testsuite/default-acls.test
+@@ -0,0 +1,55 @@
 +#! /bin/sh
 +
 +# This program is distributable under the terms of the GNU GPL see
@@ -5344,6 +5343,9 @@ ACLs to a non-ACL-supporting disk should complain.
 +    # Make sure get_local_name doesn't mess us up when transferring only one file
 +    $RSYNC -rvv "$scratchdir/file" "$todir/to/anotherfile"
 +    check_perms "$todir/to/anotherfile" $3 "Target $1"
++    # Make sure we obey default ACLs when not transferring a regular file
++    $RSYNC -rvv "$scratchdir/dir" "$todir/to/anotherdir"
++    check_perms "$todir/to/anotherdir" $4 "Target $1"
 +}
 +
 +mkdir "$scratchdir/dir"
@@ -5367,8 +5369,8 @@ ACLs to a non-ACL-supporting disk should complain.
 +
 +# Hooray
 +exit 0
---- orig/uidlist.c     2006-01-25 17:15:13
-+++ uidlist.c  2006-01-25 17:45:21
+--- old/uidlist.c
++++ new/uidlist.c
 @@ -34,6 +34,7 @@
  extern int verbose;
  extern int preserve_uid;