./configure (optional if already run)
make
-based-on: 194cee671d5e178f20c4494f41911fa8db942935
+based-on: e1e4ffe057346de61972b2d995ebc9c720a7d8bd
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
if (unsort_ndx)
F_NDX(file) = stats.num_dirs;
-@@ -2621,7 +2882,7 @@ struct file_list *recv_file_list(int f, int dir_ndx)
+@@ -2618,7 +2879,7 @@ struct file_list *recv_file_list(int f, int dir_ndx)
/* The --relative option sends paths with a leading slash, so we need
* to specify the strip_root option here. We rejected leading slashes
* for a non-relative transfer in recv_file_entry(). */
if (protocol_version < 30) {
/* Recv the io_error flag */
-@@ -2871,7 +3132,7 @@ void flist_free(struct file_list *flist)
+@@ -2868,7 +3129,7 @@ void flist_free(struct file_list *flist)
/* This routine ensures we don't have any duplicate names in our file list.
* duplicate names can cause corruption because of the pipelining. */
{
char fbuf[MAXPATHLEN];
int i, prev_i;
-@@ -2922,7 +3183,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
+@@ -2919,7 +3180,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
/* If one is a dir and the other is not, we want to
* keep the dir because it might have contents in the
* list. Otherwise keep the first one. */
struct file_struct *fp = flist->sorted[j];
if (!S_ISDIR(fp->mode))
keep = i, drop = j;
-@@ -2938,8 +3199,8 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
+@@ -2935,8 +3196,8 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
} else
keep = j, drop = i;
rprintf(FINFO,
"removing duplicate name %s from file list (%d)\n",
f_name(file, fbuf), drop + flist->ndx_start);
-@@ -2961,7 +3222,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
+@@ -2958,7 +3219,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
}
flist->high = prev_i;
diff --git a/rsync.h b/rsync.h
--- a/rsync.h
+++ b/rsync.h
-@@ -836,6 +836,10 @@ extern int xattrs_ndx;
+@@ -848,6 +848,10 @@ extern int xattrs_ndx;
#define F_SUM(f) ((char*)OPT_EXTRA(f, START_BUMP(f) + HLINK_BUMP(f) \
+ SUM_EXTRA_CNT - 1))
/* Some utility defines: */
#define F_IS_ACTIVE(f) (f)->basename[0]
#define F_IS_HLINKED(f) ((f)->flags & FLAG_HLINKED)
-@@ -1038,6 +1042,13 @@ typedef struct {
- char fname[1]; /* has variable size */
- } relnamecache;
+@@ -1060,6 +1064,13 @@ typedef struct {
+ #define RELNAMECACHE_LEN (offsetof(relnamecache, fname))
+ #endif
+#define CSF_ENABLE (1<<1)
+#define CSF_LAX (1<<2)