X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/f9185203ee03152001530db5624a2b8c93e1ea94..e1fe1d55c4b9a8d45d9c640cefe45a345371f9d5:/rsync.h diff --git a/rsync.h b/rsync.h index 61f1c47c..ed600053 100644 --- a/rsync.h +++ b/rsync.h @@ -60,12 +60,13 @@ #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 (HLINKED files only) */ -#define XMIT_IO_ERROR_ENDLIST (1<<12) /* protocols 31 - now (w/XMIT_EXTENDED_FLAGS) */ +#define XMIT_IO_ERROR_ENDLIST (1<<12) /* protocols 31*- now (w/XMIT_EXTENDED_FLAGS) (also protocol 30 w/'f' compat flag) */ #define XMIT_MOD_NSEC (1<<13) /* protocols 31 - now */ /* These flags are used in the live flist data. */ #define FLAG_TOP_DIR (1<<0) /* sender/receiver/generator */ +#define FLAG_OWNED_BY_US (1<<0) /* generator: set by make_file() for aux flists only */ #define FLAG_FILE_SENT (1<<1) /* sender/receiver/generator */ #define FLAG_DIR_CREATED (1<<1) /* generator */ #define FLAG_CONTENT_DIR (1<<2) /* sender/receiver/generator */ @@ -85,8 +86,12 @@ /* These flags are passed to functions but not stored. */ -#define FLAG_DIVERT_DIRS (1<<16)/* sender */ +#define FLAG_DIVERT_DIRS (1<<16) /* sender, but must be unique */ +/* These flags are for get_dirlist(). */ +#define GDL_IGNORE_FILTER_RULES (1<<0) + +/* Some helper macros for matching bits. */ #define BITS_SET(val,bits) (((val) & (bits)) == (bits)) #define BITS_SETnUNSET(val,onbits,offbits) (((val) & ((onbits)|(offbits))) == (onbits)) #define BITS_EQUAL(b1,b2,mask) (((unsigned)(b1) & (unsigned)(mask)) \ @@ -98,7 +103,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 (and NEVER before)! */ -#define SUBPROTOCOL_VERSION 11 +#define SUBPROTOCOL_VERSION 12 /* 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 @@ -136,6 +141,8 @@ /* For compatibility with older rsyncs */ #define OLD_MAX_BLOCK_SIZE ((int32)1 << 29) +#define ROUND_UP_1024(siz) ((siz) & (1024-1) ? ((siz) | (1024-1)) + 1 : (siz)) + #define IOERR_GENERAL (1<<0) /* For backward compatibility, this must == 1 */ #define IOERR_VANISHED (1<<1) #define IOERR_DEL_LIMIT (1<<2) @@ -232,8 +239,8 @@ enum msgcode { MSG_STATS=10, /* message has stats data for generator */ MSG_IO_ERROR=22,/* the sending side had an I/O error */ MSG_IO_TIMEOUT=33,/* tell client about a daemon's timeout value */ - MSG_NOOP=42, /* a do-nothing message */ - MSG_ERROR_EXIT=86, /* used by siblings and by protocol-31 */ + MSG_NOOP=42, /* a do-nothing message (legacy protocol-30 only) */ + MSG_ERROR_EXIT=86, /* synchronize an error exit (siblings and protocol >= 31) */ MSG_SUCCESS=100,/* successfully updated indicated flist index */ MSG_DELETED=101,/* successfully deleted a file on receiving side */ MSG_NO_SEND=102,/* sender failed to open a file we wanted */ @@ -265,6 +272,10 @@ enum delret { #define MKP_DROP_NAME (1<<0) /* drop trailing filename or trailing slash */ #define MKP_SKIP_SLASH (1<<1) /* skip one or more leading slashes */ +/* Defines for maybe_send_keepalive() */ +#define MSK_ALLOW_FLUSH (1<<0) +#define MSK_ACTIVE_RECEIVER (1<<1) + #include "errcode.h" #include "config.h" @@ -364,6 +375,14 @@ enum delret { #define CAN_SET_SYMLINK_TIMES 1 #endif +#if defined HAVE_LCHOWN || defined CHOWN_MODIFIES_SYMLINK +#define CAN_CHOWN_SYMLINK 1 +#endif + +#if defined HAVE_LCHMOD || defined HAVE_SETATTRLIST +#define CAN_CHMOD_SYMLINK 1 +#endif + #ifdef HAVE_SYS_SELECT_H #include #endif @@ -459,6 +478,8 @@ typedef unsigned int mode_t; #endif #ifndef HAVE_OFF_T typedef long off_t; +#undef SIZEOF_OFF_T +#define SIZEOF_OFF_T SIZEOF_LONG #endif #ifndef HAVE_SIZE_T typedef unsigned int size_t; @@ -686,10 +707,10 @@ extern int xattrs_ndx; #define F_LENGTH(f) ((int64)(f)->len32) #else #define F_LENGTH(f) ((int64)(f)->len32 + ((f)->flags & FLAG_LENGTH64 \ - ? (int64)OPT_EXTRA(f, 0)->unum << 32 : 0)) + ? (int64)OPT_EXTRA(f, NSEC_BUMP(f))->unum << 32 : 0)) #endif -#define F_MOD_NSEC(f) ((f)->flags & FLAG_MOD_NSEC ? OPT_EXTRA(f, LEN64_BUMP(f))->unum : 0) +#define F_MOD_NSEC(f) ((f)->flags & FLAG_MOD_NSEC ? OPT_EXTRA(f, 0)->unum : 0) /* If there is a symlink string, it is always right after the basename */ #define F_SYMLINK(f) ((f)->basename + strlen((f)->basename) + 1) @@ -1111,6 +1132,10 @@ extern int errno; #define IS_SPECIAL(mode) (S_ISSOCK(mode) || S_ISFIFO(mode)) #define IS_DEVICE(mode) (S_ISCHR(mode) || S_ISBLK(mode)) +#define PRESERVE_FILE_TIMES (1<<0) +#define PRESERVE_DIR_TIMES (1<<1) +#define PRESERVE_LINK_TIMES (1<<2) + /* Initial mask on permissions given to temporary files. Mask off setuid bits and group access because of potential race-condition security holes, and mask other access because mode 707 is bizarre */