The patches for 3.0.9.
[rsync.git/patches.git] / time-limit.diff
index a86097c9860a9f0ba81111f888b1c438af377b35..0ede999cf61b16145c6585623c76023279a67a9f 100644 (file)
@@ -9,55 +9,51 @@ To use this patch, run these commands for a successful build:
     ./configure                              (optional if already run)
     make
 
---- old/io.c
-+++ new/io.c
-@@ -52,6 +52,7 @@ extern int remove_source_files;
+based-on: 40afd365cc8ca968fd16e161d24df5b8a8a520cc
+diff --git a/io.c b/io.c
+--- a/io.c
++++ b/io.c
+@@ -53,6 +53,7 @@ extern int protocol_version;
+ extern int remove_source_files;
  extern int preserve_hard_links;
- extern char *filesfrom_host;
  extern struct stats stats;
 +extern time_t stop_at_utime;
- extern struct file_list *cur_flist, *first_flist;
+ extern struct file_list *cur_flist;
  #ifdef ICONV_OPTION
- extern iconv_t ic_send, ic_recv;
-@@ -179,16 +180,24 @@ static void check_timeout(void)
+ extern int filesfrom_convert;
+@@ -123,11 +124,19 @@ static void check_timeout(void)
  {
-       time_t t;
+       time_t t, chk;
  
+-      if (!io_timeout || ignore_timeout)
 +      if ((!io_timeout || ignore_timeout) && !stop_at_utime)
-+              return;
-+
-+      t = time(NULL);
-+
+               return;
+       t = time(NULL);
 +      if (stop_at_utime && t >= stop_at_utime) {
 +              rprintf(FERROR, "run-time limit exceeded\n");
 +              exit_cleanup(RERR_TIMEOUT);
 +      }
 +
-       if (!io_timeout || ignore_timeout)
-               return;
-       if (!last_io_in) {
--              last_io_in = time(NULL);
-+              last_io_in = t;
-               return;
-       }
++      if (!io_timeout || ignore_timeout)
++              return;
++
+       if (!last_io_in)
+               last_io_in = t;
  
--      t = time(NULL);
--
-       if (t - last_io_in >= io_timeout) {
-               if (!am_server && !am_daemon) {
-                       rprintf(FERROR, "io timeout after %d seconds -- exiting\n",
---- old/options.c
-+++ new/options.c
-@@ -109,6 +109,7 @@ size_t bwlimit_writemax = 0;
+diff --git a/options.c b/options.c
+--- a/options.c
++++ b/options.c
+@@ -111,6 +111,7 @@ size_t bwlimit_writemax = 0;
  int ignore_existing = 0;
  int ignore_non_existing = 0;
  int need_messages_from_generator = 0;
 +time_t stop_at_utime = 0;
- int max_delete = -1;
+ int max_delete = INT_MIN;
  OFF_T max_size = 0;
  OFF_T min_size = 0;
-@@ -405,6 +406,8 @@ void usage(enum logcode F)
+@@ -423,6 +424,8 @@ 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");
@@ -66,25 +62,25 @@ To use this patch, run these commands for a successful build:
    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");
-@@ -429,7 +432,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OP
+@@ -445,7 +448,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
        OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST, OPT_HELP,
        OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_MIN_SIZE, OPT_CHMOD,
        OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
--      OPT_NO_D,
-+      OPT_NO_D, OPT_STOP_AT, OPT_TIME_LIMIT,
+-      OPT_NO_D, OPT_APPEND, OPT_NO_ICONV,
++      OPT_NO_D, OPT_APPEND, OPT_NO_ICONV, OPT_STOP_AT, OPT_TIME_LIMIT,
        OPT_SERVER, OPT_REFUSED_BASE = 9000};
  
  static struct poptOption long_options[] = {
-@@ -584,6 +587,8 @@ static struct poptOption long_options[] 
-   {"no-numeric-ids",   0,  POPT_ARG_VAL,    &numeric_ids, 0, 0, 0 },
-   {"timeout",          0,  POPT_ARG_INT,    &io_timeout, 0, 0, 0 },
+@@ -625,6 +628,8 @@ static struct poptOption long_options[] = {
    {"no-timeout",       0,  POPT_ARG_VAL,    &io_timeout, 0, 0, 0 },
+   {"contimeout",       0,  POPT_ARG_INT,    &connect_timeout, 0, 0, 0 },
+   {"no-contimeout",    0,  POPT_ARG_VAL,    &connect_timeout, 0, 0, 0 },
 +  {"stop-at",          0,  POPT_ARG_STRING, 0, OPT_STOP_AT, 0, 0 },
 +  {"time-limit",       0,  POPT_ARG_STRING, 0, OPT_TIME_LIMIT, 0, 0 },
    {"rsh",             'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 },
    {"rsync-path",       0,  POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
    {"temp-dir",        'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
-@@ -1196,6 +1201,36 @@ int parse_arguments(int *argc, const cha
+@@ -1259,6 +1264,36 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        return 0;
  #endif
  
@@ -121,7 +117,7 @@ To use this patch, run these commands for a successful build:
                default:
                        /* A large opt value means that set_refuse_options()
                         * turned this option off. */
-@@ -1802,6 +1837,15 @@ void server_options(char **args,int *arg
+@@ -1924,6 +1959,15 @@ void server_options(char **args, int *argc_p)
                args[ac++] = arg;
        }
  
@@ -137,9 +133,10 @@ To use this patch, run these commands for a successful build:
        if (backup_dir) {
                args[ac++] = "--backup-dir";
                args[ac++] = backup_dir;
---- old/rsync.yo
-+++ new/rsync.yo
-@@ -404,6 +404,8 @@ to the detailed description below for a 
+diff --git a/rsync.yo b/rsync.yo
+--- a/rsync.yo
++++ b/rsync.yo
+@@ -435,6 +435,8 @@ to the detailed description below for a complete description.  verb(
       --password-file=FILE    read daemon-access password from FILE
       --list-only             list the files instead of copying them
       --bwlimit=KBPS          limit I/O bandwidth; KBytes per second
@@ -148,7 +145,7 @@ To use this patch, run these commands for a successful build:
       --write-batch=FILE      write a batched update to FILE
       --only-write-batch=FILE like --write-batch but w/o updating dest
       --read-batch=FILE       read a batched update from FILE
-@@ -1839,6 +1841,19 @@ transfer was too fast, it will wait befo
+@@ -2153,6 +2155,19 @@ transfer was too fast, it will wait before sending the next data block. The
  result is an average transfer rate equaling the specified limit. A value
  of zero specifies no limit.
  
@@ -168,9 +165,10 @@ To use this patch, run these commands for a successful build:
  dit(bf(--write-batch=FILE)) Record a file that can later be applied to
  another identical destination with bf(--read-batch). See the "BATCH MODE"
  section for details, and also the bf(--only-write-batch) option.
---- old/util.c
-+++ new/util.c
-@@ -120,6 +120,133 @@ NORETURN void overflow_exit(const char *
+diff --git a/util.c b/util.c
+--- a/util.c
++++ b/util.c
+@@ -123,6 +123,133 @@ NORETURN void overflow_exit(const char *str)
        exit_cleanup(RERR_MALLOC);
  }
  
@@ -301,6 +299,6 @@ To use this patch, run these commands for a successful build:
 +      return val;
 +}
 +
+ /* This returns 0 for success, 1 for a symlink if symlink time-setting
+  * is not possible, or -1 for any other error. */
  int set_modtime(const char *fname, time_t modtime, mode_t mode)
- {
- #if !defined HAVE_LUTIMES || !defined HAVE_UTIMES