log_init();
---- orig/exclude.c 2004-09-22 08:47:31
+--- orig/exclude.c 2004-10-06 00:12:16
+++ exclude.c 2004-08-13 07:40:08
@@ -30,13 +30,69 @@ extern int verbose;
extern int eol_nulls;
if (check_one_exclude(name, ent, name_is_dir)) {
report_exclude_result(name, ent, name_is_dir,
listp->debug_type);
-@@ -253,11 +615,36 @@ static const char *get_exclude_tok(const
+@@ -254,11 +616,36 @@ static const char *get_exclude_tok(const
p = (const char *)s;
}
s += 2;
} else if (xflags & XFLG_DEF_INCLUDE)
mflags |= MATCHFLG_INCLUDE;
-@@ -275,6 +662,8 @@ static const char *get_exclude_tok(const
+@@ -276,6 +663,8 @@ static const char *get_exclude_tok(const
- if (*p == '!' && len == 1 && !(xflags & XFLG_WORDS_ONLY))
+ if (*p == '!' && len == 1)
mflags |= MATCHFLG_CLEAR_LIST;
+ if (xflags & XFLG_ABS_PATH)
+ mflags |= MATCHFLG_ABS_PATH;
*len_ptr = len;
*flag_ptr = mflags;
-@@ -286,7 +675,7 @@ void add_exclude(struct exclude_list_str
+@@ -287,7 +676,7 @@ void add_exclude(struct exclude_list_str
int xflags)
{
unsigned int pat_len, mflags;
if (!pattern)
return;
-@@ -294,9 +683,15 @@ void add_exclude(struct exclude_list_str
+@@ -295,9 +684,15 @@ void add_exclude(struct exclude_list_str
cp = pattern;
pat_len = 0;
while (1) {
if (mflags & MATCHFLG_CLEAR_LIST) {
if (verbose > 2) {
-@@ -308,13 +703,24 @@ void add_exclude(struct exclude_list_str
+@@ -309,13 +704,24 @@ void add_exclude(struct exclude_list_str
continue;
}
}
}
-@@ -323,7 +729,7 @@ void add_exclude_file(struct exclude_lis
+@@ -324,7 +730,7 @@ void add_exclude_file(struct exclude_lis
int xflags)
{
FILE *fp;
char *eob = line + sizeof line - 1;
int word_split = xflags & XFLG_WORD_SPLIT;
-@@ -344,6 +750,12 @@ void add_exclude_file(struct exclude_lis
+@@ -345,6 +751,12 @@ void add_exclude_file(struct exclude_lis
}
return;
}
while (1) {
char *s = line;
-@@ -404,7 +816,21 @@ void send_exclude_list(int f)
+@@ -405,7 +817,21 @@ void send_exclude_list(int f)
if (ent->match_flags & MATCHFLG_INCLUDE) {
write_int(f, l + 2);
write_buf(f, "+ ", 2);
write_int(f, l + 2);
write_buf(f, "- ", 2);
} else
-@@ -445,6 +871,7 @@ void add_cvs_excludes(void)
+@@ -446,6 +872,7 @@ void add_cvs_excludes(void)
char fname[MAXPATHLEN];
char *p;
if (link_stat(fname, &st, keep_dirlinks) != 0) {
if (f != -1) {
io_error |= IOERR_GENERAL;
---- orig/options.c 2004-09-23 17:42:07
-+++ options.c 2004-08-12 18:59:28
+--- orig/options.c 2004-10-14 17:11:40
++++ options.c 2004-10-14 17:26:10
@@ -287,6 +287,7 @@ void usage(enum logcode F)
rprintf(F," --include=PATTERN don't exclude files matching PATTERN\n");
rprintf(F," --include-from=FILE don't exclude patterns listed in FILE\n");
+ rprintf(F," -E same as --exclude='. -p /.rsync-excludes'\n");
rprintf(F," -0, --from0 all *-from file lists are delimited by nulls\n");
rprintf(F," --version print version number\n");
- rprintf(F," --daemon run as an rsync daemon\n");
-@@ -389,6 +390,7 @@ static struct poptOption long_options[]
+ rprintf(F," --blocking-io use blocking I/O for the remote shell\n");
+@@ -380,6 +381,7 @@ static struct poptOption long_options[]
{"ignore-errors", 0, POPT_ARG_NONE, &ignore_errors, 0, 0, 0 },
{"blocking-io", 0, POPT_ARG_VAL, &blocking_io, 1, 0, 0 },
{"no-blocking-io", 0, POPT_ARG_VAL, &blocking_io, 0, 0, 0 },
-+ {0, 'E', POPT_ARG_NONE, 0, 'E', 0, 0 },
- {0, 'P', POPT_ARG_NONE, 0, 'P', 0, 0 },
- {"config", 0, POPT_ARG_STRING, &config_file, 0, 0, 0 },
- {"port", 0, POPT_ARG_INT, &rsync_port, 0, 0, 0 },
-@@ -585,6 +587,11 @@ int parse_arguments(int *argc, const cha
++ {0, 'E', POPT_ARG_NONE, 0, 'E', 0, 0 },
+ {0, 'P', POPT_ARG_NONE, 0, 'P', 0, 0 },
+ {"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 },
+ {"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 },
+@@ -652,6 +654,11 @@ int parse_arguments(int *argc, const cha
am_sender = 1;
break;
case 'P':
do_progress = 1;
keep_partial = 1;
---- orig/rsync.h 2004-09-22 08:47:31
+--- orig/rsync.h 2004-10-09 03:21:56
+++ rsync.h 2004-09-22 08:48:53
@@ -109,6 +109,7 @@
#define XFLG_WORDS_ONLY (1<<2)
#define PERMS_REPORT (1<<0)
#define PERMS_SKIP_MTIME (1<<1)
-@@ -500,11 +501,18 @@ struct map_struct {
+@@ -503,11 +504,18 @@ struct map_struct {
#define MATCHFLG_INCLUDE (1<<4) /* this is an include, not an exclude */
#define MATCHFLG_DIRECTORY (1<<5) /* this matches only directories */
#define MATCHFLG_CLEAR_LIST (1<<6) /* this item is the "!" token */
};
struct exclude_list_struct {
---- orig/rsync.yo 2004-09-24 16:42:30
+--- orig/rsync.yo 2004-10-06 00:12:16
+++ rsync.yo 2004-08-13 00:43:31
@@ -364,6 +364,7 @@ verb(
--include=PATTERN don't exclude files matching PATTERN
/* The receiving side mustn't obey this, or an existing symlink that
* points to an identical file won't be replaced by the referent. */
---- orig/options.c 2004-10-08 20:16:26
-+++ options.c 2004-09-23 14:59:46
+--- orig/options.c 2004-10-14 17:11:40
++++ options.c 2004-10-14 17:21:51
@@ -85,6 +85,7 @@ int safe_symlinks = 0;
int copy_unsafe_links = 0;
int size_only = 0;
rprintf(F," -P equivalent to --partial --progress\n");
rprintf(F," -z, --compress compress file data\n");
rprintf(F," -C, --cvs-exclude auto ignore files in the same way CVS does\n");
-@@ -378,6 +380,7 @@ static struct poptOption long_options[]
+@@ -371,6 +373,7 @@ static struct poptOption long_options[]
{"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 },
+ {"link-dest", 0, POPT_ARG_STRING, &compare_dest, OPT_LINK_DEST, 0, 0 },
+ {"fuzzy", 0, POPT_ARG_NONE, &fuzzy_basis, 0, 0, 0 },
/* TODO: Should this take an optional int giving the compression level? */
{"compress", 'z', POPT_ARG_NONE, &do_compression, 0, 0, 0 },
- {"daemon", 0, POPT_ARG_NONE, &daemon_opt, 0, 0, 0 },
-@@ -833,6 +836,11 @@ int parse_arguments(int *argc, const cha
+ {"stats", 0, POPT_ARG_NONE, &do_stats, 0, 0, 0 },
+@@ -890,6 +893,11 @@ int parse_arguments(int *argc, const cha
link_dest ? "--link-dest" : "--compare-dest");
return 0;
}
} else {
if (keep_partial && !partial_dir)
partial_dir = getenv("RSYNC_PARTIAL_DIR");
-@@ -1099,6 +1107,9 @@ void server_options(char **args,int *arg
+@@ -1156,6 +1164,9 @@ void server_options(char **args,int *arg
}
}
case '?':
/* Match anything but '/'. */
if (*text == '/')
---- orig/options.c 2004-09-23 17:42:07
-+++ options.c 2004-07-29 16:13:45
+--- orig/options.c 2004-10-14 17:11:40
++++ options.c 2004-10-14 17:22:51
@@ -92,6 +92,7 @@ int opt_ignore_existing = 0;
int max_delete = 0;
int ignore_errors = 0;
rprintf(F," -0, --from0 all *-from file lists are delimited by nulls\n");
+ rprintf(F," --ignore-case ignore case when comparing filenames\n");
rprintf(F," --version print version number\n");
- rprintf(F," --daemon run as an rsync daemon\n");
- rprintf(F," --no-detach do not detach from the parent\n");
-@@ -343,6 +345,7 @@ static struct poptOption long_options[]
- {"include", 0, POPT_ARG_STRING, 0, OPT_INCLUDE, 0, 0 },
- {"exclude-from", 0, POPT_ARG_STRING, 0, OPT_EXCLUDE_FROM, 0, 0 },
- {"include-from", 0, POPT_ARG_STRING, 0, OPT_INCLUDE_FROM, 0, 0 },
+ rprintf(F," --blocking-io use blocking I/O for the remote shell\n");
+ rprintf(F," --no-blocking-io turn off --blocking-io\n");
+@@ -336,6 +338,7 @@ static struct poptOption long_options[]
+ {"include", 0, POPT_ARG_STRING, 0, OPT_INCLUDE, 0, 0 },
+ {"exclude-from", 0, POPT_ARG_STRING, 0, OPT_EXCLUDE_FROM, 0, 0 },
+ {"include-from", 0, POPT_ARG_STRING, 0, OPT_INCLUDE_FROM, 0, 0 },
+ {"ignore-case", 0, POPT_ARG_NONE, &ignore_case, 0, 0, 0 },
{"safe-links", 0, POPT_ARG_NONE, &safe_symlinks, 0, 0, 0 },
- {"help", 'h', POPT_ARG_NONE, 0, 'h', 0, 0 },
+ {"help", 'h', POPT_ARG_NONE, 0, 'h', 0, 0 },
{"backup", 'b', POPT_ARG_NONE, &make_backups, 0, 0, 0 },
-@@ -1046,6 +1049,9 @@ void server_options(char **args,int *arg
+@@ -1103,6 +1106,9 @@ void server_options(char **args,int *arg
args[ac++] = arg;
}
the file's name.
---- orig/Makefile.in 2004-08-13 07:18:58
+--- orig/Makefile.in 2004-10-14 17:11:40
+++ Makefile.in 2004-07-03 20:20:15
@@ -35,7 +35,7 @@ OBJS1=rsync.o generator.o receiver.o cle
main.o checksum.o match.o syscall.o log.o backup.o
+}
+
+#endif
---- orig/options.c 2004-09-23 17:42:07
-+++ options.c 2004-08-13 18:13:18
+--- orig/options.c 2004-10-14 17:11:40
++++ options.c 2004-10-14 17:24:21
@@ -126,6 +126,7 @@ char *log_format = NULL;
char *password_file = NULL;
char *rsync_path = RSYNC_PATH;
rprintf(F," -P equivalent to --partial --progress\n");
rprintf(F," -z, --compress compress file data\n");
rprintf(F," -C, --cvs-exclude auto ignore files in the same way CVS does\n");
-@@ -319,7 +321,7 @@ void usage(enum logcode F)
- enum {OPT_VERSION = 1000, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -312,7 +314,7 @@ void usage(enum logcode F)
+ enum {OPT_VERSION = 1000, OPT_DAEMON, 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_TIMEOUT,
OPT_REFUSED_BASE = 9000};
static struct poptOption long_options[] = {
-@@ -378,6 +380,7 @@ static struct poptOption long_options[]
+@@ -371,6 +373,7 @@ static struct poptOption long_options[]
{"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 },
-+ {"link-by-hash", 0, POPT_ARG_STRING, 0, OPT_LINK_BY_HASH, 0, 0},
+ {"link-dest", 0, POPT_ARG_STRING, &compare_dest, OPT_LINK_DEST, 0, 0 },
++ {"link-by-hash", 0, POPT_ARG_STRING, 0, OPT_LINK_BY_HASH, 0, 0},
/* TODO: Should this take an optional int giving the compression level? */
{"compress", 'z', POPT_ARG_NONE, &do_compression, 0, 0, 0 },
- {"daemon", 0, POPT_ARG_NONE, &daemon_opt, 0, 0, 0 },
-@@ -616,6 +619,21 @@ int parse_arguments(int *argc, const cha
+ {"stats", 0, POPT_ARG_NONE, &do_stats, 0, 0, 0 },
+@@ -683,6 +686,21 @@ int parse_arguments(int *argc, const cha
return 0;
#endif
default:
/* A large opt value means that set_refuse_options()
* turned this option off (opt-BASE is its index). */
-@@ -1087,6 +1105,11 @@ void server_options(char **args,int *arg
+@@ -1144,6 +1162,11 @@ void server_options(char **args,int *arg
args[ac++] = compare_dest;
}
if (ret < 0) {
rsyserr(FERROR, errno, "%s %s -> \"%s\"",
ret == -2 ? "copy" : "rename",
---- orig/rsync.h 2004-09-22 08:47:31
+--- orig/rsync.h 2004-10-09 03:21:56
+++ rsync.h 2004-07-03 20:20:15
-@@ -526,6 +526,14 @@ struct stats {
+@@ -529,6 +529,14 @@ struct stats {
int current_file_index;
};
can't say if I've left any cleanup/compatibility errors in the code.
---- orig/Makefile.in 2004-10-08 20:16:26
+--- orig/Makefile.in 2004-10-14 17:11:40
+++ Makefile.in 2004-10-08 20:17:06
@@ -39,7 +39,7 @@ OBJS3=progress.o pipe.o
DAEMON_OBJ = params.o loadparm.o clientserver.o access.o connection.o authenticate.o
TLS_OBJ = tls.o syscall.o lib/compat.o lib/permstring.o
---- orig/cleanup.c 2004-07-29 16:08:03
+--- orig/cleanup.c 2004-10-14 17:11:40
+++ cleanup.c 2004-07-03 20:22:28
@@ -24,6 +24,9 @@
extern int io_error;
p = strchr(host,'/');
if (p) {
*p = '\0';
---- orig/options.c 2004-10-08 20:16:26
-+++ options.c 2004-07-16 20:19:50
+--- orig/options.c 2004-10-14 17:11:40
++++ options.c 2004-10-14 17:27:53
@@ -135,6 +135,14 @@ int quiet = 0;
int always_checksum = 0;
int list_only = 0;
#ifdef MAINTAINER_MODE
rprintf(f, " panic action: \"%s\"\n",
get_panic_action());
-@@ -308,6 +321,13 @@ void usage(enum logcode F)
+@@ -302,6 +315,13 @@ void usage(enum logcode F)
rprintf(F," -4, --ipv4 prefer IPv4\n");
rprintf(F," -6, --ipv6 prefer IPv6\n");
#endif
+#endif
rprintf(F," -h, --help show this help screen\n");
- rprintf(F,"\n");
-@@ -319,7 +339,7 @@ void usage(enum logcode F)
- enum {OPT_VERSION = 1000, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+ rprintf(F,"\nUse \"rsync --daemon --help\" to see the daemon-mode command-line options.\n");
+@@ -312,7 +332,7 @@ void usage(enum logcode F)
+ enum {OPT_VERSION = 1000, OPT_DAEMON, 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_TIMEOUT,
OPT_REFUSED_BASE = 9000};
static struct poptOption long_options[] = {
-@@ -408,6 +428,13 @@ static struct poptOption long_options[]
+@@ -396,6 +416,13 @@ static struct poptOption long_options[]
{"ipv4", '4', POPT_ARG_VAL, &default_af_hint, AF_INET, 0, 0 },
{"ipv6", '6', POPT_ARG_VAL, &default_af_hint, AF_INET6, 0, 0 },
#endif
+#ifdef HAVE_OPENSSL
-+ {"ssl", 0, POPT_ARG_NONE, 0, OPT_USE_SSL, 0, 0},
-+ {"ssl-cert", 0, POPT_ARG_STRING, &ssl_cert_path, OPT_USE_SSL, 0, 0},
-+ {"ssl-key", 0, POPT_ARG_STRING, &ssl_key_path, OPT_USE_SSL, 0, 0},
++ {"ssl", 0, POPT_ARG_NONE, 0, OPT_USE_SSL, 0, 0},
++ {"ssl-cert", 0, POPT_ARG_STRING, &ssl_cert_path, OPT_USE_SSL, 0, 0},
++ {"ssl-key", 0, POPT_ARG_STRING, &ssl_key_path, OPT_USE_SSL, 0, 0},
+ {"ssl-key-passwd", 0, POPT_ARG_STRING, &ssl_key_passwd, OPT_USE_SSL, 0, 0},
-+ {"ssl-ca-certs", 0, POPT_ARG_STRING, &ssl_ca_path, OPT_USE_SSL, 0, 0},
++ {"ssl-ca-certs", 0, POPT_ARG_STRING, &ssl_ca_path, OPT_USE_SSL, 0, 0},
+#endif
- {0,0,0,0, 0, 0, 0}
- };
-
-@@ -616,6 +643,12 @@ int parse_arguments(int *argc, const cha
+ /* All these options switch us into daemon-mode option-parsing. */
+ {"address", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 },
+ {"config", 0, POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 },
+@@ -683,6 +710,12 @@ int parse_arguments(int *argc, const cha
return 0;
#endif
default:
/* A large opt value means that set_refuse_options()
* turned this option off (opt-BASE is its index). */
-@@ -807,6 +840,17 @@ int parse_arguments(int *argc, const cha
+@@ -864,6 +897,17 @@ int parse_arguments(int *argc, const cha
if (do_progress && !verbose)
verbose = 1;
if (bwlimit) {
bwlimit_writemax = (size_t)bwlimit * 128;
if (bwlimit_writemax < 512)
---- orig/rsync.h 2004-09-22 08:47:31
+--- orig/rsync.h 2004-10-09 03:21:56
+++ rsync.h 2004-10-08 21:01:33
@@ -32,6 +32,7 @@
#define BACKUP_SUFFIX "~"
-@@ -330,6 +331,11 @@ enum msgcode {
+@@ -333,6 +334,11 @@ enum msgcode {
#define uint64 unsigned off_t
#endif
if (!am_server && !am_daemon) {
rprintf(FERROR, "io timeout after %d seconds - exiting\n",
(int)(t-last_io));
---- orig/options.c 2004-09-23 17:42:07
-+++ options.c 2004-07-15 17:06:09
+--- orig/options.c 2004-10-14 17:11:40
++++ options.c 2004-10-14 17:29:34
@@ -96,6 +96,7 @@ int blocking_io = -1;
int checksum_seed = 0;
int inplace = 0;
/** Network address family. **/
-@@ -301,6 +302,8 @@ void usage(enum logcode F)
+@@ -296,6 +297,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," --time-limit=MINS Stop rsync after MINS minutes have elapsed\n");
rprintf(F," --write-batch=FILE write a batch to FILE\n");
rprintf(F," --read-batch=FILE read a batch from FILE\n");
- rprintf(F," --checksum-seed=NUM set block/file checksum seed\n");
-@@ -320,6 +323,7 @@ enum {OPT_VERSION = 1000, OPT_SENDER, OP
+ #ifdef INET6
+@@ -313,6 +316,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OP
OPT_DELETE_AFTER, OPT_DELETE_EXCLUDED, OPT_LINK_DEST,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_TIMEOUT,
OPT_REFUSED_BASE = 9000};
static struct poptOption long_options[] = {
-@@ -394,6 +398,8 @@ static struct poptOption long_options[]
- {"port", 0, POPT_ARG_INT, &rsync_port, 0, 0, 0 },
+@@ -383,6 +387,8 @@ static struct poptOption long_options[]
+ {0, 'P', POPT_ARG_NONE, 0, 'P', 0, 0 },
{"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 },
{"bwlimit", 0, POPT_ARG_INT, &bwlimit, 0, 0, 0 },
+ {"stop-at", 0, POPT_ARG_STRING, 0, OPT_STOP_AT, 0, 0 },
+ {"time-limit", 0, POPT_ARG_STRING, 0, OPT_TIME_LIMIT, 0, 0 },
- {"address", 0, POPT_ARG_STRING, &bind_address, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
{"hard-links", 'H', POPT_ARG_NONE, &preserve_hard_links, 0, 0, 0 },
-@@ -616,6 +622,36 @@ int parse_arguments(int *argc, const cha
+ {"read-batch", 0, POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
+@@ -683,6 +689,36 @@ int parse_arguments(int *argc, const cha
return 0;
#endif
default:
/* A large opt value means that set_refuse_options()
* turned this option off (opt-BASE is its index). */
-@@ -1005,6 +1041,15 @@ void server_options(char **args,int *arg
+@@ -1062,6 +1098,15 @@ void server_options(char **args,int *arg
args[ac++] = arg;
}
if (backup_dir) {
args[ac++] = "--backup-dir";
args[ac++] = backup_dir;
---- orig/rsync.yo 2004-09-24 16:42:30
+--- orig/rsync.yo 2004-10-06 00:12:16
+++ rsync.yo 2004-07-15 02:44:40
@@ -378,6 +378,8 @@ verb(
--log-format=FORMAT log file transfers using specified format