Tweaked a comment.
[rsync/rsync.git] / options.c
index 2f73bae..26b26ab 100644 (file)
--- a/options.c
+++ b/options.c
@@ -22,6 +22,7 @@
 #include "popt.h"
 
 extern int sanitize_paths;
+extern int select_timeout;
 extern char curr_dir[MAXPATHLEN];
 extern struct exclude_list_struct exclude_list;
 
@@ -140,7 +141,7 @@ static int daemon_opt;   /* sets am_daemon after option error-reporting */
 static int modify_window_set;
 
 /** Local address to bind.  As a character string because it's
- * interpreted by the IPv6 layer: should be a numeric IP4 or ip6
+ * interpreted by the IPv6 layer: should be a numeric IP4 or IP6
  * address, or a hostname. **/
 char *bind_address;
 
@@ -309,7 +310,7 @@ void usage(enum logcode F)
 enum {OPT_VERSION = 1000, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
       OPT_DELETE_AFTER, OPT_DELETE_EXCLUDED, OPT_LINK_DEST,
       OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW,
-      OPT_READ_BATCH, OPT_WRITE_BATCH,
+      OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_TIMEOUT,
       OPT_REFUSED_BASE = 9000};
 
 static struct poptOption long_options[] = {
@@ -363,7 +364,7 @@ static struct poptOption long_options[] = {
   {"rsh",             'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 },
   {"block-size",      'B', POPT_ARG_INT,    &block_size, 0, 0, 0 },
   {"max-delete",       0,  POPT_ARG_INT,    &max_delete, 0, 0, 0 },
-  {"timeout",          0,  POPT_ARG_INT,    &io_timeout, 0, 0, 0 },
+  {"timeout",          0,  POPT_ARG_INT,    &io_timeout, OPT_TIMEOUT, 0, 0 },
   {"temp-dir",        'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
   {"compare-dest",     0,  POPT_ARG_STRING, &compare_dest, 0, 0, 0 },
   {"link-dest",        0,  POPT_ARG_STRING, &compare_dest,  OPT_LINK_DEST, 0, 0 },
@@ -410,17 +411,12 @@ static char err_buf[200];
  **/
 void option_error(void)
 {
-       int save_daemon = am_daemon;
-
        if (!err_buf[0]) {
                strcpy(err_buf, "Error parsing options: "
                    "option may be supported on client but not on server?\n");
        }
 
-       rwrite(FLOG, err_buf, strlen(err_buf));
-       am_daemon = 0;
        rprintf(FERROR, RSYNC_NAME ": %s", err_buf);
-       am_daemon = save_daemon;
 }
 
 
@@ -584,6 +580,11 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        checksum_seed = FIXED_CHECKSUM_SEED;
                        break;
 
+               case OPT_TIMEOUT:
+                       if (io_timeout && io_timeout < select_timeout)
+                               select_timeout = io_timeout;
+                       break;
+
                case OPT_LINK_DEST:
 #if HAVE_LINK
                        link_dest = 1;