Add --no-whole-file and --no-blocking-io options
authorDavid Dykstra <dwd@samba.org>
Tue, 5 Feb 2002 23:05:31 +0000 (23:05 +0000)
committerDavid Dykstra <dwd@samba.org>
Tue, 5 Feb 2002 23:05:31 +0000 (23:05 +0000)
NEWS
main.c
options.c
rsync.yo

diff --git a/NEWS b/NEWS
index b81dadd..620db73 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -7,3 +7,5 @@ rsync 2.5.3 (not released yet)
       what was historically used so as not to break scripts that try
       to parse the output.
 
+    * Added --no-whole-file and --no-blocking-io options
+
diff --git a/main.c b/main.c
index 4052ea9..fa5ecc0 100644 (file)
--- a/main.c
+++ b/main.c
@@ -207,10 +207,11 @@ static pid_t do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int
 
                args[argc++] = rsync_path;
 
-               server_options(args,&argc);
+               if ((blocking_io == -1) && (strcmp(cmd, RSYNC_RSH) == 0))
+                       blocking_io = 1;
 
+               server_options(args,&argc);
 
-               if (strcmp(cmd, RSYNC_RSH) == 0) blocking_io = 1;
        }
 
        args[argc++] = ".";
@@ -711,7 +712,8 @@ static int start_client(int argc, char *argv[])
                if (!p) {
                        local_server = 1;
                        /* disable "rsync algorithm" when both sides local */
-                       whole_file = 1;
+                       if (whole_file == -1)
+                               whole_file = 1;
                } else if (p[1] == ':') {
                        *p = 0;
                        return start_socket_client(argv[argc-1], p+2, argc-1, argv);
index 612eafd..98673cc 100644 (file)
--- a/options.c
+++ b/options.c
@@ -22,7 +22,7 @@
 #include "popt.h"
 
 int make_backups = 0;
-int whole_file = 0;
+int whole_file = -1;
 int copy_links = 0;
 int preserve_links = 0;
 int preserve_hard_links = 0;
@@ -73,7 +73,7 @@ int modify_window=2;
 #else
 int modify_window=0;
 #endif
-int blocking_io=0;
+int blocking_io=-1;
 
 /** Network address family. **/
 #ifdef INET6
@@ -203,6 +203,7 @@ void usage(enum logcode F)
   rprintf(F," -S, --sparse                handle sparse files efficiently\n");
   rprintf(F," -n, --dry-run               show what would have been transferred\n");
   rprintf(F," -W, --whole-file            copy whole files, no incremental checks\n");
+  rprintf(F,"     --no-whole-file         turn off --whole-file\n");
   rprintf(F," -x, --one-file-system       don't cross filesystem boundaries\n");
   rprintf(F," -B, --block-size=SIZE       checksum blocking size (default %d)\n",BLOCK_SIZE);  
   rprintf(F," -e, --rsh=COMMAND           specify rsh replacement\n");
@@ -237,6 +238,7 @@ void usage(enum logcode F)
   rprintf(F,"     --config=FILE           specify alternate rsyncd.conf file\n");  
   rprintf(F,"     --port=PORT             specify alternate rsyncd port number\n");
   rprintf(F,"     --blocking-io           use blocking IO for the remote shell\n");  
+  rprintf(F,"     --no-blocking-io        turn off --blocking-io\n");  
   rprintf(F,"     --stats                 give some file transfer stats\n");  
   rprintf(F,"     --progress              show progress during transfer\n");  
   rprintf(F,"     --log-format=FORMAT     log file transfers using specified format\n");  
@@ -264,6 +266,7 @@ enum {OPT_VERSION = 1000, OPT_SUFFIX, OPT_SENDER, OPT_SERVER, OPT_EXCLUDE,
       OPT_LOG_FORMAT, OPT_PASSWORD_FILE, OPT_SIZE_ONLY, OPT_ADDRESS,
       OPT_DELETE_AFTER, OPT_EXISTING, OPT_MAX_DELETE, OPT_BACKUP_DIR, 
       OPT_IGNORE_ERRORS, OPT_BWLIMIT, OPT_BLOCKING_IO,
+      OPT_NO_BLOCKING_IO, OPT_NO_WHOLE_FILE,
       OPT_MODIFY_WINDOW, OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_IGNORE_EXISTING};
 
 static struct poptOption long_options[] = {
@@ -297,6 +300,7 @@ static struct poptOption long_options[] = {
   {"links",           'l', POPT_ARG_NONE,   &preserve_links},
   {"copy-links",      'L', POPT_ARG_NONE,   &copy_links},
   {"whole-file",      'W', POPT_ARG_NONE,   &whole_file},
+  {"no-whole-file",    0,  POPT_ARG_NONE,   0,                      OPT_NO_WHOLE_FILE},
   {"copy-unsafe-links", 0, POPT_ARG_NONE,   &copy_unsafe_links},
   {"perms",           'p', POPT_ARG_NONE,   &preserve_perms},
   {"owner",           'o', POPT_ARG_NONE,   &preserve_uid},
@@ -326,6 +330,7 @@ static struct poptOption long_options[] = {
   {"partial",          0,  POPT_ARG_NONE,   &keep_partial},
   {"ignore-errors",    0,  POPT_ARG_NONE,   &ignore_errors},
   {"blocking-io",      0,  POPT_ARG_NONE,   &blocking_io},
+  {"no-blocking-io",   0,  POPT_ARG_NONE,   0,                      OPT_NO_BLOCKING_IO},
   {0,                 'P', POPT_ARG_NONE,   0,               'P'},
   {"config",           0,  POPT_ARG_STRING, &config_file},
   {"port",             0,  POPT_ARG_INT,    &rsync_port},
@@ -455,8 +460,12 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                        add_exclude_file(poptGetOptArg(pc), 1, 0);
                        break;
 
-               case OPT_INCLUDE_FROM:
-                       add_exclude_file(poptGetOptArg(pc), 1, 1);
+               case OPT_NO_WHOLE_FILE:
+                       whole_file = 0;
+                       break;
+
+               case OPT_NO_BLOCKING_IO:
+                       blocking_io = 0;
                        break;
 
                case 'h':
@@ -557,6 +566,11 @@ void server_options(char **args,int *argc)
 
        int i, x;
 
+       if (whole_file == -1)
+               whole_file = 0;
+       if (blocking_io == -1)
+               blocking_io = 0;
+
        args[ac++] = "--server";
 
        if (!am_sender)
index 95f33f1..035a352 100644 (file)
--- a/rsync.yo
+++ b/rsync.yo
@@ -239,6 +239,7 @@ verb(
  -S, --sparse                handle sparse files efficiently
  -n, --dry-run               show what would have been transferred
  -W, --whole-file            copy whole files, no incremental checks
+     --no-whole-file         turn off --whole-file
  -x, --one-file-system       don't cross filesystem boundaries
  -B, --block-size=SIZE       checksum blocking size (default 700)
  -e, --rsh=COMMAND           specify rsh replacement
@@ -273,6 +274,7 @@ verb(
      --config=FILE           specify alternate rsyncd.conf file
      --port=PORT             specify alternate rsyncd port number
      --blocking-io           use blocking IO for the remote shell
+     --no-blocking-io        turn off --blocking-io
      --stats                 give some file transfer stats
      --progress              show progress during transfer
      --log-format=FORMAT     log file transfers using specified format
@@ -411,6 +413,9 @@ target machines is higher than the bandwidth to disk (especially when the
 "disk" is actually a networked file system).  This is the default when both
 the source and target are on the local machine.
 
+dit(bf(--no-whole-file)) Turn off --whole-file, for use when it is the
+default.
+
 dit(bf(-p, --perms)) This option causes rsync to update the remote
 permissions to be the same as the local permissions.
 
@@ -657,6 +662,9 @@ the default "rsh", this defaults to blocking IO, otherwise it defaults to
 non-blocking IO.  You may find the --blocking-io option is needed for some
 remote shells that can't handle non-blocking IO.  Ssh prefers blocking IO.
 
+dit(bf(--no-blocking-io)) Turn off --blocking-io, for use when it is the
+default.
+
 dit(bf(--log-format=FORMAT)) This allows you to specify exactly what the
 rsync client logs to stdout on a per-file basis. The log format is
 specified using the same format conventions as the log format option in