#define SAME_TIME (1<<7)
/* update this if you make incompatible changes */
-#define PROTOCOL_VERSION 26
+#define PROTOCOL_VERSION 27
/* 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
* people writing them to make sure that they don't send us anything
* we won't understand.
*
- * There are two possible explanations for the limit at thirty: either
- * to allow new major-rev versions that do not interoperate with us,
- * and (more likely) so that we can detect an attempt to connect rsync
- * to a non-rsync server, which is unlikely to begin by sending a byte
- * between 15 and 30. */
-#define MIN_PROTOCOL_VERSION 15
-#define MAX_PROTOCOL_VERSION 30
+ * Interoperation with old but supported protocol versions
+ * should cause a warning to be printed. At a future date
+ * the old protocol will become the minimum and
+ * compatibility code removed.
+ *
+ * There are two possible explanations for the limit at
+ * MAX_PROTOCOL_VERSION: either to allow new major-rev versions that
+ * do not interoperate with us, and (more likely) so that we can
+ * detect an attempt to connect rsync to a non-rsync server, which is
+ * unlikely to begin by sending a byte between MIN_PROTOCL_VERSION and
+ * MAX_PROTOCOL_VERSION. */
+
+#define MIN_PROTOCOL_VERSION 17
+#define OLD_PROTOCOL_VERSION 20
+#define MAX_PROTOCOL_VERSION 40
#define RSYNC_PORT 873
#define NO_INT64
#endif
+#if (SIZEOF_LONG == 8)
+#define uint64 unsigned long
+#elif (SIZEOF_INT == 8)
+#define uint64 unsigned int
+#elif HAVE_LONGLONG
+#define uint64 unsigned long long
+#else
+/* As long as it gets... */
+#define uint64 unsigned off_t
+#endif
+
/* Starting from protocol version 26, we always use 64-bit
* ino_t and dev_t internally, even if this platform does not
* allow files to have 64-bit inums. That's because the
* cope with platforms on which this is an unsigned int or even a
* struct. Later.
*/
-#define INO64_T int64
-#define DEV64_T int64
+#define INO64_T uint64
+#define DEV64_T uint64
#ifndef MIN
#define MIN(a,b) ((a)<(b)?(a):(b))
/* the length of the md4 checksum */
#define MD4_SUM_LENGTH 16
#define SUM_LENGTH 16
+#define SHORT_SUM_LENGTH 2
+#define BLOCKSUM_BIAS 10
#ifndef MAXPATHLEN
#define MAXPATHLEN 1024
#endif
+#ifndef NAME_MAX
+#define NAME_MAX 255
+#endif
+
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
#endif
OFF_T flength; /**< total file length */
size_t count; /**< how many chunks */
size_t remainder; /**< flength % block_length */
- size_t n; /**< block_length */
+ size_t blength; /**< block_length */
+ size_t s2length; /**< sum2_length */
struct sum_buf *sums; /**< points to info for each chunk */
};
OFF_T file_size, p_offset, p_fd_offset;
};
+#define MATCHFLG_WILD 0x0001 /* pattern has '*', '[', and/or '?' */
+#define MATCHFLG_WILD2 0x0002 /* pattern has '**' */
+#define MATCHFLG_WILD2_PREFIX 0x0004 /* pattern starts with '**' */
struct exclude_struct {
char *pattern;
- int regular_exp;
- int fnmatch_flags;
+ int match_flags;
int include;
int directory;
- int local;
+ int slash_cnt;
};
struct stats {
#define S_IWUSR 0200
#endif
+#ifndef ACCESSPERMS
+#define ACCESSPERMS 0777
+#endif
+
+#ifndef S_ISVTX
+#define S_ISVTX 0
+#endif
+
+#define CHMOD_BITS (S_ISUID | S_ISGID | S_ISVTX | ACCESSPERMS)
+
#ifndef _S_IFMT
#define _S_IFMT 0170000
#endif
#define IS_DEVICE(mode) (S_ISCHR(mode) || S_ISBLK(mode) || S_ISSOCK(mode) || S_ISFIFO(mode))
-#ifndef ACCESSPERMS
-#define ACCESSPERMS 0777
-#endif
/* 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 */
#define inet_ntoa rep_inet_ntoa
#endif
+/* Make sure that the O_BINARY flag is defined. */
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
#ifndef HAVE_STRLCPY
size_t strlcpy(char *d, const char *s, size_t bufsize);
#define UNUSED(x) x __attribute__((__unused__))
-const char *io_write_phase, *io_read_phase;
+extern const char *io_write_phase, *io_read_phase;