added msleep() function
[rsync/rsync.git] / options.c
index 6009e8d..6050524 100644 (file)
--- a/options.c
+++ b/options.c
@@ -62,10 +62,12 @@ int safe_symlinks=0;
 int copy_unsafe_links=0;
 int block_size=BLOCK_SIZE;
 int size_only=0;
+int bwlimit=0;
 int delete_after=0;
 int only_existing=0;
 int max_delete=0;
 int ignore_errors=0;
+int blocking_io=0;
 
 char *backup_suffix = BACKUP_SUFFIX;
 char *tmpdir = NULL;
@@ -155,10 +157,12 @@ void usage(enum logcode F)
   rprintf(F,"     --address               bind to the specified address\n");  
   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,"     --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");  
   rprintf(F,"     --password-file=FILE    get password from FILE\n");
+  rprintf(F,"     --bwlimit=KBPS          limit I/O bandwidth, KBytes per second\n");
   rprintf(F," -h, --help                  show this help screen\n");
 
   rprintf(F,"\n");
@@ -174,7 +178,7 @@ enum {OPT_VERSION, OPT_SUFFIX, OPT_SENDER, OPT_SERVER, OPT_EXCLUDE,
       OPT_COPY_UNSAFE_LINKS, OPT_SAFE_LINKS, OPT_COMPARE_DEST,
       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_IGNORE_ERRORS, OPT_BWLIMIT, OPT_BLOCKING_IO};
 
 static char *short_options = "oblLWHpguDCtcahvqrRIxnSe:B:T:zP";
 
@@ -232,9 +236,11 @@ static struct option long_options[] = {
   {"partial",     0,     0,    OPT_PARTIAL},
   {"delete-after",0,     0,    OPT_DELETE_AFTER},
   {"ignore-errors",0,     0,   OPT_IGNORE_ERRORS},
+  {"blocking-io" ,0,     0,    OPT_BLOCKING_IO},
   {"config",      1,     0,    OPT_CONFIG},
   {"port",        1,     0,    OPT_PORT},
   {"log-format",  1,     0,    OPT_LOG_FORMAT},
+  {"bwlimit",    1,     0,    OPT_BWLIMIT},
   {"address",     1,     0,    OPT_ADDRESS},
   {"max-delete",  1,     0,    OPT_MAX_DELETE},
   {"backup-dir",  1,     0,    OPT_BACKUP_DIR},
@@ -536,6 +542,10 @@ int parse_arguments(int argc, char *argv[], int frommain)
                        ignore_errors = 1;
                        break;
 
+               case OPT_BLOCKING_IO:
+                       blocking_io = 1;
+                       break;
+
                case 'P':
                        do_progress = 1;
                        keep_partial = 1;
@@ -552,6 +562,10 @@ int parse_arguments(int argc, char *argv[], int frommain)
                case OPT_LOG_FORMAT:
                        log_format = optarg;
                        break;
+       
+               case OPT_BWLIMIT:
+                       bwlimit = atoi(optarg);
+                       break;
 
                case OPT_ADDRESS:
                        {
@@ -584,6 +598,8 @@ void server_options(char **args,int *argc)
        static char bsize[30];
        static char iotime[30];
        static char mdelete[30];
+       static char bw[50];
+
        int i, x;
 
        args[ac++] = "--server";
@@ -655,6 +671,11 @@ void server_options(char **args,int *argc)
                args[ac++] = iotime;
        }    
 
+       if (bwlimit) {
+               slprintf(bw,sizeof(bw),"--bwlimit=%d",bwlimit);
+               args[ac++] = bw;
+       }
+
        if (strcmp(backup_suffix, BACKUP_SUFFIX)) {
                args[ac++] = "--suffix";
                args[ac++] = backup_suffix;