OBJS2=options.o flist.o io.o compat.o hlink.o token.o uidlist.o socket.o \
fileio.o batch.o clientname.o
OBJS3=progress.o pipe.o
---- orig/cleanup.c 2005-01-28 23:01:07
+--- orig/cleanup.c 2005-02-07 20:41:56
+++ cleanup.c 2004-07-03 20:22:18
@@ -142,8 +142,12 @@ void _exit_cleanup(int code, const char
code = RERR_VANISHED;
if (verbose > 2) {
rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): about to call exit(%d)\n",
---- orig/clientserver.c 2005-02-01 10:39:22
+--- orig/clientserver.c 2005-02-07 20:41:56
+++ clientserver.c 2004-07-03 20:22:18
@@ -344,6 +344,9 @@ static int rsync_module(int f_in, int f_
- XFLG_WORD_SPLIT | XFLG_ANCHORED2ABS | XFLG_DEF_EXCLUDE);
+ XFLG_ANCHORED2ABS | XFLG_OLD_PREFIXES);
log_init();
+#if HAVE_LIBODBC
if (use_chroot) {
/*
-@@ -463,6 +466,9 @@ static int rsync_module(int f_in, int f_
+@@ -466,6 +469,9 @@ static int rsync_module(int f_in, int f_
rprintf(FLOG, "rsync %s %s from %s@%s (%s)\n",
am_sender ? "on" : "to",
request, auth_user, host, addr);
FN_LOCAL_BOOL(lp_ignore_errors, ignore_errors)
FN_LOCAL_BOOL(lp_ignore_nonreadable, ignore_nonreadable)
FN_LOCAL_STRING(lp_uid, uid)
---- orig/log.c 2005-02-01 10:39:22
+--- orig/log.c 2005-02-07 20:41:56
+++ log.c 2004-07-03 20:22:18
@@ -75,7 +75,7 @@ struct {
/*
{
int i;
for (i = 0; rerr_names[i].name; i++) {
---- orig/main.c 2005-01-30 10:07:21
+--- orig/main.c 2005-02-07 20:41:56
+++ main.c 2004-07-03 20:22:18
-@@ -137,6 +137,9 @@ static void report(int f)
+@@ -134,6 +134,9 @@ static void report(int f)
if (am_daemon) {
log_exit(0, __FILE__, __LINE__);
if (f == -1 || !am_sender)
return;
}
---- orig/receiver.c 2005-02-03 02:04:20
+--- orig/receiver.c 2005-02-11 10:53:14
+++ receiver.c 2004-07-20 21:47:47
-@@ -504,6 +504,9 @@ int recv_files(int f_in, struct file_lis
+@@ -505,6 +505,9 @@ int recv_files(int f_in, struct file_lis
fname, fd2, file->length);
log_recv(file, &initial_stats);
if (fd1 != -1)
close(fd1);
---- orig/sender.c 2005-02-03 02:04:20
+--- orig/sender.c 2005-02-11 22:24:19
+++ sender.c 2004-07-15 02:37:48
@@ -236,6 +236,9 @@ void send_files(struct file_list *flist,
+}
+
+#endif /* SUPPORT_ACLS */
---- orig/backup.c 2005-01-25 12:14:14
+--- orig/backup.c 2005-02-07 20:41:56
+++ backup.c 2004-10-06 00:13:09
-@@ -119,6 +119,7 @@ static int make_bak_dir(char *fullpath)
+@@ -121,6 +121,7 @@ static int make_bak_dir(char *fullpath)
} else {
do_lchown(fullpath, st.st_uid, st.st_gid);
do_chmod(fullpath, st.st_mode);
}
}
*p = '/';
-@@ -171,6 +172,8 @@ static int keep_backup(char *fname)
+@@ -173,6 +174,8 @@ static int keep_backup(char *fname)
if (!(buf = get_backup_name(fname)))
return 0;
/* Check to see if this is a device file, or link */
if (IS_DEVICE(file->mode)) {
if (am_root && preserve_devices) {
-@@ -244,6 +247,7 @@ static int keep_backup(char *fname)
+@@ -246,6 +249,7 @@ static int keep_backup(char *fname)
}
}
set_perms(buf, file, NULL, 0);
+ CLEANUP_KEEP_BACKUP_ACL();
free(file);
- if (verbose > 1)
+ if (verbose > 1) {
--- orig/configure.in 2005-01-28 23:01:08
+++ configure.in 2004-08-19 19:53:27
@@ -467,6 +467,11 @@ if test x"$ac_cv_func_strcasecmp" = x"no
AC_CONFIG_FILES([Makefile lib/dummy zlib/dummy popt/dummy shconfig])
AC_OUTPUT
---- orig/flist.c 2005-02-03 02:04:20
+--- orig/flist.c 2005-02-09 02:37:15
+++ flist.c 2004-07-03 20:11:58
-@@ -983,6 +983,8 @@ void send_file_name(int f, struct file_l
+@@ -982,6 +982,8 @@ void send_file_name(int f, struct file_l
if (!file)
return;
maybe_emit_filelist_progress(flist);
-@@ -991,6 +993,10 @@ void send_file_name(int f, struct file_l
+@@ -990,6 +992,10 @@ void send_file_name(int f, struct file_l
if (file->basename[0]) {
flist->files[flist->count++] = file;
send_file_entry(file, f, base_flags);
if (f != -1) {
/* Now send the uid/gid list. This was introduced in
* protocol version 15 */
---- orig/generator.c 2005-02-03 02:04:20
+--- orig/generator.c 2005-02-11 20:25:07
+++ generator.c 2005-01-30 10:09:44
-@@ -313,6 +313,10 @@ static void recv_generator(char *fname,
+@@ -315,6 +315,10 @@ static void recv_generator(char *fname,
if (set_perms(fname, file, statret ? NULL : &st, 0)
&& verbose && f_out != -1)
rprintf(FINFO, "%s/\n", safe_fname(fname));
next;
}
---- orig/options.c 2005-02-01 10:39:22
+--- orig/options.c 2005-02-11 18:21:45
+++ options.c 2004-08-19 17:38:57
@@ -44,6 +44,7 @@ int keep_dirlinks = 0;
int copy_links = 0;
int preserve_perms = 0;
int preserve_devices = 0;
int preserve_uid = 0;
-@@ -164,6 +165,7 @@ static void print_rsync_version(enum log
+@@ -166,6 +167,7 @@ static void print_rsync_version(enum log
char const *got_socketpair = "no ";
char const *have_inplace = "no ";
char const *hardlinks = "no ";
char const *links = "no ";
char const *ipv6 = "no ";
STRUCT_STAT *dumstat;
-@@ -180,6 +182,10 @@ static void print_rsync_version(enum log
+@@ -182,6 +184,10 @@ static void print_rsync_version(enum log
hardlinks = "";
#endif
#if SUPPORT_LINKS
links = "";
#endif
-@@ -194,9 +200,9 @@ static void print_rsync_version(enum log
+@@ -196,9 +202,9 @@ static void print_rsync_version(enum log
"Copyright (C) 1996-2005 by Andrew Tridgell and others\n");
rprintf(f, "<http://rsync.samba.org/>\n");
rprintf(f, "Capabilities: %d-bit files, %ssocketpairs, "
/* Note that this field may not have type ino_t. It depends
* on the complicated interaction between largefile feature
-@@ -266,6 +272,7 @@ void usage(enum logcode F)
+@@ -268,6 +274,7 @@ void usage(enum logcode F)
rprintf(F," -H, --hard-links preserve hard links\n");
rprintf(F," -K, --keep-dirlinks treat symlinked dir on receiver as dir\n");
rprintf(F," -p, --perms preserve permissions\n");
rprintf(F," -o, --owner preserve owner (root only)\n");
rprintf(F," -g, --group preserve group\n");
rprintf(F," -D, --devices preserve devices (root only)\n");
-@@ -384,6 +391,7 @@ static struct poptOption long_options[]
+@@ -387,6 +394,7 @@ static struct poptOption long_options[]
{"no-whole-file", 0, POPT_ARG_VAL, &whole_file, 0, 0, 0 },
{"copy-unsafe-links", 0, POPT_ARG_NONE, ©_unsafe_links, 0, 0, 0 },
{"perms", 'p', POPT_ARG_NONE, &preserve_perms, 0, 0, 0 },
{"owner", 'o', POPT_ARG_NONE, &preserve_uid, 0, 0, 0 },
{"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 },
{"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 },
-@@ -802,6 +810,24 @@ int parse_arguments(int *argc, const cha
+@@ -831,6 +839,24 @@ int parse_arguments(int *argc, const cha
basis_dir[basis_dir_cnt++] = (char *)arg;
break;
+
default:
/* A large opt value means that set_refuse_options()
- * turned this option off (opt-BASE is its index). */
-@@ -1144,6 +1170,8 @@ void server_options(char **args,int *arg
+ * turned this option off. */
+@@ -1203,6 +1229,8 @@ void server_options(char **args,int *arg
if (preserve_hard_links)
argstr[x++] = 'H';
if (preserve_uid)
argstr[x++] = 'o';
if (preserve_gid)
---- orig/rsync.c 2005-02-01 10:39:22
+--- orig/rsync.c 2005-02-07 20:41:57
+++ rsync.c 2004-07-03 20:11:58
-@@ -235,6 +235,14 @@ int set_perms(char *fname,struct file_st
+@@ -238,6 +238,14 @@ int set_perms(char *fname,struct file_st
}
#endif
+
if (verbose > 1 && flags & PERMS_REPORT) {
if (updated)
- rprintf(FINFO,"%s\n",fname);
---- orig/rsync.h 2005-02-03 02:04:20
+ rprintf(FINFO, "%s\n", safe_fname(fname));
+--- orig/rsync.h 2005-02-07 20:41:57
+++ rsync.h 2004-07-03 20:11:58
-@@ -605,6 +605,40 @@ struct stats {
+@@ -607,6 +607,40 @@ struct stats {
#include "lib/permstring.h"
#include "lib/addrinfo.h"
#include "proto.h"
/* We have replacement versions of these if they're missing. */
---- orig/rsync.yo 2005-02-01 10:39:23
+--- orig/rsync.yo 2005-02-11 23:14:49
+++ rsync.yo 2004-07-03 20:11:58
@@ -317,6 +317,7 @@ to the detailed description below for a
-H, --hard-links preserve hard links
-o, --owner preserve owner (root only)
-g, --group preserve group
-D, --devices preserve devices (root only)
-@@ -612,6 +613,11 @@ source file's permissions and the umask
+@@ -613,6 +614,11 @@ source file's permissions and the umask
other files (including updated files) retain their existing permissions
(which is the same behavior as other file-copy utilities, such as cp).
Marc St-Onge
---- orig/backup.c 2005-01-25 12:14:14
+--- orig/backup.c 2005-02-07 20:41:56
+++ backup.c 2004-09-22 02:36:06
@@ -22,11 +22,17 @@
if (!fnamebak)
return 0;
-@@ -81,7 +106,8 @@ path
+@@ -83,7 +108,8 @@ path
static int make_bak_dir(char *fullpath)
{
STRUCT_STAT st;
char *end = rel + strlen(rel);
char *p = end;
-@@ -168,7 +194,8 @@ static int keep_backup(char *fname)
+@@ -170,7 +196,8 @@ static int keep_backup(char *fname)
if (!(file = make_file(fname, NULL, NO_FILTERS)))
return 1; /* the file could have disappeared */
return 0;
/* Check to see if this is a device file, or link */
-@@ -259,3 +286,13 @@ int make_backup(char *fname)
+@@ -263,3 +290,13 @@ int make_backup(char *fname)
return keep_backup(fname);
return make_simple_backup(fname);
}
+ deleting = 0;
+ return ret;
+}
---- orig/flist.c 2005-02-03 02:04:20
+--- orig/flist.c 2005-02-09 02:37:15
+++ flist.c 2005-01-30 10:11:42
-@@ -47,6 +47,8 @@ extern char curr_dir[MAXPATHLEN];
+@@ -46,6 +46,8 @@ extern char curr_dir[MAXPATHLEN];
extern unsigned int curr_dir_len;
extern char *backup_dir;
extern char *backup_suffix;
extern int filesfrom_fd;
extern int one_file_system;
-@@ -61,6 +63,7 @@ extern int relative_paths;
+@@ -60,6 +62,7 @@ extern int relative_paths;
extern int implied_dirs;
extern int make_backups;
extern int backup_suffix_len;
extern int copy_links;
extern int copy_unsafe_links;
extern int protocol_version;
-@@ -1647,10 +1650,14 @@ char *f_name(struct file_struct *f)
+@@ -1664,10 +1667,14 @@ char *f_name(struct file_struct *f)
}
}
-@@ -1739,11 +1746,12 @@ void delete_missing(struct file_list *fu
- || (delete_during && S_ISDIR(mode)
- && !S_ISDIR(full_list->files[j]->mode))) {
+@@ -1755,11 +1762,12 @@ void delete_missing(struct file_list *fu
+ if ((j = flist_find(full_list, dir_list->files[i])) < 0
+ || (S_ISDIR(mode) && !S_ISDIR(full_list->files[j]->mode))) {
char *f = f_name(dir_list->files[i]);
- if (make_backups && (backup_dir || !is_backup_file(f))
+ int backup_file = is_backup_file(f);
+ rprintf(FINFO, "safe-deleting %s\n",
safe_fname(f));
}
- } else if (S_ISDIR(mode)) {
---- orig/options.c 2005-02-01 10:39:22
+ } else if (S_ISDIR(mode))
+--- orig/options.c 2005-02-11 18:21:45
+++ options.c 2005-01-28 19:17:35
-@@ -119,10 +119,14 @@ int no_detach = 0;
+@@ -118,10 +118,14 @@ int no_detach = 0;
int write_batch = 0;
int read_batch = 0;
int backup_dir_len = 0;
char *tmpdir = NULL;
char *partial_dir = NULL;
char *basis_dir[MAX_BASIS_DIRS+1];
-@@ -132,7 +136,9 @@ char *log_format = NULL;
+@@ -131,7 +135,9 @@ char *log_format = NULL;
char *password_file = NULL;
char *rsync_path = RSYNC_PATH;
char *backup_dir = NULL;
int rsync_port = 0;
int compare_dest = 0;
int copy_dest = 0;
-@@ -256,6 +262,8 @@ void usage(enum logcode F)
+@@ -258,6 +264,8 @@ void usage(enum logcode F)
rprintf(F," -b, --backup make backups (see --suffix & --backup-dir)\n");
rprintf(F," --backup-dir=DIR make backups into hierarchy based in DIR\n");
rprintf(F," --suffix=SUFFIX set backup suffix (default %s w/o --backup-dir)\n",BACKUP_SUFFIX);
rprintf(F," -u, --update skip files that are newer on the receiver\n");
rprintf(F," --inplace update destination files in-place (SEE MAN PAGE)\n");
rprintf(F," -d, --dirs transfer directories without recursing\n");
-@@ -348,6 +356,7 @@ static struct poptOption long_options[]
+@@ -350,6 +358,7 @@ static struct poptOption long_options[]
/* longName, shortName, argInfo, argPtr, value, descrip, argDesc */
{"version", 0, POPT_ARG_NONE, 0, OPT_VERSION, 0, 0},
{"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
{"rsync-path", 0, POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
{"password-file", 0, POPT_ARG_STRING, &password_file, 0, 0, 0 },
{"ignore-times", 'I', POPT_ARG_NONE, &ignore_times, 0, 0, 0 },
-@@ -424,6 +433,7 @@ static struct poptOption long_options[]
+@@ -427,6 +436,7 @@ static struct poptOption long_options[]
{"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 },
{"bwlimit", 0, POPT_ARG_INT, &bwlimit, 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 },
{"read-batch", 0, POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
{"write-batch", 0, POPT_ARG_STRING, &batch_name, OPT_WRITE_BATCH, 0, 0 },
-@@ -938,6 +948,8 @@ int parse_arguments(int *argc, const cha
+@@ -968,6 +978,8 @@ int parse_arguments(int *argc, const cha
partial_dir = sanitize_path(NULL, partial_dir, NULL, 0);
if (backup_dir)
backup_dir = sanitize_path(NULL, backup_dir, NULL, 0);
if (files_from)
files_from = sanitize_path(NULL, files_from, NULL, 0);
}
-@@ -964,6 +976,12 @@ int parse_arguments(int *argc, const cha
+@@ -1000,6 +1012,12 @@ int parse_arguments(int *argc, const cha
if (check_filter(elp, backup_dir, 1) < 0)
goto options_rejected;
}
+ }
}
if (server_filter_list.head && files_from) {
- clean_fname(files_from, 1);
-@@ -984,6 +1002,16 @@ int parse_arguments(int *argc, const cha
+ if (!*files_from)
+@@ -1022,6 +1040,16 @@ int parse_arguments(int *argc, const cha
backup_suffix);
return 0;
}
if (backup_dir) {
backup_dir_len = strlcpy(backup_dir_buf, backup_dir, sizeof backup_dir_buf);
backup_dir_remainder = sizeof backup_dir_buf - backup_dir_len;
-@@ -1003,6 +1031,31 @@ int parse_arguments(int *argc, const cha
+@@ -1043,6 +1071,31 @@ int parse_arguments(int *argc, const cha
"--suffix cannot be a null string without --backup-dir\n");
return 0;
}
+ return 0;
+ }
- if (do_progress && !verbose)
- verbose = 1;
-@@ -1220,6 +1273,10 @@ void server_options(char **args,int *arg
+ if (do_progress && !verbose) {
+ if (refused_verbose) {
+@@ -1279,6 +1332,10 @@ void server_options(char **args,int *arg
args[ac++] = "--backup-dir";
args[ac++] = backup_dir;
}
/* Only send --suffix if it specifies a non-default value. */
if (strcmp(backup_suffix, backup_dir ? "" : BACKUP_SUFFIX) != 0) {
-@@ -1228,7 +1285,13 @@ void server_options(char **args,int *arg
+@@ -1287,7 +1344,13 @@ void server_options(char **args,int *arg
goto oom;
args[ac++] = arg;
}
case '?':
/* Match anything but '/'. */
if (*text == '/')
---- orig/options.c 2005-02-01 10:39:22
+--- orig/options.c 2005-02-11 18:21:45
+++ options.c 2004-10-14 17:22:51
-@@ -97,6 +97,7 @@ int max_delete = 0;
+@@ -96,6 +96,7 @@ int max_delete = 0;
OFF_T max_size = 0;
int ignore_errors = 0;
int modify_window = 0;
int blocking_io = -1;
int checksum_seed = 0;
int inplace = 0;
-@@ -314,6 +315,7 @@ void usage(enum logcode F)
+@@ -316,6 +317,7 @@ void usage(enum logcode F)
rprintf(F," --include-from=FILE read include patterns from FILE\n");
rprintf(F," --files-from=FILE read list of source-file names from FILE\n");
rprintf(F," -0, --from0 all *-from file lists are delimited by nulls\n");
rprintf(F," --version print version number\n");
rprintf(F," --port=PORT specify double-colon alternate port number\n");
rprintf(F," --blocking-io use blocking I/O for the remote shell\n");
-@@ -368,6 +370,7 @@ static struct poptOption long_options[]
+@@ -371,6 +373,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 },
{"safe-links", 0, POPT_ARG_NONE, &safe_symlinks, 0, 0, 0 },
{"help", 'h', POPT_ARG_NONE, 0, 'h', 0, 0 },
{"backup", 'b', POPT_ARG_NONE, &make_backups, 0, 0, 0 },
-@@ -1259,6 +1262,9 @@ void server_options(char **args,int *arg
+@@ -1318,6 +1321,9 @@ void server_options(char **args,int *arg
args[ac++] = arg;
}
+ args[ac++] = "--ignore-case";
+
if (partial_dir && am_sender) {
- args[ac++] = "--partial-dir";
- args[ac++] = partial_dir;
+ if (partial_dir != partialdir_for_delayupdate) {
+ args[ac++] = "--partial-dir";
--- orig/t_stub.c 2005-01-25 12:14:14
+++ t_stub.c 2004-08-13 17:19:56
@@ -28,6 +28,7 @@
char *partial_dir;
struct filter_list_struct server_filter_list;
---- orig/util.c 2005-01-28 19:08:20
+--- orig/util.c 2005-02-11 10:53:15
+++ util.c 2004-08-13 16:40:34
@@ -31,6 +31,7 @@ extern int verbose;
extern int dry_run;
extern char *partial_dir;
extern struct filter_list_struct server_filter_list;
-@@ -1011,11 +1012,23 @@ int u_strcmp(const char *cs1, const char
+@@ -1022,11 +1023,23 @@ int u_strcmp(const char *cs1, const char
{
const uchar *s1 = (const uchar *)cs1;
const uchar *s2 = (const uchar *)cs2;
+}
+
+#endif
---- orig/options.c 2005-02-07 20:41:56
+--- orig/options.c 2005-02-11 18:21:45
+++ options.c 2005-01-28 19:32:26
@@ -131,6 +131,7 @@ char *log_format = NULL;
char *password_file = NULL;
char backup_dir_buf[MAXPATHLEN];
int rsync_port = 0;
int compare_dest = 0;
-@@ -302,6 +303,7 @@ void usage(enum logcode F)
+@@ -305,6 +306,7 @@ void usage(enum logcode F)
rprintf(F," --compare-dest=DIR also compare destination files relative to DIR\n");
rprintf(F," --copy-dest=DIR ... and include copies of unchanged files\n");
rprintf(F," --link-dest=DIR hardlink to files in DIR when unchanged\n");
rprintf(F," -z, --compress compress file data\n");
rprintf(F," -C, --cvs-exclude auto-ignore files the same way CVS does\n");
rprintf(F," -f, --filter=RULE add a file-filtering RULE\n");
-@@ -340,7 +342,7 @@ void usage(enum logcode F)
+@@ -343,7 +345,7 @@ void usage(enum logcode F)
enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW,
OPT_REFUSED_BASE = 9000};
static struct poptOption long_options[] = {
-@@ -407,6 +409,7 @@ static struct poptOption long_options[]
+@@ -411,6 +413,7 @@ static struct poptOption long_options[]
{"compare-dest", 0, POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
{"copy-dest", 0, POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
/* TODO: Should this take an optional int giving the compression level? */
{"compress", 'z', POPT_ARG_NONE, &do_compression, 0, 0, 0 },
{"stats", 0, POPT_ARG_NONE, &do_stats, 0, 0, 0 },
-@@ -799,6 +802,21 @@ int parse_arguments(int *argc, const cha
+@@ -831,6 +834,21 @@ int parse_arguments(int *argc, const cha
basis_dir[basis_dir_cnt++] = (char *)arg;
break;
+
default:
/* A large opt value means that set_refuse_options()
- * turned this option off (opt-BASE is its index). */
-@@ -1304,6 +1322,11 @@ void server_options(char **args,int *arg
+ * turned this option off. */
+@@ -1366,6 +1384,11 @@ void server_options(char **args,int *arg
}
}
if (files_from && (!am_sender || remote_filesfrom_file)) {
if (remote_filesfrom_file) {
args[ac++] = "--files-from";
---- orig/receiver.c 2005-02-07 20:41:56
+--- orig/receiver.c 2005-02-11 10:53:14
+++ receiver.c 2005-01-15 21:29:13
@@ -35,6 +35,7 @@ extern int preserve_hard_links;
extern int preserve_perms;
#include "byteorder.h"
#include "lib/mdfour.h"
---- orig/rsync.yo 2005-02-06 07:24:23
+--- orig/rsync.yo 2005-02-11 23:14:49
+++ rsync.yo 2005-01-28 19:32:45
@@ -354,6 +354,7 @@ to the detailed description below for a
--compare-dest=DIR also compare received files relative to DIR
TLS_OBJ = tls.o syscall.o lib/compat.o lib/snprintf.o lib/permstring.o
---- orig/cleanup.c 2005-01-28 23:01:07
+--- orig/cleanup.c 2005-02-07 20:41:56
+++ cleanup.c 2005-01-10 10:43:22
@@ -22,6 +22,9 @@
#include "rsync.h"
+
if (verbose > 3) {
rprintf(FINFO,"_exit_cleanup(code=%d, file=%s, line=%d): entered\n",
- code, file, line);
---- orig/clientserver.c 2005-02-01 10:39:22
+ code, safe_fname(file), line);
+--- orig/clientserver.c 2005-02-07 20:41:56
+++ clientserver.c 2004-10-08 20:44:59
@@ -45,6 +45,9 @@ extern int select_timeout;
extern int orig_umask;
return RERR_STARTCLIENT;
} else {
rprintf(FINFO,"%s\n", line);
-@@ -523,6 +571,7 @@ static void send_listing(int fd)
+@@ -526,6 +574,7 @@ static void send_listing(int fd)
io_printf(fd,"@RSYNCD: EXIT\n");
}
/* this is called when a connection is established to a client
and we want to start talking. The setup of the system is done from
here */
-@@ -572,6 +621,9 @@ int start_daemon(int f_in, int f_out)
+@@ -575,6 +624,9 @@ int start_daemon(int f_in, int f_out)
if (protocol_version > remote_protocol)
protocol_version = remote_protocol;
line[0] = 0;
if (!read_line(f_in, line, sizeof line - 1))
return -1;
-@@ -581,6 +633,20 @@ int start_daemon(int f_in, int f_out)
+@@ -584,6 +636,20 @@ int start_daemon(int f_in, int f_out)
return -1;
}
AC_MSG_CHECKING([whether to call shutdown on all sockets])
case $host_os in
*cygwin* ) AC_MSG_RESULT(yes)
---- orig/main.c 2005-01-30 10:07:21
+--- orig/main.c 2005-02-07 20:41:56
+++ main.c 2004-10-08 20:15:28
-@@ -56,6 +56,9 @@ extern int write_batch;
+@@ -52,6 +52,9 @@ extern int write_batch;
extern int batch_fd;
extern int batch_gen_fd;
extern int filesfrom_fd;
extern pid_t cleanup_child_pid;
extern char *files_from;
extern char *remote_filesfrom_file;
-@@ -835,33 +838,48 @@ static int start_client(int argc, char *
+@@ -821,33 +824,48 @@ static int start_client(int argc, char *
if ((rc = copy_argv(argv)))
return rc;
p = find_colon(argv[0]);
if (p) { /* source is remote */
if (remote_filesfrom_file
-@@ -893,12 +911,26 @@ static int start_client(int argc, char *
+@@ -879,12 +897,26 @@ static int start_client(int argc, char *
argv++;
} else { /* source is local */
am_sender = 1;
p = strchr(host,'/');
if (p) {
*p = '\0';
---- orig/options.c 2005-02-01 10:39:22
+--- orig/options.c 2005-02-11 18:21:45
+++ options.c 2004-11-27 18:31:46
-@@ -144,6 +144,14 @@ int quiet = 0;
+@@ -143,6 +143,14 @@ int quiet = 0;
int always_checksum = 0;
int list_only = 0;
#define MAX_BATCH_NAME_LEN 256 /* Must be less than MAXPATHLEN-13 */
char *batch_name = NULL;
-@@ -166,6 +174,7 @@ static void print_rsync_version(enum log
+@@ -168,6 +176,7 @@ static void print_rsync_version(enum log
char const *hardlinks = "no ";
char const *links = "no ";
char const *ipv6 = "no ";
STRUCT_STAT *dumstat;
#if HAVE_SOCKETPAIR
-@@ -188,6 +197,10 @@ static void print_rsync_version(enum log
+@@ -190,6 +199,10 @@ static void print_rsync_version(enum log
ipv6 = "";
#endif
rprintf(f, "%s version %s protocol version %d\n",
RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION);
rprintf(f,
-@@ -201,10 +214,10 @@ static void print_rsync_version(enum log
+@@ -203,10 +216,10 @@ static void print_rsync_version(enum log
/* Note that this field may not have type ino_t. It depends
* on the complicated interaction between largefile feature
* macros. */
#ifdef MAINTAINER_MODE
rprintf(f, " panic action: \"%s\"\n",
get_panic_action());
-@@ -331,6 +344,13 @@ void usage(enum logcode F)
+@@ -333,6 +346,13 @@ void usage(enum logcode F)
rprintf(F," -4, --ipv4 prefer IPv4\n");
rprintf(F," -6, --ipv6 prefer IPv6\n");
#endif
rprintf(F," -h, --help show this help screen\n");
rprintf(F,"\nUse \"rsync --daemon --help\" to see the daemon-mode command-line options.\n");
-@@ -341,7 +361,7 @@ void usage(enum logcode F)
+@@ -343,7 +363,7 @@ void usage(enum logcode F)
enum {OPT_VERSION = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW,
OPT_REFUSED_BASE = 9000};
static struct poptOption long_options[] = {
-@@ -436,6 +456,13 @@ static struct poptOption long_options[]
+@@ -439,6 +459,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
/* 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 },
-@@ -802,6 +829,12 @@ int parse_arguments(int *argc, const cha
+@@ -831,6 +858,12 @@ int parse_arguments(int *argc, const cha
basis_dir[basis_dir_cnt++] = (char *)arg;
break;
+
default:
/* A large opt value means that set_refuse_options()
- * turned this option off (opt-BASE is its index). */
-@@ -1018,6 +1051,17 @@ int parse_arguments(int *argc, const cha
+ * turned this option off. */
+@@ -1063,6 +1096,17 @@ int parse_arguments(int *argc, const cha
if (delay_updates && !partial_dir)
- partial_dir = ".~tmp~";
+ partial_dir = partialdir_for_delayupdate;
+#if HAVE_OPENSSL
+ if (use_ssl) {
if (inplace) {
#if HAVE_FTRUNCATE
if (partial_dir) {
---- orig/rsync.h 2005-02-03 02:04:20
+--- orig/rsync.h 2005-02-07 20:41:57
+++ rsync.h 2004-10-08 21:01:33
@@ -32,6 +32,7 @@
#define BACKUP_SUFFIX "~"
-@@ -386,6 +387,11 @@ enum msgcode {
+@@ -382,6 +383,11 @@ enum msgcode {
# define SIZEOF_INT64 SIZEOF_OFF_T
#endif
case MSG_INFO:
case MSG_ERROR:
if (remaining >= sizeof line) {
---- orig/main.c 2005-02-04 22:28:09
+--- orig/main.c 2005-02-07 20:41:56
+++ main.c 2005-02-05 01:24:16
@@ -32,12 +32,14 @@ extern int am_daemon;
extern int verbose;
if (argc == 0)
list_only |= 1;
---- orig/options.c 2005-02-04 22:28:09
+--- orig/options.c 2005-02-11 18:21:45
+++ options.c 2005-01-23 07:30:51
@@ -59,6 +59,7 @@ int delete_during = 0;
int delete_before = 0;
int max_delete = 0;
OFF_T max_size = 0;
int ignore_errors = 0;
-@@ -286,6 +288,7 @@ void usage(enum logcode F)
+@@ -289,6 +291,7 @@ void usage(enum logcode F)
rprintf(F," --delete-during receiver deletes during transfer, not before\n");
rprintf(F," --delete-after receiver deletes after transfer, not before\n");
rprintf(F," --delete-excluded also delete excluded files on the receiving side\n");
rprintf(F," --ignore-errors delete even if there are I/O errors\n");
rprintf(F," --force force deletion of directories even if not empty\n");
rprintf(F," --max-delete=NUM don't delete more than NUM files\n");
-@@ -360,6 +363,7 @@ static struct poptOption long_options[]
+@@ -364,6 +367,7 @@ static struct poptOption long_options[]
{"delete-during", 0, POPT_ARG_NONE, &delete_during, 0, 0, 0 },
{"delete-after", 0, POPT_ARG_NONE, &delete_after, 0, 0, 0 },
{"delete-excluded", 0, POPT_ARG_NONE, &delete_excluded, 0, 0, 0 },
{"force", 0, POPT_ARG_NONE, &force_delete, 0, 0, 0 },
{"numeric-ids", 0, POPT_ARG_NONE, &numeric_ids, 0, 0, 0 },
{"filter", 'f', POPT_ARG_STRING, 0, OPT_FILTER, 0, 0 },
-@@ -922,6 +926,9 @@ int parse_arguments(int *argc, const cha
- else if (delete_mode || delete_excluded)
- delete_mode = delete_before = 1;
+@@ -955,6 +959,9 @@ int parse_arguments(int *argc, const cha
+ return 0;
+ }
+ if (delete_sent_files)
+ need_messages_from_generator = 1;
*argv = poptGetArgs(pc);
*argc = count_args(*argv);
-@@ -1318,6 +1325,9 @@ void server_options(char **args,int *arg
+@@ -1382,6 +1389,9 @@ void server_options(char **args,int *arg
if (!implied_dirs && !am_sender)
args[ac++] = "--no-implied-dirs";
*argc = ac;
return;
---- orig/receiver.c 2005-02-03 02:04:20
+--- orig/receiver.c 2005-02-11 10:53:14
+++ receiver.c 2004-08-13 08:38:51
@@ -41,6 +41,7 @@ extern int basis_dir_cnt;
extern int make_backups;
extern int module_id;
extern int ignore_errors;
extern int orig_umask;
-@@ -275,7 +276,7 @@ int recv_files(int f_in, struct file_lis
+@@ -276,7 +277,7 @@ int recv_files(int f_in, struct file_lis
char *fname, fbuf[MAXPATHLEN];
char template[MAXPATHLEN];
char fnametmp[MAXPATHLEN];
char fnamecmpbuf[MAXPATHLEN];
uchar *delayed_bits = NULL;
struct file_struct *file;
-@@ -532,7 +533,12 @@ int recv_files(int f_in, struct file_lis
+@@ -533,7 +534,12 @@ int recv_files(int f_in, struct file_lis
cleanup_disable();
int msgtype = csum_length == SUM_LENGTH || read_batch ?
FERROR : FINFO;
if (msgtype == FERROR || verbose) {
-@@ -556,9 +562,8 @@ int recv_files(int f_in, struct file_lis
+@@ -557,9 +563,8 @@ int recv_files(int f_in, struct file_lis
keptstr, redostr);
}
if (csum_length != SUM_LENGTH) {
}
}
}
---- orig/rsync.h 2005-02-04 22:28:09
+--- orig/rsync.h 2005-02-07 20:41:57
+++ rsync.h 2005-02-03 02:04:59
@@ -61,6 +61,7 @@
#define FLAG_HLINK_EOL (1<<1) /* generator only */
MSG_DONE=5, /* current phase is done */
MSG_REDO=4, /* reprocess indicated flist index */
MSG_ERROR=FERROR, MSG_INFO=FINFO, MSG_LOG=FLOG, /* remote logging */
---- orig/rsync.yo 2005-02-05 01:23:49
+--- orig/rsync.yo 2005-02-11 23:14:49
+++ rsync.yo 2005-02-03 02:05:29
@@ -338,6 +338,7 @@ to the detailed description below for a
--delete-during receiver deletes during xfer, not before
--ignore-errors delete even if there are I/O errors
--force force deletion of dirs even if not empty
--max-delete=NUM don't delete more than NUM files
-@@ -727,6 +728,11 @@ receiving side that are not on the sendi
+@@ -728,6 +729,11 @@ receiving side that are not on the sendi
delete any files on the receiving side that are excluded (see bf(--exclude)).
See bf(--delete) (which is implied) for more details on file-deletion.
dit(bf(--ignore-errors)) Tells bf(--delete) to go ahead and delete files
even when there are I/O errors.
---- orig/sender.c 2005-02-03 02:04:20
+--- orig/sender.c 2005-02-11 22:24:19
+++ sender.c 2004-07-26 16:49:19
@@ -26,6 +26,7 @@ extern int io_error;
extern int dry_run;
if (!am_server && !am_daemon) {
rprintf(FERROR, "io timeout after %d seconds -- exiting\n",
(int)(t-last_io));
---- orig/options.c 2005-02-01 10:39:22
+--- orig/options.c 2005-02-11 18:21:45
+++ options.c 2005-01-28 19:35:23
-@@ -102,6 +102,7 @@ int checksum_seed = 0;
+@@ -101,6 +101,7 @@ int checksum_seed = 0;
int inplace = 0;
int delay_updates = 0;
long block_size = 0; /* "long" because popt can't set an int32. */
/** Network address family. **/
-@@ -325,6 +326,8 @@ void usage(enum logcode F)
+@@ -327,6 +328,8 @@ void usage(enum logcode F)
rprintf(F," --password-file=FILE read password from FILE\n");
rprintf(F," --list-only list the files instead of copying them\n");
rprintf(F," --bwlimit=KBPS limit I/O bandwidth; KBytes per second\n");
rprintf(F," --write-batch=FILE write a batched update to FILE\n");
rprintf(F," --read-batch=FILE read a batched update from FILE\n");
#if INET6
-@@ -342,6 +345,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OP
+@@ -344,6 +347,7 @@ enum {OPT_VERSION = 1000, OPT_DAEMON, OP
OPT_FILTER, OPT_COMPARE_DEST, OPT_COPY_DEST, OPT_LINK_DEST,
OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW,
OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_TIMEOUT, OPT_MAX_SIZE,
OPT_REFUSED_BASE = 9000};
static struct poptOption long_options[] = {
-@@ -423,6 +427,8 @@ static struct poptOption long_options[]
+@@ -426,6 +430,8 @@ static struct poptOption long_options[]
{"port", 0, POPT_ARG_INT, &rsync_port, 0, 0, 0 },
{"log-format", 0, POPT_ARG_STRING, &log_format, 0, 0, 0 },
{"bwlimit", 0, POPT_ARG_INT, &bwlimit, 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 },
{"read-batch", 0, POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
-@@ -802,6 +808,36 @@ int parse_arguments(int *argc, const cha
+@@ -831,6 +837,36 @@ int parse_arguments(int *argc, const cha
basis_dir[basis_dir_cnt++] = (char *)arg;
break;
+
default:
/* A large opt value means that set_refuse_options()
- * turned this option off (opt-BASE is its index). */
-@@ -1216,6 +1252,15 @@ void server_options(char **args,int *arg
+ * turned this option off. */
+@@ -1275,6 +1311,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 2005-02-01 10:39:23
+--- orig/rsync.yo 2005-02-11 23:14:49
+++ rsync.yo 2005-02-01 10:46:35
@@ -376,6 +376,8 @@ to the detailed description below for a
--password-file=FILE read password from FILE
--write-batch=FILE write a batched update to FILE
--read-batch=FILE read a batched update from FILE
--checksum-seed=NUM set block/file checksum seed (advanced)
-@@ -1108,6 +1110,19 @@ transfer was too fast, it will wait befo
+@@ -1133,6 +1135,19 @@ transfer was too fast, it will wait befo
result is an average transfer rate equaling the specified limit. A value
of zero specifies no limit.
dit(bf(--write-batch=FILE)) Record a file that can later be applied to
another identical destination with bf(--read-batch). See the "BATCH MODE"
section for details.
---- orig/util.c 2005-01-28 19:08:20
+--- orig/util.c 2005-02-11 10:53:15
+++ util.c 2004-07-03 20:23:22
@@ -126,6 +126,132 @@ void overflow(char *str)
exit_cleanup(RERR_MALLOC);