Be sure to run "make proto" before "make".
--- orig/generator.c 2005-01-17 23:11:45
-+++ generator.c 2005-01-16 02:16:38
++++ generator.c 2005-01-17 23:38:46
@@ -44,6 +44,7 @@ extern int size_only;
extern OFF_T max_size;
extern int io_timeout;
extern int always_checksum;
extern char *partial_dir;
extern char *basis_dir[];
-@@ -242,6 +243,83 @@ static void generate_and_send_sums(int f
+@@ -242,6 +243,85 @@ static void generate_and_send_sums(int f
}
+ rsyserr(FERROR, errno, "recv_generator opendir(%s)", dirname);
+ return -1;
+ }
++ if (slash)
++ *slash = '/';
+
+ /* Get final extension, eg. .gz; never full basename though. */
+ for (ext = basename; *ext == '.'; ext++) {}
+
+ /* Found a candidate. */
+ if (bestscore != 0) {
-+ strlcpy(basename, MAXPATHLEN - (basename - buf), bestname);
++ strlcpy(basename, bestname, MAXPATHLEN - (basename - buf));
+ if (verbose > 2)
+ rprintf(FINFO, "fuzzy match %s->%s\n", fname, buf);
+ return link_stat(buf, st_ptr, 0);
/*
* Acts on file number @p i from @p flist, whose name is @p fname.
-@@ -496,6 +574,15 @@ static void recv_generator(char *fname,
+@@ -496,6 +576,15 @@ static void recv_generator(char *fname,
} else
partialptr = NULL;
if (statret == -1) {
if (preserve_hard_links && hard_link_check(file, HL_SKIP))
return;
-@@ -524,6 +611,8 @@ static void recv_generator(char *fname,
+@@ -524,6 +613,8 @@ static void recv_generator(char *fname,
if (!compare_dest && fnamecmp_type <= FNAMECMP_BASIS_DIR_HIGH)
;
else if (unchanged_file(fnamecmp, file, &st)) {
if (fnamecmp_type == FNAMECMP_FNAME)
set_perms(fname, file, &st, PERMS_REPORT);
-@@ -598,8 +687,24 @@ notify_others:
+@@ -598,8 +689,24 @@ notify_others:
write_int(f_out, i);
if (protocol_version >= 29 && inplace && !read_batch)
write_byte(f_out, fnamecmp_type);