Fix alignment issue on 64-bit. Solution from Steve Ortiz.
[rsync/rsync-patches.git] / slow-down.diff
index 87f8f5e..ba38499 100644 (file)
@@ -8,29 +8,38 @@ should really be a way to affect more of rsync's processing, perhaps by
 specifying a maximum disk I/O rate (and have that affect a maximum stat()
 rate or something like that).
 
---- old/flist.c
-+++ new/flist.c
-@@ -58,6 +58,7 @@ extern int copy_links;
- extern int copy_unsafe_links;
- extern int protocol_version;
- extern int sanitize_paths;
+To use this patch, run these commands for a successful build:
+
+    patch -p1 <patches/slow-down.diff
+    ./configure                           (optional if already run)
+    make
+
+based-on: a01e3b490eb36ccf9e704840e1b6683dab867550
+diff --git a/flist.c b/flist.c
+--- a/flist.c
++++ b/flist.c
+@@ -72,6 +72,7 @@ extern int sender_symlink_iconv;
+ extern int output_needs_newline;
+ extern int sender_keeps_checksum;
+ extern int unsort_ndx;
 +extern unsigned long sleep_asec;
- extern const char *io_write_phase;
  extern struct stats stats;
- extern struct file_list *the_file_list;
-@@ -1049,6 +1050,9 @@ static void send_directory(int f, struct
+ extern char *filesfrom_host;
+ extern char *usermap, *groupmap;
+@@ -1754,6 +1755,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len,
                }
  
-               send_file_name(f, flist, fbuf, NULL, 0);
+               send_file_name(f, flist, fbuf, NULL, flags, filter_level);
 +              /* Sleep for a bit, to avoid hammering the disk. */
 +              if (sleep_asec)
 +                      usleep(sleep_asec);
        }
  
        fbuf[len] = '\0';
---- old/options.c
-+++ new/options.c
-@@ -102,6 +102,7 @@ int size_only = 0;
+diff --git a/options.c b/options.c
+--- a/options.c
++++ b/options.c
+@@ -108,6 +108,7 @@ int size_only = 0;
  int daemon_bwlimit = 0;
  int bwlimit = 0;
  int fuzzy_basis = 0;
@@ -38,19 +47,19 @@ rate or something like that).
  size_t bwlimit_writemax = 0;
  int ignore_existing = 0;
  int ignore_non_existing = 0;
-@@ -364,6 +365,7 @@ void usage(enum logcode F)
-   rprintf(F,"     --password-file=FILE    read password from FILE\n");
+@@ -776,6 +777,7 @@ void usage(enum logcode F)
+   rprintf(F,"     --password-file=FILE    read daemon-access password from FILE\n");
    rprintf(F,"     --list-only             list the files instead of copying them\n");
-   rprintf(F,"     --bwlimit=KBPS          limit I/O bandwidth; KBytes per second\n");
+   rprintf(F,"     --bwlimit=RATE          limit socket I/O bandwidth\n");
 +  rprintf(F,"     --slow-down=USECs       sleep N usec while creating the filelist\n");
    rprintf(F,"     --write-batch=FILE      write a batched update to FILE\n");
    rprintf(F,"     --only-write-batch=FILE like --write-batch but w/o updating destination\n");
    rprintf(F,"     --read-batch=FILE       read a batched update from FILE\n");
-@@ -492,6 +494,7 @@ static struct poptOption long_options[] 
-   {"log-format",       0,  POPT_ARG_STRING, &log_format, 0, 0, 0 },
+@@ -964,6 +966,7 @@ static struct poptOption long_options[] = {
    {"itemize-changes", 'i', POPT_ARG_NONE,   0, 'i', 0, 0 },
-   {"bwlimit",          0,  POPT_ARG_INT,    &bwlimit, 0, 0, 0 },
+   {"no-itemize-changes",0, POPT_ARG_VAL,    &itemize_changes, 0, 0, 0 },
+   {"no-i",             0,  POPT_ARG_VAL,    &itemize_changes, 0, 0, 0 },
 +  {"slow-down",        0,  POPT_ARG_LONG,   &sleep_asec, 0, 0, 0 },
-   {"backup",          'b', POPT_ARG_NONE,   &make_backups, 0, 0, 0 },
-   {"backup-dir",       0,  POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
-   {"suffix",           0,  POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
+   {"bwlimit",          0,  POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
+   {"no-bwlimit",       0,  POPT_ARG_VAL,    &bwlimit, 0, 0, 0 },
+   {"backup",          'b', POPT_ARG_VAL,    &make_backups, 1, 0, 0 },