}
}
---- orig/generator.c 2006-01-31 02:30:18
-+++ generator.c 2006-01-26 09:15:22
-@@ -44,6 +44,7 @@ extern int preserve_perms;
+--- orig/generator.c 2006-01-31 18:59:39
++++ generator.c 2006-02-01 19:37:52
+@@ -45,6 +45,7 @@ extern int preserve_executability;
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;
-@@ -91,6 +92,7 @@ extern dev_t filesystem_dev;
+@@ -92,6 +93,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;
-@@ -185,7 +187,7 @@ static int delete_item(char *fname, int
+@@ -186,7 +188,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);
-@@ -263,7 +265,7 @@ static void delete_in_dir(struct file_li
+@@ -264,7 +266,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;
-@@ -275,7 +277,7 @@ static void delete_in_dir(struct file_li
+@@ -276,7 +278,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);
-@@ -301,11 +303,11 @@ static void do_delete_pass(struct file_l
+@@ -302,11 +304,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
-@@ -347,8 +349,11 @@ void itemize(struct file_struct *file, i
+@@ -348,8 +350,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
+ if ((preserve_perms || preserve_executability)
&& (file->mode & CHMOD_BITS) != (st->st_mode & CHMOD_BITS))
iflags |= ITEM_REPORT_PERMS;
-@@ -397,7 +402,7 @@ int unchanged_file(char *fn, struct file
+@@ -398,7 +403,7 @@ int unchanged_file(char *fn, struct file
if (ignore_times)
return 0;
}
-@@ -551,13 +556,13 @@ static int find_fuzzy(struct file_struct
+@@ -552,13 +557,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",
-@@ -633,7 +638,7 @@ static int try_dests_reg(struct file_str
+@@ -634,7 +639,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;
-@@ -660,6 +665,8 @@ static int try_dests_reg(struct file_str
+@@ -661,6 +666,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)
-@@ -895,7 +902,7 @@ static void recv_generator(char *fname,
+@@ -896,7 +903,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;
}
-@@ -1074,7 +1081,7 @@ static void recv_generator(char *fname,
+@@ -1075,7 +1082,7 @@ static void recv_generator(char *fname,
}
if (update_only && statret == 0
if (verbose > 1)
rprintf(FINFO, "%s is newer\n", fname);
return;
-@@ -1177,7 +1184,7 @@ static void recv_generator(char *fname,
+@@ -1178,7 +1185,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-01-26 10:45:39
+--- orig/log.c 2006-02-01 19:37:05
+++ log.c 2006-01-24 22:50:01
@@ -38,6 +38,7 @@ extern int module_id;
extern int msg_fd_out;
extern int log_format_has_i;
extern int log_format_has_o_or_i;
extern int daemon_log_format_has_o_or_i;
-@@ -543,10 +544,12 @@ static void log_formatted(enum logcode c
+@@ -546,10 +547,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';
}
change_uid = am_root && preserve_uid && st->st_uid != file->uid;
---- orig/rsync.h 2006-01-30 20:39:09
+--- orig/rsync.h 2006-02-01 19:37:05
+++ rsync.h 2006-01-24 22:38:08
@@ -54,6 +54,7 @@
#define XMIT_HAS_IDEV_DATA (1<<9)