Don't include the checksum_seed in the full-file MD5 checksum.
[rsync/rsync.git] / rsync.h
diff --git a/rsync.h b/rsync.h
index be5831c..8e355a3 100644 (file)
--- a/rsync.h
+++ b/rsync.h
@@ -5,8 +5,9 @@
  * Copyright (C) 2003-2007 Wayne Davison
  *
  * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -14,8 +15,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ * with this program; if not, visit the http://fsf.org website.
  */
 
 #define False 0
 #define XMIT_SAME_NAME (1<<5)
 #define XMIT_LONG_NAME (1<<6)
 #define XMIT_SAME_TIME (1<<7)
-#define XMIT_SAME_RDEV_MAJOR (1<<8)    /* protocols 28 - NOW */
+#define XMIT_SAME_RDEV_MAJOR (1<<8)    /* protocols 28 - NOW (devices only) */
+#define XMIT_NON_XFER_DIR (1<<8)       /* protocols 30 - NOW (dirs only) */
 #define XMIT_HLINKED (1<<9)            /* protocols 28 - NOW */
 #define XMIT_SAME_DEV_pre30 (1<<10)    /* protocols 28 - 29  */
 #define XMIT_USER_NAME_FOLLOWS (1<<10) /* protocols 30 - NOW */
 #define XMIT_RDEV_MINOR_8_pre30 (1<<11)        /* protocols 28 - 29  */
 #define XMIT_GROUP_NAME_FOLLOWS (1<<11) /* protocols 30 - NOW */
-#define XMIT_HLINK_FIRST (1<<12)       /* protocols 30 - NOW */
+#define XMIT_HLINK_FIRST (1<<12)       /* protocols 30 - NOW (HLINKED files only) */
 
 /* These flags are used in the live flist data. */
 
@@ -88,7 +89,7 @@
 /* This is used when working on a new protocol version in CVS, and should
  * be a new non-zero value for each CVS change that affects the protocol.
  * It must ALWAYS be 0 when the protocol goes final! */
-#define SUBPROTOCOL_VERSION 3
+#define SUBPROTOCOL_VERSION 6
 
 /* We refuse to interoperate with versions that are not in this range.
  * Note that we assume we'll work with later versions: the onus is on
@@ -588,6 +589,8 @@ extern int xattrs_ndx;
 #define FILE_STRUCT_LEN (offsetof(struct file_struct, basename))
 #define EXTRA_LEN (sizeof (union file_extras))
 #define PTR_EXTRA_LEN ((sizeof (char *) + EXTRA_LEN - 1) / EXTRA_LEN)
+#define DEV_EXTRA_CNT 2
+#define DIRNODE_EXTRA_CNT 3
 #define SUM_EXTRA_CNT ((MAX_DIGEST_LEN + EXTRA_LEN - 1) / EXTRA_LEN)
 
 #define REQ_EXTRA(f,ndx) ((union file_extras*)(f) - (ndx))
@@ -595,6 +598,7 @@ extern int xattrs_ndx;
 
 #define LEN64_BUMP(f) ((f)->flags & FLAG_LENGTH64 ? 1 : 0)
 #define HLINK_BUMP(f) (F_IS_HLINKED(f) ? 1 : 0)
+#define ACL_BUMP(f) (acls_ndx ? 1 : 0)
 
 /* The length applies to all items. */
 #if SIZEOF_INT64 < 8
@@ -620,20 +624,22 @@ extern int xattrs_ndx;
 #define F_XATTR(f) REQ_EXTRA(f, xattrs_ndx)->num
 #define F_NDX(f) REQ_EXTRA(f, ic_ndx)->num
 
-/* These items are per-entry optional and mutally exclusive: */
-#define F_HL_GNUM(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
-#define F_HL_PREV(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
-#define F_DEF_ACL(f) OPT_EXTRA(f, LEN64_BUMP(f))->unum
-#define F_DIRDEV_P(f) (&OPT_EXTRA(f, LEN64_BUMP(f) + 2 - 1)->unum)
-#define F_DIRNODE_P(f) (&OPT_EXTRA(f, LEN64_BUMP(f) + 3 - 1)->num)
+/* These items are per-entry optional: */
+#define F_HL_GNUM(f) OPT_EXTRA(f, LEN64_BUMP(f))->num /* non-dirs */
+#define F_HL_PREV(f) OPT_EXTRA(f, LEN64_BUMP(f))->num /* non-dirs */
+#define F_DIR_NODE_P(f) (&OPT_EXTRA(f, LEN64_BUMP(f) \
+                               + DIRNODE_EXTRA_CNT - 1)->num) /* sender dirs */
+#define F_DIR_DEFACL(f) OPT_EXTRA(f, LEN64_BUMP(f))->unum /* receiver dirs */
+#define F_DIR_DEV_P(f) (&OPT_EXTRA(f, LEN64_BUMP(f) + ACL_BUMP(f) \
+                               + DEV_EXTRA_CNT - 1)->unum) /* receiver dirs */
 
 /* This optional item might follow an F_HL_*() item.
  * (Note: a device doesn't need to check LEN64_BUMP(f).) */
 #define F_RDEV_P(f) (&OPT_EXTRA(f, HLINK_BUMP(f) + 2 - 1)->unum)
 
 /* The sum is only present on regular files. */
-#define F_SUM(f) ((const char*)OPT_EXTRA(f, LEN64_BUMP(f) + HLINK_BUMP(f) \
-                                         + SUM_EXTRA_CNT - 1))
+#define F_SUM(f) ((char*)OPT_EXTRA(f, LEN64_BUMP(f) + HLINK_BUMP(f) \
+                                   + SUM_EXTRA_CNT - 1))
 
 /* Some utility defines: */
 #define F_IS_ACTIVE(f) (f)->basename[0]
@@ -675,9 +681,10 @@ struct file_list {
        struct file_struct **files, **sorted;
        alloc_pool_t file_pool;
        void *pool_boundary;
-       int count, malloced;
-       int low, high; /* 0-relative index values excluding empties */
-       int ndx_start; /* the start offset for inc_recurse mode */
+       int used, malloced;
+       int low, high;  /* 0-relative index values excluding empties */
+       int ndx_start;  /* the start offset for inc_recurse mode */
+       int ndx_end;    /* the end offset for inc_recurse mode */
        int parent_ndx; /* dir_flist index of parent directory */
        int in_progress, to_redo;
 };