}
}
---- orig/generator.c 2006-01-31 18:59:39
+--- orig/generator.c 2006-02-05 06:40:40
+++ generator.c 2006-02-01 19:37:52
-@@ -45,6 +45,7 @@ extern int preserve_executability;
+@@ -44,6 +44,7 @@ extern int preserve_perms;
extern int preserve_uid;
extern int preserve_gid;
extern int preserve_times;
extern int omit_dir_times;
extern int delete_mode;
extern int delete_before;
-@@ -92,6 +93,7 @@ extern dev_t filesystem_dev;
+@@ -91,6 +92,7 @@ extern dev_t filesystem_dev;
extern char *backup_dir;
extern char *backup_suffix;
extern int backup_suffix_len;
extern struct file_list *the_file_list;
extern struct filter_list_struct server_filter_list;
-@@ -186,7 +188,7 @@ static int delete_item(char *fname, int
+@@ -185,7 +187,7 @@ static int delete_item(char *fname, int
for (j = dirlist->count; j--; ) {
struct file_struct *fp = dirlist->files[j];
continue;
strlcpy(p, fp->basename, remainder);
-@@ -264,7 +266,7 @@ static void delete_in_dir(struct file_li
+@@ -263,7 +265,7 @@ static void delete_in_dir(struct file_li
filt_array[cur_depth] = push_local_filters(fbuf, dlen);
if (one_file_system) {
filesystem_dev = stp->st_dev;
else if (filesystem_dev != stp->st_dev)
return;
-@@ -276,7 +278,7 @@ static void delete_in_dir(struct file_li
+@@ -275,7 +277,7 @@ static void delete_in_dir(struct file_li
* from the filesystem. */
for (i = dirlist->count; i--; ) {
struct file_struct *fp = dirlist->files[i];
continue;
if (flist_find(flist, fp) < 0) {
f_name(fp, delbuf);
-@@ -302,11 +304,11 @@ static void do_delete_pass(struct file_l
+@@ -301,11 +303,11 @@ static void do_delete_pass(struct file_l
for (j = 0; j < flist->count; j++) {
struct file_struct *file = flist->files[j];
rprintf(FINFO, "deleting in %s\n", fbuf);
if (link_stat(fbuf, &st, keep_dirlinks) < 0
-@@ -348,8 +350,11 @@ void itemize(struct file_struct *file, i
+@@ -347,8 +349,11 @@ void itemize(struct file_struct *file, i
iflags |= ITEM_REPORT_SIZE;
if ((iflags & (ITEM_TRANSFER|ITEM_LOCAL_CHANGE) && !keep_time
&& (!(iflags & ITEM_XNAME_FOLLOWS) || *xname))
+ if (preserve_atimes && !S_ISDIR(file->mode) && !S_ISLNK(file->mode)
+ && cmp_time(file->atime, st->st_atime) != 0)
+ iflags |= ITEM_REPORT_ATIME;
- if ((preserve_perms || preserve_executability)
- && (file->mode & CHMOD_BITS) != (st->st_mode & CHMOD_BITS))
+ if ((file->mode & CHMOD_BITS) != (st->st_mode & CHMOD_BITS))
iflags |= ITEM_REPORT_PERMS;
-@@ -398,7 +403,7 @@ int unchanged_file(char *fn, struct file
+ if (preserve_uid && am_root && file->uid != st->st_uid)
+@@ -396,7 +401,7 @@ int unchanged_file(char *fn, struct file
if (ignore_times)
return 0;
}
-@@ -552,13 +557,13 @@ static int find_fuzzy(struct file_struct
+@@ -550,13 +555,13 @@ static int find_fuzzy(struct file_struct
uint32 dist;
if (!S_ISREG(fp->mode) || !fp->length
if (verbose > 4) {
rprintf(FINFO,
"fuzzy size/modtime match for %s\n",
-@@ -634,7 +639,7 @@ static int try_dests_reg(struct file_str
+@@ -632,7 +637,7 @@ static int try_dests_reg(struct file_str
if (!unchanged_attrs(file, stp))
continue;
if ((always_checksum || ignore_times)
continue;
best_match = j;
match_level = 3;
-@@ -661,6 +666,8 @@ static int try_dests_reg(struct file_str
+@@ -659,6 +664,8 @@ static int try_dests_reg(struct file_str
itemizing && verbose > 1,
code) < 0)
goto try_a_copy;
if (preserve_hard_links && file->link_u.links)
hard_link_cluster(file, ndx, itemizing, code);
} else if (itemizing)
-@@ -896,7 +903,7 @@ static void recv_generator(char *fname,
+@@ -894,7 +901,7 @@ static void recv_generator(char *fname,
&& verbose && code && f_out != -1)
rprintf(code, "%s/\n", fname);
if (delete_during && f_out != -1 && !phase && dry_run < 2
delete_in_dir(the_file_list, fname, file, &st);
return;
}
-@@ -1075,7 +1082,7 @@ static void recv_generator(char *fname,
+@@ -1073,7 +1080,7 @@ static void recv_generator(char *fname,
}
if (update_only && statret == 0
if (verbose > 1)
rprintf(FINFO, "%s is newer\n", fname);
return;
-@@ -1178,7 +1185,7 @@ static void recv_generator(char *fname,
+@@ -1176,7 +1183,7 @@ static void recv_generator(char *fname,
if (fuzzy_basis) {
int j = flist_find(fuzzy_dirlist, file);
if (j >= 0) /* don't use changing file as future fuzzy basis */
+ } while (!(FFLAGS(file) & FLAG_HLINK_EOL));
#endif
}
---- orig/log.c 2006-02-01 19:37:05
+--- orig/log.c 2006-02-05 04:53:34
+++ log.c 2006-01-24 22:50:01
-@@ -38,6 +38,7 @@ extern int module_id;
+@@ -41,6 +41,7 @@ extern int module_id;
extern int msg_fd_out;
extern int protocol_version;
extern int preserve_times;
extern int log_format_has_i;
extern int log_format_has_o_or_i;
extern int daemon_log_format_has_o_or_i;
-@@ -546,10 +547,12 @@ static void log_formatted(enum logcode c
+@@ -607,10 +608,12 @@ static void log_formatted(enum logcode c
n[3] = !(iflags & ITEM_REPORT_SIZE) ? '.' : 's';
n[4] = !(iflags & ITEM_REPORT_TIME) ? '.'
: !preserve_times || S_ISLNK(file->mode) ? 'T' : 't';
if (iflags & (ITEM_IS_NEW|ITEM_MISSING_DATA)) {
char ch = iflags & ITEM_IS_NEW ? '+' : '?';
---- orig/options.c 2006-01-31 03:11:30
+--- orig/options.c 2006-02-03 23:51:57
+++ options.c 2006-01-31 03:08:39
@@ -52,6 +52,7 @@ int preserve_uid = 0;
int preserve_gid = 0;
if (preserve_perms)
argstr[x++] = 'p';
else if (preserve_executability && am_sender)
---- orig/rsync.c 2006-01-31 02:30:18
+--- orig/rsync.c 2006-02-05 04:53:34
+++ rsync.c 2006-01-31 03:00:22
-@@ -28,6 +28,7 @@ extern int daemon_log_format_has_i;
+@@ -37,6 +37,7 @@ extern int preserve_perms;
extern int preserve_executability;
extern int preserve_times;
extern int omit_dir_times;
extern int orig_umask;
extern int am_root;
extern int am_server;
-@@ -78,6 +79,7 @@ int set_file_attrs(char *fname, struct f
+@@ -113,6 +114,7 @@ int set_file_attrs(char *fname, struct f
int updated = 0;
STRUCT_STAT st2;
int change_uid, change_gid;
if (!st) {
if (dry_run)
-@@ -90,18 +92,33 @@ int set_file_attrs(char *fname, struct f
- st = &st2;
+@@ -131,18 +133,33 @@ int set_file_attrs(char *fname, struct f
+ }
}
+ /* This code must be the first update in the function due to
}
change_uid = am_root && preserve_uid && st->st_uid != file->uid;
---- orig/rsync.h 2006-02-01 19:37:05
+--- orig/rsync.h 2006-02-03 20:00:36
+++ rsync.h 2006-01-24 22:38:08
@@ -54,6 +54,7 @@
#define XMIT_HAS_IDEV_DATA (1<<9)
/*
* Start the flist array at FLIST_START entries and grow it
* by doubling until FLIST_LINEAR then grow by FLIST_LINEAR
---- orig/rsync.yo 2006-01-31 03:05:44
+--- orig/rsync.yo 2006-02-05 06:58:50
+++ rsync.yo 2006-01-31 03:06:45
@@ -323,8 +323,9 @@ to the detailed description below for a
--devices preserve device files (super-user only)
--super receiver attempts super-user activities
-S, --sparse handle sparse files efficiently
-n, --dry-run show what would have been transferred
-@@ -771,6 +772,12 @@ it is preserving modification times (see
+@@ -796,6 +797,12 @@ it is preserving modification times (see
the directories on the receiving side, it is a good idea to use bf(-O).
This option is inferred if you use bf(--backup) without bf(--backup-dir).
dit(bf(--super)) This tells the receiving side to attempt super-user
activities even if the receiving rsync wasn't run by the super-user. These
activities include: preserving users via the bf(--owner) option, preserving
-@@ -1278,8 +1285,8 @@ if the receiving rsync is at least versi
+@@ -1303,8 +1310,8 @@ if the receiving rsync is at least versi
with older versions of rsync, but that also turns on the output of other
verbose messages).
kind of update being done, bf(X) is replaced by the file-type, and the
other letters represent attributes that may be output if they are being
modified.
-@@ -1319,9 +1326,13 @@ quote(itemize(
+@@ -1344,9 +1351,13 @@ quote(itemize(
by the file transfer.
it() A bf(t) means the modification time is different and is being updated
to the sender's value (requires bf(--times)). An alternate value of bf(T)
EOT
if test ! -b "$fromdir/block2.5"; then
sed -e '/block2\.5/d' \
---- orig/testsuite/itemize.test 2006-01-30 08:12:44
+--- orig/testsuite/itemize.test 2006-02-04 19:52:05
+++ testsuite/itemize.test 2006-01-24 22:32:03
-@@ -31,14 +31,14 @@ ln "$fromdir/foo/config1" "$fromdir/foo/
+@@ -29,14 +29,14 @@ ln "$fromdir/foo/config1" "$fromdir/foo/
$RSYNC -iplr "$fromdir/" "$todir/" \
| tee "$outfile"
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 1 failed"
-@@ -50,10 +50,10 @@ chmod 601 "$fromdir/foo/config2"
+@@ -48,10 +48,10 @@ chmod 601 "$fromdir/foo/config2"
$RSYNC -iplrH "$fromdir/" "$todir/" \
| tee "$outfile"
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 2 failed"
-@@ -70,11 +70,11 @@ chmod 777 "$todir/bar/baz/rsync"
+@@ -68,11 +68,11 @@ chmod 777 "$todir/bar/baz/rsync"
$RSYNC -iplrtc "$fromdir/" "$todir/" \
| tee "$outfile"
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 3 failed"
-@@ -99,15 +99,15 @@ $RSYNC -ivvplrtH "$fromdir/" "$todir/" \
+@@ -97,15 +97,15 @@ $RSYNC -ivvplrtH "$fromdir/" "$todir/" \
| tee "$outfile"
filter_outfile
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 5 failed"
-@@ -126,8 +126,8 @@ touch "$todir/foo/config2"
+@@ -124,8 +124,8 @@ touch "$todir/foo/config2"
$RSYNC -iplrtH "$fromdir/" "$todir/" \
| tee "$outfile"
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 7 failed"
-@@ -136,15 +136,15 @@ $RSYNC -ivvplrtH --copy-dest="$lddir" "$
+@@ -134,15 +134,15 @@ $RSYNC -ivvplrtH --copy-dest="$lddir" "$
| tee "$outfile"
filter_outfile
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 8 failed"
-@@ -152,11 +152,11 @@ rm -rf "$todir"
+@@ -150,11 +150,11 @@ rm -rf "$todir"
$RSYNC -iplrtH --copy-dest="$lddir" "$fromdir/" "$todir/" \
| tee "$outfile"
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 9 failed"
-@@ -183,15 +183,15 @@ $RSYNC -ivvplrtH --link-dest="$lddir" "$
+@@ -181,15 +181,15 @@ $RSYNC -ivvplrtH --link-dest="$lddir" "$
| tee "$outfile"
filter_outfile
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 11 failed"
-@@ -199,10 +199,10 @@ rm -rf "$todir"
+@@ -197,10 +197,10 @@ rm -rf "$todir"
$RSYNC -iplrtH --link-dest="$lddir" "$fromdir/" "$todir/" \
| tee "$outfile"
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 12 failed"
-@@ -230,14 +230,14 @@ filter_outfile
+@@ -228,14 +228,14 @@ filter_outfile
# TODO fix really-old problem when combining -H with --compare-dest:
# missing output for foo/extra hard-link (and it might not be updated)!
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 14 failed"
-@@ -245,10 +245,10 @@ rm -rf "$todir"
+@@ -243,10 +243,10 @@ rm -rf "$todir"
$RSYNC -iplrtH --compare-dest="$lddir" "$fromdir/" "$todir/" \
| tee "$outfile"
cat <<EOT >"$chkfile"
EOT
diff $diffopt "$chkfile" "$outfile" || test_fail "test 15 failed"
---- orig/testsuite/rsync.fns 2006-01-30 08:12:44
+--- orig/testsuite/rsync.fns 2006-02-04 19:52:05
+++ testsuite/rsync.fns 2005-07-28 00:41:20
-@@ -67,7 +67,7 @@ printmsg() {
-
+@@ -66,7 +66,7 @@ printmsg() {
+ }
rsync_ls_lR() {
- find "$@" -print | sort | sed 's/ /\\ /g' | xargs "$TOOLDIR/tls"
+ find "$@" -print | sort | sed 's/ /\\ /g' | xargs "$TOOLDIR/tls" $TLS_ARGS
}
- rsync_getgroups() {
-@@ -175,6 +175,10 @@ checkit() {
+ check_perms() {
+@@ -184,6 +184,10 @@ checkit() {
# We can just write everything to stdout/stderr, because the
# wrapper hides it unless there is a problem.
echo "Running: \"$1\""
eval "$1"
status=$?
-@@ -182,10 +186,13 @@ checkit() {
+@@ -191,10 +195,13 @@ checkit() {
failed="YES";
fi
return 0;
}
---- orig/util.c 2006-01-30 07:18:28
+--- orig/util.c 2006-02-03 20:00:36
+++ util.c 2006-01-14 08:20:29
@@ -130,7 +130,7 @@ void overflow_exit(char *str)