X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/9742b386b3d5b3010675aef9febaffbf8ab2d2c0..8e41b68e8f975c02a5d9281be780ba5d1a385107:/rsync.h diff --git a/rsync.h b/rsync.h index be5831c0..f08806c0 100644 --- 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 @@ -88,7 +88,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 4 /* 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 +588,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 +597,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 +623,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 +680,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; };