X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/4cb6197b21d9860736c8e6d81b8eb8cac53beb5a..41adbcec9fdf7a72bb15ea7a287b5253713c7ed0:/rsync.h diff --git a/rsync.h b/rsync.h index 5ac914fe..c487d46e 100644 --- a/rsync.h +++ b/rsync.h @@ -32,7 +32,7 @@ #define DEFAULT_LOCK_FILE "/var/run/rsyncd.lock" #define URL_PREFIX "rsync://" -#define SYMLINK_PREFIX "/rsyncd-munged/" +#define SYMLINK_PREFIX "/rsyncd-munged/" /* This MUST have a trailing slash! */ #define SYMLINK_PREFIX_LEN ((int)sizeof SYMLINK_PREFIX - 1) #define BACKUP_SUFFIX "~" @@ -67,7 +67,8 @@ #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 */ -#define FLAG_MOUNT_DIR (1<<3) /* sender/generator */ +#define FLAG_MOUNT_DIR (1<<3) /* sender/generator (dirs only) */ +#define FLAG_SKIP_HLINK (1<<3) /* receiver/generator (w/FLAG_HLINKED) */ #define FLAG_DUPLICATE (1<<4) /* sender */ #define FLAG_MISSING_DIR (1<<4) /* generator */ #define FLAG_HLINKED (1<<5) /* receiver/generator (checked on all types) */ @@ -128,6 +129,9 @@ #define IO_BUFFER_SIZE (4092) #define MAX_BLOCK_SIZE ((int32)1 << 17) +/* For compatibility with older rsyncs */ +#define OLD_MAX_BLOCK_SIZE ((int32)1 << 29) + #define IOERR_GENERAL (1<<0) /* For backward compatibility, this must == 1 */ #define IOERR_VANISHED (1<<1) #define IOERR_DEL_LIMIT (1<<2) @@ -144,8 +148,9 @@ #define XFLG_FATAL_ERRORS (1<<0) #define XFLG_OLD_PREFIXES (1<<1) -#define XFLG_ANCHORED2ABS (1<<2) -#define XFLG_ABS_IF_SLASH (1<<3) +#define XFLG_ANCHORED2ABS (1<<2) /* leading slash indicates absolute */ +#define XFLG_ABS_IF_SLASH (1<<3) /* leading or interior slash is absolute */ +#define XFLG_DIR2WILD3 (1<<4) /* dir/ match gets trailing *** added */ #define ATTRS_REPORT (1<<0) #define ATTRS_SKIP_MTIME (1<<1) @@ -166,8 +171,9 @@ /* For use by the itemize_changes code */ #define ITEM_REPORT_ATIME (1<<0) -#define ITEM_REPORT_CHECKSUM (1<<1) -#define ITEM_REPORT_SIZE (1<<2) +#define ITEM_REPORT_CHANGE (1<<1) +#define ITEM_REPORT_SIZE (1<<2) /* regular files only */ +#define ITEM_REPORT_TIMEFAIL (1<<2) /* symlinks only */ #define ITEM_REPORT_TIME (1<<3) #define ITEM_REPORT_PERMS (1<<4) #define ITEM_REPORT_OWNER (1<<5) @@ -187,11 +193,17 @@ #define SIGNIFICANT_ITEM_FLAGS (~(\ ITEM_BASIS_TYPE_FOLLOWS | ITEM_XNAME_FOLLOWS | ITEM_LOCAL_CHANGE)) -#define CFN_KEEP_LEADING_DOT_DIR (1<<0) +#define CFN_KEEP_DOT_DIRS (1<<0) #define CFN_KEEP_TRAILING_SLASH (1<<1) #define CFN_DROP_TRAILING_DOT_DIR (1<<2) #define CFN_COLLAPSE_DOT_DOT_DIRS (1<<3) +#define SP_DEFAULT 0 +#define SP_KEEP_DOT_DIRS (1<<0) + +#define CD_NORMAL 0 +#define CD_SKIP_CHDIR 1 + /* Log-message categories. FLOG only goes to the log file, not the client; * FCLIENT is the opposite. */ enum logcode { @@ -331,10 +343,6 @@ enum msgcode { #endif #endif -#ifdef HAVE_GLOB_H -#include -#endif - /* these are needed for the uid/gid mapping code */ #include #include @@ -492,10 +500,12 @@ typedef unsigned int size_t; #if SIZEOF_OFF_T == 8 || !SIZEOF_OFF64_T || !defined HAVE_STRUCT_STAT64 #define OFF_T off_t #define STRUCT_STAT struct stat +#define SIZEOF_CAPITAL_OFF_T SIZEOF_OFF_T #else #define OFF_T off64_t #define STRUCT_STAT struct stat64 #define USE_STAT64_FUNCS 1 +#define SIZEOF_CAPITAL_OFF_T SIZEOF_OFF64_T #endif /* CAVEAT: on some systems, int64 will really be a 32-bit integer IFF @@ -541,7 +551,7 @@ struct hashtable { void *nodes; int32 size, entries; uint32 node_size; - int key64; + short key64; }; struct ht_int32_node { @@ -841,7 +851,7 @@ typedef struct { } xbuf; #define INIT_XBUF(xb, str, ln, sz) (xb).buf = (str), (xb).len = (ln), (xb).size = (sz), (xb).pos = 0 -#define INIT_XBUF_STRLEN(xb, str) (xb).buf = (str), (xb).len = strlen((xb).buf), (xb).size = (-1), (xb).pos = 0 +#define INIT_XBUF_STRLEN(xb, str) (xb).buf = (str), (xb).len = strlen((xb).buf), (xb).size = (size_t)-1, (xb).pos = 0 /* This one is used to make an output xbuf based on a char[] buffer: */ #define INIT_CONST_XBUF(xb, bf) (xb).buf = (bf), (xb).size = sizeof (bf), (xb).len = (xb).pos = 0 @@ -1105,7 +1115,56 @@ size_t strlcat(char *d, const char *s, size_t bufsize); #define MY_GID() getgid() #endif -extern int verbose; +#ifdef FORCE_FD_ZERO_MEMSET +#undef FD_ZERO +#define FD_ZERO(fdsetp) memset(fdsetp, 0, sizeof (fd_set)) +#endif + +extern short info_levels[], debug_levels[]; + +#define INFO_GTE(flag, lvl) (info_levels[INFO_##flag] >= (lvl)) +#define INFO_EQ(flag, lvl) (info_levels[INFO_##flag] == (lvl)) +#define DEBUG_GTE(flag, lvl) (debug_levels[DEBUG_##flag] >= (lvl)) +#define DEBUG_EQ(flag, lvl) (debug_levels[DEBUG_##flag] == (lvl)) + +#define INFO_BACKUP 0 +#define INFO_COPY (INFO_BACKUP+1) +#define INFO_DEL (INFO_COPY+1) +#define INFO_FLIST (INFO_DEL+1) +#define INFO_MISC (INFO_FLIST+1) +#define INFO_MOUNT (INFO_MISC+1) +#define INFO_NAME (INFO_MOUNT+1) +#define INFO_PROGRESS (INFO_NAME+1) +#define INFO_REMOVE (INFO_PROGRESS+1) +#define INFO_SKIP (INFO_REMOVE+1) +#define INFO_STATS (INFO_SKIP+1) +#define INFO_SYMSAFE (INFO_STATS+1) + +#define COUNT_INFO (INFO_SYMSAFE+1) + +#define DEBUG_ACL 0 +#define DEBUG_BACKUP (DEBUG_ACL+1) +#define DEBUG_BIND (DEBUG_BACKUP+1) +#define DEBUG_CHDIR (DEBUG_BIND+1) +#define DEBUG_CONNECT (DEBUG_CHDIR+1) +#define DEBUG_CMD (DEBUG_CONNECT+1) +#define DEBUG_DEL (DEBUG_CMD+1) +#define DEBUG_DELTASUM (DEBUG_DEL+1) +#define DEBUG_DUP (DEBUG_DELTASUM+1) +#define DEBUG_EXIT (DEBUG_DUP+1) +#define DEBUG_FILTER (DEBUG_EXIT+1) +#define DEBUG_FLIST (DEBUG_FILTER+1) +#define DEBUG_FUZZY (DEBUG_FLIST+1) +#define DEBUG_GENR (DEBUG_FUZZY+1) +#define DEBUG_HLINK (DEBUG_GENR+1) +#define DEBUG_ICONV (DEBUG_HLINK+1) +#define DEBUG_OWN (DEBUG_ICONV+1) +#define DEBUG_PROTO (DEBUG_OWN+1) +#define DEBUG_RECV (DEBUG_PROTO+1) +#define DEBUG_SEND (DEBUG_RECV+1) +#define DEBUG_TIME (DEBUG_SEND+1) + +#define COUNT_DEBUG (DEBUG_TIME+1) #ifndef HAVE_INET_NTOP const char *inet_ntop(int af, const void *src, char *dst, size_t size);