BSD doesn't have /etc/resolv.conf or /etc/inittab, and hands.test was
[rsync/rsync.git] / options.c
index 35a6dc6..ec0fc70 100644 (file)
--- a/options.c
+++ b/options.c
@@ -74,6 +74,9 @@ int modify_window=0;
 #endif
 int blocking_io=0;
 
+int read_batch=0;  /* dw */
+int write_batch=0; /* dw */
+
 char *backup_suffix = BACKUP_SUFFIX;
 char *tmpdir = NULL;
 char *compare_dest = NULL;
@@ -90,6 +93,8 @@ int quiet = 0;
 int always_checksum = 0;
 int list_only = 0;
 
+char *batch_ext = NULL;
+
 static int modify_window_set;
 
 
@@ -118,9 +123,10 @@ static void print_rsync_version(int f)
                 RSYNC_NAME, VERSION, PROTOCOL_VERSION);
         rprintf(f,
                 "Copyright (C) 1996-2001 by Andrew Tridgell, Paul Mackerras and others\n");
+       rprintf(f, "<http://rsync.samba.org/>\n");
         rprintf(f, "Capabilities: %d-bit files, %ssocketpairs, "
-                "%shard links, %ssymlinks\n\n",
-                sizeof(int64) * 8,
+                "%shard links, %ssymlinks, batchfiles\n\n",
+                (int) (sizeof(int64) * 8),
                 got_socketpair,
                 hardlinks, links);
 
@@ -206,6 +212,8 @@ void usage(enum logcode F)
   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," -f  --read-batch=EXT        read batch file\n");
+  rprintf(F," -F  --write-batch           write batch file\n");
   rprintf(F," -h, --help                  show this help screen\n");
 
   rprintf(F,"\n");
@@ -290,10 +298,11 @@ static struct poptOption long_options[] = {
   {"address",          0,  POPT_ARG_STRING, 0,               OPT_ADDRESS},
   {"backup-dir",       0,  POPT_ARG_STRING, &backup_dir},
   {"hard-links",      'H', POPT_ARG_NONE,   &preserve_hard_links},
+  {"read-batch",      'f', POPT_ARG_STRING, &batch_ext, 'f'},
+  {"write-batch",     'F', POPT_ARG_NONE,   &write_batch, 0},
   {0,0,0,0}
 };
 
-
 static char err_buf[100];
 
 
@@ -462,12 +471,17 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
                case OPT_ADDRESS:
                        {
                                struct in_addr *ia;
-                               if ((ia = ip_address(optarg))) {
+                               if ((ia = ip_address (poptGetOptArg (pc)))) {
                                        socket_address = *ia;
                                }
                        }
                        break;
 
+               case 'f':
+                       /* The filename is stored for us by popt */
+                       read_batch = 1;
+                       break;
+
                default:
                         /* FIXME: If --daemon is specified, then errors for later
                          * parameters seem to disappear. */
@@ -501,6 +515,7 @@ void server_options(char **args,int *argc)
        static char mdelete[30];
        static char mwindow[30];
        static char bw[50];
+       static char fext[20]; /* dw */
 
        int i, x;
 
@@ -555,6 +570,8 @@ void server_options(char **args,int *argc)
                argstr[x++] = 'S';
        if (do_compression)
                argstr[x++] = 'z';
+       if (write_batch)
+           argstr[x++] = 'F'; /* dw */
 
        /* this is a complete hack - blame Rusty 
 
@@ -576,6 +593,11 @@ void server_options(char **args,int *argc)
                snprintf(mdelete,sizeof(mdelete),"--max-delete=%d",max_delete);
                args[ac++] = mdelete;
        }    
+       
+       if (batch_ext != NULL) {
+               sprintf(fext,"-f%s",batch_ext);
+               args[ac++] = fext;
+       }
 
        if (io_timeout) {
                snprintf(iotime,sizeof(iotime),"--timeout=%d",io_timeout);