./configure (optional if already run)
make
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
diff --git a/fileio.c b/fileio.c
--- a/fileio.c
+++ b/fileio.c
extern int sparse_files;
+extern long sparse_files_block_size;
- static char last_byte;
static OFF_T sparse_seek = 0;
-@@ -115,7 +116,7 @@ int write_file(int f, char *buf, int len)
+
+@@ -119,7 +120,7 @@ int write_file(int f, char *buf, int len)
while (len > 0) {
int r1;
if (sparse_files > 0) {
- int len1 = MIN(len, SPARSE_WRITE_SIZE);
-+ int len1 = MIN(len, (size_t)sparse_files_block_size);
++ int len1 = MIN(len, sparse_files_block_size);
r1 = write_sparse(f, buf, len1);
} else {
if (!wf_writeBuf) {
int do_compression = 0;
int def_compress_level = Z_DEFAULT_COMPRESSION;
int am_root = 0; /* 0 = normal, 1 = root, 2 = --super, -1 = --fake-super */
-@@ -359,6 +360,7 @@ void usage(enum logcode F)
+@@ -357,6 +358,7 @@ void usage(enum logcode F)
rprintf(F," --fake-super store/recover privileged attrs using xattrs\n");
#endif
rprintf(F," -S, --sparse handle sparse files efficiently\n");
rprintf(F," -n, --dry-run perform a trial run with no changes made\n");
rprintf(F," -W, --whole-file copy files whole (without delta-xfer algorithm)\n");
rprintf(F," -x, --one-file-system don't cross filesystem boundaries\n");
-@@ -543,6 +545,7 @@ static struct poptOption long_options[] = {
+@@ -541,6 +543,7 @@ static struct poptOption long_options[] = {
{"sparse", 'S', POPT_ARG_VAL, &sparse_files, 1, 0, 0 },
{"no-sparse", 0, POPT_ARG_VAL, &sparse_files, 0, 0, 0 },
{"no-S", 0, POPT_ARG_VAL, &sparse_files, 0, 0, 0 },
{"inplace", 0, POPT_ARG_VAL, &inplace, 1, 0, 0 },
{"no-inplace", 0, POPT_ARG_VAL, &inplace, 0, 0, 0 },
{"append", 0, POPT_ARG_NONE, 0, OPT_APPEND, 0, 0 },
-@@ -1907,6 +1910,12 @@ void server_options(char **args, int *argc_p)
+@@ -1912,6 +1915,12 @@ void server_options(char **args, int *argc_p)
args[ac++] = arg;
}
diff --git a/rsync.yo b/rsync.yo
--- a/rsync.yo
+++ b/rsync.yo
-@@ -356,6 +356,7 @@ to the detailed description below for a complete description. verb(
+@@ -369,6 +369,7 @@ to the detailed description below for a complete description. verb(
--super receiver attempts super-user activities
--fake-super store/recover privileged attrs using xattrs
-S, --sparse handle sparse files efficiently
-n, --dry-run perform a trial run with no changes made
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
-x, --one-file-system don't cross filesystem boundaries
-@@ -1056,6 +1057,15 @@ NOTE: Don't use this option when the destination is a Solaris "tmpfs"
- filesystem. It doesn't seem to handle seeks over null regions
- correctly and ends up corrupting the files.
+@@ -1122,6 +1123,15 @@ dit(bf(-S, --sparse)) Try to handle sparse files efficiently so they take
+ up less space on the destination. Conflicts with bf(--inplace) because it's
+ not possible to overwrite data in a sparse fashion.
+dit(bf(--sparse-block=SIZE)) Change the block size used to handle sparse files
+to SIZE bytes. This option only has an effect if the bf(--sparse) (bf(-S))