./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
-@@ -1843,7 +1843,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1846,7 +1846,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
goto notify_others;
if (read_batch || whole_file) {
if (!(backupptr = get_backup_name(fname)))
goto cleanup;
if (!(back_file = make_file(fname, NULL, NULL, 0, NO_FILTERS)))
-@@ -1879,7 +1879,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1882,7 +1882,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
goto notify_others;
}
if (!(backupptr = get_backup_name(fname))) {
goto cleanup;
}
-@@ -1999,7 +1999,7 @@ int atomic_create(struct file_struct *file, char *fname, const char *slnk, const
+@@ -2002,7 +2002,7 @@ int atomic_create(struct file_struct *file, char *fname, const char *slnk, const
skip_atomic = 0;
if (del_for_flag) {
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/errcode.h b/errcode.h
--- a/errcode.h
+++ b/errcode.h
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
extern int io_timeout;
extern int no_detach;
extern int write_batch;
-@@ -1104,6 +1106,9 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
+@@ -1106,6 +1108,9 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
} else if (am_root < 0) /* Treat --fake-super from client as --super. */
am_root = 2;
return memcmp(sum, F_SUM(file), flist_csum_len) == 0;
}
-@@ -953,7 +957,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
+@@ -956,7 +960,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
best_match = j;
match_level = 1;
}
continue;
if (match_level == 1) {
best_match = j;
-@@ -1076,7 +1080,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
+@@ -1079,7 +1083,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
match_level = 1;
best_match = j;
}
continue;
if (match_level < 2) {
match_level = 2;
-@@ -1212,7 +1216,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1215,7 +1219,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
* --ignore-non-existing, daemon exclude, or mkdir failure. */
static struct file_struct *skip_dir = NULL;
static struct file_list *fuzzy_dirlist[MAX_BASIS_DIRS+1];
struct file_struct *fuzzy_file = NULL;
int fd = -1, f_copy = -1;
stat_x sx, real_sx;
-@@ -1329,8 +1333,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1332,8 +1336,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
fuzzy_dirlist[i] = NULL;
}
}
#ifdef SUPPORT_ACLS
if (!preserve_perms)
dflt_perms = default_perms_for_dir(dn);
-@@ -1338,6 +1343,24 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1341,6 +1346,24 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
}
parent_dirname = dn;
statret = link_stat(fname, &sx.st, keep_dirlinks && is_dir);
stat_errno = errno;
}
-@@ -1384,7 +1407,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1387,7 +1410,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
if (INFO_GTE(SKIP, 2)) {
if (ftype != stype)
suf = " (type change)";
suf = always_checksum ? " (sum change)" : " (file change)";
else if (!unchanged_attrs(fname, file, &sx))
suf = " (attr change)";
-@@ -1555,7 +1578,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1558,7 +1581,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
goto cleanup;
}
if (statret == 0) {
/* The link is pointing to the right place. */
set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT);
if (itemizing)
-@@ -1624,7 +1647,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1627,7 +1650,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
if (statret == 0) {
if (ftype != stype)
statret = -1;
/* The device or special file is identical. */
set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT);
if (itemizing)
-@@ -1749,22 +1772,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1752,22 +1775,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
partialptr = NULL;
if (statret != 0 && fuzzy_basis) {
/* Sets fnamecmp_type to FNAMECMP_FUZZY or above. */
fuzzy_file = find_fuzzy(file, fuzzy_dirlist, &fnamecmp_type);
if (fuzzy_file) {
-@@ -1803,7 +1810,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1806,7 +1813,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
;
else if (fnamecmp_type >= FNAMECMP_FUZZY)
;
diff --git a/rsync.h b/rsync.h
--- a/rsync.h
+++ b/rsync.h
-@@ -903,6 +903,10 @@ extern int file_sum_len;
+@@ -903,6 +903,10 @@ extern int file_sum_extra_cnt;
#define F_SUM(f) ((char*)OPT_EXTRA(f, START_BUMP(f) + HLINK_BUMP(f) \
+ SUM_EXTRA_CNT - 1))
diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
--- a/rsyncd.conf.5.md
+++ b/rsyncd.conf.5.md
-@@ -421,6 +421,19 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
+@@ -445,6 +445,19 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
the max connections limit is not exceeded for the modules sharing the lock
file. The default is `/var/run/rsyncd.lock`.
else
file_checksum(fn, st, sum);
return memcmp(sum, F_SUM(file), flist_csum_len) == 0;
-@@ -1356,7 +1357,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1359,7 +1360,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
}
}
if (checksum_files) {
}
need_new_dirscan = 0;
}
-@@ -1544,6 +1546,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1547,6 +1549,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
else
change_local_filter_dir(fname, strlen(fname), F_DEPTH(file));
}
prior_dir_file = file;
goto cleanup;
}
-@@ -1816,6 +1819,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1819,6 +1822,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
handle_partial_dir(partialptr, PDIR_DELETE);
}
set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT | maybe_ATTRS_ACCURATE_TIME);
if (itemizing)
itemize(fnamecmp, file, ndx, statret, &sx, 0, 0, NULL);
#ifdef SUPPORT_HARD_LINKS
-@@ -2308,6 +2313,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2311,6 +2316,7 @@ void generate_files(int f_out, const char *local_name)
} else
change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
}
}
for (i = cur_flist->low; i <= cur_flist->high; i++) {
struct file_struct *file = cur_flist->sorted[i];
-@@ -2402,6 +2408,9 @@ void generate_files(int f_out, const char *local_name)
+@@ -2405,6 +2411,9 @@ void generate_files(int f_out, const char *local_name)
wait_for_receiver();
}
diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
--- a/rsyncd.conf.5.md
+++ b/rsyncd.conf.5.md
-@@ -426,13 +426,15 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
+@@ -450,13 +450,15 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
This parameter tells rsync to make use of any cached checksum information
it finds in per-directory .rsyncsums files when the current transfer is
using the `--checksum` option. The value can be set to either "lax",
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
-@@ -959,7 +959,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
+@@ -962,7 +962,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
best_match = j;
match_level = 2;
}
best_match = j;
match_level = 3;
break;
-@@ -985,9 +985,16 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
+@@ -988,9 +988,16 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
goto got_nothing_for_ya;
}
#ifdef SUPPORT_HARD_LINKS
if (atimes_ndx)
set_file_attrs(fname, file, sxp, NULL, 0);
if (preserve_hard_links && F_IS_HLINKED(file))
-@@ -1101,7 +1108,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
+@@ -1104,7 +1111,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
if (match_level == 3) {
#ifdef SUPPORT_HARD_LINKS
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/daemon-parm.txt b/daemon-parm.txt
--- a/daemon-parm.txt
+++ b/daemon-parm.txt
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
./configure
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
extern const char *checksum_choice;
#define NNI_BUILTIN (1<<0)
-@@ -506,6 +507,8 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
+@@ -503,6 +504,8 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
md5_update(&m5, (uchar *)map_ptr(buf, i, remainder), remainder);
md5_result(&m5, (uchar *)sum);
break;
}
case CSUM_MD4:
-@@ -528,6 +531,8 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
+@@ -525,6 +528,8 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
mdfour_update(&m, (uchar *)map_ptr(buf, i, remainder), remainder);
mdfour_result(&m, (uchar *)sum);
extern char *bind_address;
extern char *config_file;
extern char *logfile_format;
-@@ -880,6 +883,11 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
+@@ -894,6 +897,11 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
log_init(1);
#if defined HAVE_SETENV || defined HAVE_PUTENV
if ((*lp_early_exec(module_id) || *lp_prexfer_exec(module_id)
|| *lp_postxfer_exec(module_id) || *lp_name_converter(module_id))
-@@ -1092,6 +1100,8 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
+@@ -1094,6 +1102,8 @@ static int rsync_module(int f_in, int f_out, int i, const char *addr, const char
am_server = 1; /* Don't let someone try to be tricky. */
quiet = 0;
return memcmp(sum, F_SUM(file), flist_csum_len) == 0;
}
-@@ -2270,6 +2273,13 @@ void generate_files(int f_out, const char *local_name)
+@@ -2273,6 +2276,13 @@ void generate_files(int f_out, const char *local_name)
: "enabled");
}
dflt_perms = (ACCESSPERMS & ~orig_umask);
do {
-@@ -2395,6 +2405,9 @@ void generate_files(int f_out, const char *local_name)
+@@ -2398,6 +2408,9 @@ void generate_files(int f_out, const char *local_name)
wait_for_receiver();
}
diff = u_strcmp(fmid->basename, f->basename);
if (diff == 0) {
good_match = mid;
-@@ -1988,6 +1990,21 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1991,6 +1993,21 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
fnamecmp = partialptr;
fnamecmp_type = FNAMECMP_PARTIAL_DIR;
statret = 0;
a file that can't use it, while missing out on giving it to a file
that could use it.
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/backup.c b/backup.c
--- a/backup.c
+++ b/backup.c
static inline int mtime_differs(STRUCT_STAT *stp, struct file_struct *file)
{
#ifdef ST_MTIME_NSEC
-@@ -1179,6 +1320,7 @@ static void list_file_entry(struct file_struct *f)
+@@ -1182,6 +1323,7 @@ static void list_file_entry(struct file_struct *f)
}
}
static int phase = 0;
static int dflt_perms;
-@@ -1315,7 +1457,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1318,7 +1460,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
&& do_stat(dn, &sx.st) < 0) {
if (dry_run)
goto parent_is_dry_missing;
rsyserr(FERROR_XFER, errno,
"recv_generator: mkdir %s failed",
full_fname(dn));
-@@ -1468,7 +1610,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1471,7 +1613,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
}
if (real_ret != 0 && do_mkdir(fname,file->mode|added_perms) < 0 && errno != EEXIST) {
if (!relative_paths || errno != ENOENT
|| (do_mkdir(fname, file->mode|added_perms) < 0 && errno != EEXIST)) {
rsyserr(FERROR_XFER, errno,
"recv_generator: mkdir %s failed",
-@@ -1516,9 +1658,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1519,9 +1661,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
}
else if (delete_during && f_out != -1 && !phase
&& !(file->flags & FLAG_MISSING_DIR)) {
change_local_filter_dir(fname, strlen(fname), F_DEPTH(file));
}
prior_dir_file = file;
-@@ -1786,8 +1931,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1789,8 +1934,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
goto cleanup;
}
#endif
rsyserr(FERROR_XFER, stat_errno, "recv_generator: failed to stat %s",
full_fname(fname));
goto cleanup;
-@@ -2253,6 +2404,12 @@ void generate_files(int f_out, const char *local_name)
+@@ -2256,6 +2407,12 @@ void generate_files(int f_out, const char *local_name)
if (DEBUG_GTE(GENR, 1))
rprintf(FINFO, "generator starting pid=%d\n", (int)getpid());
if (delete_before && !solo_file && cur_flist->used > 0)
do_delete_pass();
if (delete_during == 2) {
-@@ -2261,7 +2418,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2264,7 +2421,7 @@ void generate_files(int f_out, const char *local_name)
}
info_levels[INFO_FLIST] = info_levels[INFO_PROGRESS] = 0;
whole_file = 0;
if (DEBUG_GTE(FLIST, 1)) {
rprintf(FINFO, "delta-transmission %s\n",
-@@ -2297,7 +2454,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2300,7 +2457,7 @@ void generate_files(int f_out, const char *local_name)
dirdev = MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp));
} else
dirdev = MAKEDEV(0, 0);
} else
change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
}
-@@ -2344,7 +2501,21 @@ void generate_files(int f_out, const char *local_name)
+@@ -2347,7 +2504,21 @@ void generate_files(int f_out, const char *local_name)
} while ((cur_flist = cur_flist->next) != NULL);
if (delete_during)
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
extern int human_readable;
extern int ignore_existing;
extern int ignore_non_existing;
-@@ -1713,6 +1714,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1716,6 +1717,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
goto cleanup;
}
fnamecmp_type = FNAMECMP_FNAME;
if (statret == 0 && !(stype == FT_REG || (write_devices && stype == FT_DEVICE))) {
-@@ -2159,6 +2166,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
+@@ -2162,6 +2169,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
ignore_existing = -ignore_existing;
ignore_non_existing = -ignore_non_existing;
update_only = -update_only;
always_checksum = -always_checksum;
size_only = -size_only;
append_mode = -append_mode;
-@@ -2184,6 +2192,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
+@@ -2187,6 +2195,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
ignore_existing = -ignore_existing;
ignore_non_existing = -ignore_non_existing;
update_only = -update_only;
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/compat.c b/compat.c
--- a/compat.c
+++ b/compat.c
#ifdef SUPPORT_ACLS
if (preserve_acls && !S_ISLNK(file->mode)) {
if (!ACL_READY(*sxp))
-@@ -1451,6 +1462,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1454,6 +1465,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
if (!preserve_perms) { /* See comment in non-dir code below. */
file->mode = dest_mode(file->mode, sx.st.st_mode, dflt_perms, statret == 0);
}
if (statret != 0 && basis_dir[0] != NULL) {
int j = try_dests_non(file, fname, ndx, fnamecmpbuf, &sx, itemizing, code);
if (j == -2) {
-@@ -1493,10 +1508,15 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1496,10 +1511,15 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
* readable and writable permissions during the time we are
* putting files within them. This is then restored to the
* former permissions after the transfer is done. */
rsyserr(FERROR_XFER, errno,
"failed to modify permissions on %s",
full_fname(fname));
-@@ -1531,6 +1551,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1534,6 +1554,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
int exists = statret == 0 && stype != FT_DIR;
file->mode = dest_mode(file->mode, sx.st.st_mode, dflt_perms, exists);
}
#ifdef SUPPORT_HARD_LINKS
if (preserve_hard_links && F_HLINK_NOT_FIRST(file)
-@@ -2104,17 +2128,25 @@ static void touch_up_dirs(struct file_list *flist, int ndx)
+@@ -2107,17 +2131,25 @@ static void touch_up_dirs(struct file_list *flist, int ndx)
continue;
fname = f_name(file, NULL);
if (fix_dir_perms)
+extern int fileflags_ndx;
extern int acls_ndx;
extern int xattrs_ndx;
- extern int file_sum_len;
-@@ -879,6 +907,11 @@ extern int file_sum_len;
+ extern int file_sum_extra_cnt;
+@@ -879,6 +907,11 @@ extern int file_sum_extra_cnt;
/* When the associated option is on, all entries will have these present: */
#define F_OWNER(f) REQ_EXTRA(f, uid_ndx)->unum
#define F_GROUP(f) REQ_EXTRA(f, gid_ndx)->unum
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
if (ex->rflags & FILTRULE_PERDIR_MERGE)
teardown_mergelist(ex);
free(ex->pattern);
-@@ -1003,7 +1025,9 @@ static void report_filter_result(enum logcode code, char const *name,
+@@ -1005,7 +1027,9 @@ static void report_filter_result(enum logcode code, char const *name,
/* This function is used to check if a file should be included/excluded
* from the list of files based on its name and type etc. The value of
int name_is_excluded(const char *fname, int name_flags, int filter_level)
{
if (daemon_filter_list.head && check_filter(&daemon_filter_list, FLOG, fname, name_flags) < 0) {
-@@ -1012,6 +1036,9 @@ int name_is_excluded(const char *fname, int name_flags, int filter_level)
+@@ -1014,6 +1038,9 @@ int name_is_excluded(const char *fname, int name_flags, int filter_level)
return 1;
}
if (filter_level != ALL_FILTERS)
return 0;
-@@ -1031,7 +1058,8 @@ int check_server_filter(filter_rule_list *listp, enum logcode code, const char *
+@@ -1033,7 +1060,8 @@ int check_server_filter(filter_rule_list *listp, enum logcode code, const char *
}
/* Return -1 if file "name" is defined to be excluded by the specified
int check_filter(filter_rule_list *listp, enum logcode code,
const char *name, int name_flags)
{
-@@ -1054,10 +1082,12 @@ int check_filter(filter_rule_list *listp, enum logcode code,
+@@ -1056,10 +1084,12 @@ int check_filter(filter_rule_list *listp, enum logcode code,
}
if (rule_matches(name, ent, name_flags)) {
report_filter_result(code, name, ent, name_flags, listp->debug_type);
return 0;
}
-@@ -1074,9 +1104,45 @@ static const uchar *rule_strcmp(const uchar *str, const char *rule, int rule_len
+@@ -1076,9 +1106,45 @@ static const uchar *rule_strcmp(const uchar *str, const char *rule, int rule_len
return NULL;
}
/* Gets the next include/exclude rule from *rulestr_ptr and advances
* *rulestr_ptr to point beyond it. Stores the pattern's start (within
-@@ -1091,6 +1157,7 @@ static filter_rule *parse_rule_tok(const char **rulestr_ptr,
+@@ -1093,6 +1159,7 @@ static filter_rule *parse_rule_tok(const char **rulestr_ptr,
const char **pat_ptr, unsigned int *pat_len_ptr)
{
const uchar *s = (const uchar *)*rulestr_ptr;
filter_rule *rule;
unsigned int len;
-@@ -1109,6 +1176,12 @@ static filter_rule *parse_rule_tok(const char **rulestr_ptr,
+@@ -1111,6 +1178,12 @@ static filter_rule *parse_rule_tok(const char **rulestr_ptr,
/* Inherit from the template. Don't inherit FILTRULES_SIDES; we check
* that later. */
rule->rflags = template->rflags & FILTRULES_FROM_CONTAINER;
/* Figure out what kind of a filter rule "s" is pointing at. Note
* that if FILTRULE_NO_PREFIXES is set, the rule is either an include
-@@ -1255,11 +1328,63 @@ static filter_rule *parse_rule_tok(const char **rulestr_ptr,
+@@ -1257,11 +1330,63 @@ static filter_rule *parse_rule_tok(const char **rulestr_ptr,
goto invalid;
rule->rflags |= FILTRULE_EXCLUDE_SELF;
break;
case 'p':
rule->rflags |= FILTRULE_PERISHABLE;
break;
-@@ -1573,6 +1698,23 @@ char *get_rule_prefix(filter_rule *rule, const char *pat, int for_xfer,
+@@ -1575,6 +1700,23 @@ char *get_rule_prefix(filter_rule *rule, const char *pat, int for_xfer,
else if (am_sender)
return NULL;
}
- Make this code handle multibyte character encodings, and honor the
--iconv setting when converting case.
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/exclude.c b/exclude.c
--- a/exclude.c
+++ b/exclude.c
-@@ -963,16 +963,15 @@ static int rule_matches(const char *fname, filter_rule *ex, int name_flags)
+@@ -965,16 +965,15 @@ static int rule_matches(const char *fname, filter_rule *ex, int name_flags)
if (litmatch_array(pattern, strings, slash_handling))
return ret_match;
} else if (anchored_match) {
./configure
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/daemon-parm.txt b/daemon-parm.txt
--- a/daemon-parm.txt
+++ b/daemon-parm.txt
-@@ -61,6 +61,7 @@ BOOL reverse_lookup True
+@@ -60,6 +60,7 @@ BOOL read_only True
+ BOOL reverse_lookup True
BOOL strict_modes True
BOOL transfer_logging False
- BOOL use_chroot True
+BOOL use_gssapi False
BOOL write_only False
./configure
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
extern const char *checksum_choice;
#define NNI_BUILTIN (1<<0)
-@@ -541,7 +543,7 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
+@@ -538,7 +540,7 @@ void file_checksum(const char *fname, const STRUCT_STAT *st_p, char *sum)
}
static int32 sumresidue;
#ifdef SUPPORT_XXHASH
static XXH64_state_t* xxh64_state;
#endif
-@@ -591,6 +593,8 @@ int sum_init(struct name_num_item *nni, int seed)
+@@ -593,6 +595,8 @@ int sum_init(struct name_num_item *nni, int seed)
#endif
case CSUM_MD5:
md5_begin(&ctx_md);
break;
case CSUM_MD4:
mdfour_begin(&ctx_md);
-@@ -644,6 +648,8 @@ void sum_update(const char *p, int32 len)
+@@ -646,6 +650,8 @@ void sum_update(const char *p, int32 len)
#endif
case CSUM_MD5:
md5_update(&ctx_md, (uchar *)p, len);
break;
case CSUM_MD4:
case CSUM_MD4_OLD:
-@@ -710,6 +716,8 @@ void sum_end(char *sum)
+@@ -712,6 +718,8 @@ void sum_end(char *sum)
#endif
case CSUM_MD5:
md5_result(&ctx_md, (uchar *)sum);
diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
--- a/rsyncd.conf.5.md
+++ b/rsyncd.conf.5.md
-@@ -356,6 +356,23 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
+@@ -380,6 +380,23 @@ the values of parameters. See the GLOBAL PARAMETERS section for more details.
is 0, which means no limit. A negative value disables the module. See
also the "[lock file](#)" parameter.
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
iflags |= ITEM_REPORT_GROUP;
#ifdef SUPPORT_ACLS
if (preserve_acls && !S_ISLNK(file->mode)) {
-@@ -1448,7 +1450,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1451,7 +1453,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
real_ret = statret;
if (file->flags & FLAG_DIR_CREATED)
statret = -1;
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c
TODO: the configure changes should abort if the user requests --enable-slp
and we can't honor that request.
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/Makefile.in b/Makefile.in
--- a/Makefile.in
+++ b/Makefile.in
diff --git a/clientserver.c b/clientserver.c
--- a/clientserver.c
+++ b/clientserver.c
-@@ -1527,6 +1527,13 @@ int daemon_main(void)
+@@ -1533,6 +1533,13 @@ int daemon_main(void)
* address too. In fact, why not just do getnameinfo on the
* local address??? */
## MODULE PARAMETERS
After the global parameters you should define a number of modules, each module
-@@ -1176,6 +1191,7 @@ A more sophisticated example would be:
+@@ -1200,6 +1215,7 @@ A more sophisticated example would be:
> max connections = 4
> syslog facility = local5
> pid file = /var/run/rsyncd.pid
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/syscall.c b/syscall.c
--- a/syscall.c
+++ b/syscall.c
-- Matt McCutchen <hashproduct@gmail.com>
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/options.c b/options.c
--- a/options.c
+++ b/options.c
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/fileio.c b/fileio.c
--- a/fileio.c
+++ b/fileio.c
./configure (optional if already run)
make
-based-on: 8b1b81e054bdcc927ff26f20f424e034bd273175
+based-on: f9e29dfb0912f2689ad10a7ba14ebb3ed43cf153
diff --git a/flist.c b/flist.c
--- a/flist.c
+++ b/flist.c