This patch adds a --crtimes (-N) option that will preserve
To use this patch, run these commands for a successful build:
patch -p1 <patches/fileflags.diff
patch -p1 <patches/crtimes.diff
based-on: patch/master/fileflags
diff --git a/compat.c b/compat.c
@@ -49,6 +49,7 @@ extern int force_change;
+extern int preserve_crtimes;
extern int preserve_fileflags;
extern int preserve_acls;
extern int preserve_xattrs;
@@ -67,7 +68,7 @@ extern char *iconv_opt;
/* These index values are for the file-list's extra-attribute array. */
-int uid_ndx, gid_ndx, fileflags_ndx, acls_ndx, xattrs_ndx, unsort_ndx;
+int uid_ndx, gid_ndx, crtimes_ndx, fileflags_ndx, acls_ndx, xattrs_ndx, unsort_ndx;
int receiver_symlink_times = 0; /* receiver can set the time on a symlink */
int sender_symlink_iconv = 0; /* sender should convert symlink content */
@@ -146,6 +147,8 @@ void setup_protocol(int f_out,int f_in)
uid_ndx = ++file_extra_cnt;
gid_ndx = ++file_extra_cnt;
+ crtimes_ndx = (file_extra_cnt += TIME_EXTRA_CNT);
if (preserve_fileflags || (force_change && !am_sender))
fileflags_ndx = ++file_extra_cnt;
if (preserve_acls && !am_sender)
diff --git a/flist.c b/flist.c
@@ -56,6 +56,7 @@ extern int preserve_fileflags;
extern int delete_during;
extern int relative_paths;
extern int ignore_perishable;
@@ -380,7 +381,7 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,
+ static time_t modtime, crtime;
@@ -491,6 +492,13 @@ static void send_file_entry(int f, const char *fname, struct file_struct *file,