#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;
char *shell_cmd = NULL;
char *log_format = NULL;
char *password_file = NULL;
-char *rsync_path = RSYNC_NAME;
+char *rsync_path = RSYNC_PATH;
char *backup_dir = NULL;
int rsync_port = RSYNC_PORT;
int always_checksum = 0;
int list_only = 0;
+char *batch_ext = NULL;
+
static int modify_window_set;
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);
#ifdef NO_INT64
- rprintf(logcode, "WARNING: no 64-bit integers on this platform!\n");
+ rprintf(f, "WARNING: no 64-bit integers on this platform!\n");
#endif
}
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");
{"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];
while ((p = strstr(ref,name))) {
if ((p==ref || p[-1]==' ') &&
(p[len] == ' ' || p[len] == 0)) {
- slprintf(err_buf,sizeof(err_buf),
+ snprintf(err_buf,sizeof(err_buf),
"The '%s' option is not supported by this server\n", name);
return 1;
}
/* The context leaks in case of an error, but if there's a
* problem we always exit anyhow. */
- pc = poptGetContext(RSYNC_NAME, *argc, (const char **) *argv,
- long_options, 0);
+ pc = poptGetContext(RSYNC_NAME, *argc, *argv, long_options, 0);
while ((opt = poptGetNextOpt(pc)) != -1) {
if (ref) {
* rprintf? Everybody who gets this message
* ought to send it to the client and also to
* the logs. */
- slprintf(err_buf,sizeof(err_buf),
+ snprintf(err_buf,sizeof(err_buf),
"hard links are not supported on this %s\n",
am_server ? "server" : "client");
rprintf(FERROR,"ERROR: hard links not supported on this platform\n");
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. */
- slprintf(err_buf, sizeof(err_buf),
+ snprintf(err_buf, sizeof(err_buf),
"%s%s: %s\n",
am_server ? "on remote machine: " : "",
poptBadOption(pc, POPT_BADOPTION_NOALIAS),
static char mdelete[30];
static char mwindow[30];
static char bw[50];
+ static char fext[20]; /* dw */
int i, x;
argstr[x++] = 'S';
if (do_compression)
argstr[x++] = 'z';
+ if (write_batch)
+ argstr[x++] = 'F'; /* dw */
/* this is a complete hack - blame Rusty
if (x != 1) args[ac++] = argstr;
if (block_size != BLOCK_SIZE) {
- slprintf(bsize,sizeof(bsize),"-B%d",block_size);
+ snprintf(bsize,sizeof(bsize),"-B%d",block_size);
args[ac++] = bsize;
}
if (max_delete && am_sender) {
- slprintf(mdelete,sizeof(mdelete),"--max-delete=%d",max_delete);
+ 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) {
- slprintf(iotime,sizeof(iotime),"--timeout=%d",io_timeout);
+ snprintf(iotime,sizeof(iotime),"--timeout=%d",io_timeout);
args[ac++] = iotime;
}
if (bwlimit) {
- slprintf(bw,sizeof(bw),"--bwlimit=%d",bwlimit);
+ snprintf(bw,sizeof(bw),"--bwlimit=%d",bwlimit);
args[ac++] = bw;
}
args[ac++] = "--size-only";
if (modify_window_set) {
- slprintf(mwindow,sizeof(mwindow),"--modify-window=%d",
+ snprintf(mwindow,sizeof(mwindow),"--modify-window=%d",
modify_window);
args[ac++] = mwindow;
}