./configure (optional if already run)
make
+based-on: a01e3b490eb36ccf9e704840e1b6683dab867550
diff --git a/fileio.c b/fileio.c
--- a/fileio.c
+++ b/fileio.c
-@@ -26,6 +26,7 @@
+@@ -27,6 +27,7 @@
#endif
extern int sparse_files;
-+extern long sparse_files_block_size;
++extern int sparse_files_block_size;
static char last_byte;
- static size_t sparse_seek = 0;
-@@ -115,7 +116,7 @@ int write_file(int f,char *buf,size_t len)
+ static OFF_T sparse_seek = 0;
+@@ -116,7 +117,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 */
-@@ -358,6 +359,7 @@ void usage(enum logcode F)
+@@ -704,6 +705,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");
-@@ -542,6 +544,7 @@ static struct poptOption long_options[] = {
+@@ -900,6 +902,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 },
-@@ -1900,6 +1903,12 @@ void server_options(char **args, int *argc_p)
+@@ -2468,6 +2471,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
-@@ -352,6 +352,7 @@ to the detailed description below for a complete description. verb(
+@@ -359,6 +359,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
-@@ -1049,6 +1050,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.
+@@ -1127,6 +1128,15 @@ NOTE: Don't use this option when the destination is a Solaris "tmpfs"
+ filesystem. It seems to have problems seeking over null regions,
+ and ends up corrupting the files.
+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))