file->length = st.st_size;
file->mode = st.st_mode;
file->uid = st.st_uid;
---- orig/generator.c 2004-09-20 19:50:13
+--- orig/generator.c 2004-10-06 00:12:16
+++ generator.c 2004-07-03 20:15:41
@@ -92,7 +92,7 @@ static int skip_file(char *fname, struct
if (ignore_times)
}
-@@ -484,7 +484,7 @@ static void recv_generator(char *fname,
+@@ -482,7 +482,7 @@ static void recv_generator(char *fname,
}
if (update_only && fnamecmp == fname
if (verbose > 1)
rprintf(FINFO, "%s is newer\n", safe_fname(fname));
return;
---- orig/options.c 2004-09-23 17:42:07
+--- orig/options.c 2004-10-14 17:11:40
+++ options.c 2004-07-03 20:15:41
@@ -48,6 +48,7 @@ int preserve_devices = 0;
int preserve_uid = 0;
rprintf(F," -S, --sparse handle sparse files efficiently\n");
rprintf(F," -n, --dry-run show what would have been transferred\n");
rprintf(F," -W, --whole-file copy whole files, no incremental checks\n");
-@@ -362,6 +364,7 @@ static struct poptOption long_options[]
+@@ -355,6 +357,7 @@ static struct poptOption long_options[]
{"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 },
{"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 },
{"times", 't', POPT_ARG_NONE, &preserve_times, 0, 0, 0 },
+ {"copy-atimes", 'A', POPT_ARG_NONE, ©_atimes, 0, 0, 0 },
{"checksum", 'c', POPT_ARG_NONE, &always_checksum, 0, 0, 0 },
- {"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 },
- {"quiet", 'q', POPT_ARG_NONE, 0, 'q', 0, 0 },
-@@ -950,6 +953,8 @@ void server_options(char **args,int *arg
+ {"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 },
+ {"quiet", 'q', POPT_ARG_NONE, 0, 'q', 0, 0 },
+@@ -1007,6 +1010,8 @@ void server_options(char **args,int *arg
argstr[x++] = 'D';
if (preserve_times)
argstr[x++] = 't';
}
change_uid = am_root && preserve_uid && st->st_uid != file->uid;
---- orig/rsync.h 2004-09-22 08:47:31
+--- orig/rsync.h 2004-10-09 03:21:56
+++ rsync.h 2004-07-03 20:15:41
@@ -54,6 +54,7 @@
#define XMIT_HAS_IDEV_DATA (1<<9)
#define FULL_FLUSH 1
#define NORMAL_FLUSH 0
-@@ -426,6 +428,7 @@ struct file_struct {
+@@ -429,6 +431,7 @@ struct file_struct {
struct hlink *links;
} link_u;
time_t modtime;
uid_t uid;
gid_t gid;
mode_t mode;
---- orig/rsync.yo 2004-09-24 16:42:30
+--- orig/rsync.yo 2004-10-06 00:12:16
+++ rsync.yo 2004-07-03 20:15:41
@@ -330,6 +330,7 @@ verb(
-g, --group preserve group
Marc St-Onge
---- orig/backup.c 2004-09-20 19:50:13
+--- orig/backup.c 2004-10-06 00:12:15
+++ backup.c 2004-09-22 02:36:06
@@ -22,11 +22,17 @@
+ if (!buf)
return 0;
- #ifdef HAVE_MKNOD
-@@ -266,3 +293,13 @@ int make_backup(char *fname)
+ /* Check to see if this is a device file, or link */
+@@ -264,3 +291,13 @@ int make_backup(char *fname)
return keep_backup(fname);
return make_simple_backup(fname);
}
+ deleting = 0;
+ return ret;
+}
---- orig/options.c 2004-09-23 17:42:07
+--- orig/options.c 2004-10-14 17:11:40
+++ options.c 2004-09-22 02:25:03
@@ -113,10 +113,14 @@ int no_detach = 0;
int write_batch = 0;
rprintf(F," -u, --update update only (don't overwrite newer files)\n");
rprintf(F," --inplace update destination files inplace (SEE MAN PAGE)\n");
rprintf(F," -K, --keep-dirlinks treat symlinked dir on receiver as dir\n");
-@@ -326,6 +334,7 @@ static struct poptOption long_options[]
+@@ -319,6 +327,7 @@ static struct poptOption long_options[]
/* longName, shortName, argInfo, argPtr, value, descrip, argDesc */
- {"version", 0, POPT_ARG_NONE, 0, OPT_VERSION, 0, 0},
+ {"version", 0, POPT_ARG_NONE, 0, OPT_VERSION, 0, 0},
{"suffix", 0, POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
+ {"delete-suffix", 0, POPT_ARG_STRING, &delete_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 },
-@@ -396,6 +405,7 @@ static struct poptOption long_options[]
+@@ -384,6 +393,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 },
- {"address", 0, POPT_ARG_STRING, &bind_address, 0, 0, 0 },
{"backup-dir", 0, POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
+ {"delete-dir", 0, POPT_ARG_STRING, &delete_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 },
-@@ -733,6 +743,8 @@ int parse_arguments(int *argc, const cha
+ {"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 },
+@@ -796,6 +806,8 @@ int parse_arguments(int *argc, const cha
compare_dest = sanitize_path(NULL, compare_dest, 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);
}
-@@ -758,6 +770,12 @@ int parse_arguments(int *argc, const cha
+@@ -821,6 +833,12 @@ int parse_arguments(int *argc, const cha
if (check_exclude(elp, backup_dir, 1) < 0)
goto options_rejected;
}
}
if (server_exclude_list.head && files_from) {
clean_fname(files_from, 1);
-@@ -784,6 +802,16 @@ int parse_arguments(int *argc, const cha
+@@ -841,6 +859,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;
-@@ -803,6 +831,31 @@ int parse_arguments(int *argc, const cha
+@@ -860,6 +888,31 @@ int parse_arguments(int *argc, const cha
"--suffix cannot be a null string without --backup-dir\n");
return 0;
}
if (do_progress && !verbose)
verbose = 1;
-@@ -1009,6 +1062,10 @@ void server_options(char **args,int *arg
+@@ -1066,6 +1119,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) {
-@@ -1017,7 +1074,13 @@ void server_options(char **args,int *arg
+@@ -1074,7 +1131,13 @@ void server_options(char **args,int *arg
goto oom;
args[ac++] = arg;
}
---- orig/options.c 2004-09-23 17:42:07
+--- orig/options.c 2004-10-14 17:11:40
+++ options.c 2004-07-03 20:17:33
@@ -48,6 +48,7 @@ int preserve_devices = 0;
int preserve_uid = 0;
rprintf(F," -S, --sparse handle sparse files efficiently\n");
rprintf(F," -n, --dry-run show what would have been transferred\n");
rprintf(F," -W, --whole-file copy whole files, no incremental checks\n");
-@@ -362,6 +364,7 @@ static struct poptOption long_options[]
+@@ -355,6 +357,7 @@ static struct poptOption long_options[]
{"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 },
{"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 },
{"times", 't', POPT_ARG_NONE, &preserve_times, 0, 0, 0 },
+ {"dir-times", 'd', POPT_ARG_NONE, &preserve_dir_times, 0, 0, 0 },
{"checksum", 'c', POPT_ARG_NONE, &always_checksum, 0, 0, 0 },
- {"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 },
- {"quiet", 'q', POPT_ARG_NONE, 0, 'q', 0, 0 },
-@@ -950,6 +953,8 @@ void server_options(char **args,int *arg
+ {"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 },
+ {"quiet", 'q', POPT_ARG_NONE, 0, 'q', 0, 0 },
+@@ -1007,6 +1010,8 @@ void server_options(char **args,int *arg
argstr[x++] = 'D';
if (preserve_times)
argstr[x++] = 't';
rsyserr(FERROR, errno, "failed to set times on %s",
full_fname(fname));
return 0;
---- orig/rsync.yo 2004-09-24 16:42:30
+--- orig/rsync.yo 2004-10-06 00:12:16
+++ rsync.yo 2004-08-11 17:27:51
@@ -329,7 +329,8 @@ verb(
-o, --owner preserve owner (root only)
This patch from Sami Farin lets you specify --fsync if you want fsync()
to be called on every file we write.
---- orig/options.c 2004-10-08 20:16:26
+--- orig/options.c 2004-10-14 17:11:40
+++ options.c 2004-07-03 20:18:13
@@ -38,6 +38,7 @@ int make_backups = 0;
**/
rprintf(F," -u, --update update only (don't overwrite newer files)\n");
rprintf(F," --inplace update destination files inplace (SEE MAN PAGE)\n");
rprintf(F," -K, --keep-dirlinks treat symlinked dir on receiver as dir\n");
-@@ -346,6 +348,7 @@ static struct poptOption long_options[]
+@@ -339,6 +341,7 @@ static struct poptOption long_options[]
{"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 },
+ {"fsync", 0, POPT_ARG_NONE, &do_fsync, 0, 0, 0 },
{"dry-run", 'n', POPT_ARG_NONE, &dry_run, 0, 0, 0 },
{"sparse", 'S', POPT_ARG_NONE, &sparse_files, 0, 0, 0 },
{"cvs-exclude", 'C', POPT_ARG_NONE, &cvs_exclude, 0, 0, 0 },
-@@ -1078,6 +1081,9 @@ void server_options(char **args,int *arg
+@@ -1135,6 +1138,9 @@ void server_options(char **args,int *arg
args[ac++] = tmpdir;
}
---- orig/generator.c 2004-09-20 19:50:13
+--- orig/generator.c 2004-10-06 00:12:16
+++ generator.c 2004-07-03 20:20:46
@@ -41,6 +41,7 @@ extern int make_backups;
extern int csum_length;
}
if (preserve_links && S_ISLNK(file->mode)) {
---- orig/options.c 2004-09-23 17:42:07
+--- orig/options.c 2004-10-14 17:11:40
+++ options.c 2004-08-13 18:26:04
@@ -90,6 +90,7 @@ int delete_after = 0;
int only_existing = 0;
rprintf(F," --partial keep partially transferred files\n");
rprintf(F," --partial-dir=DIR put a partially transferred file into DIR\n");
rprintf(F," --force force deletion of directories even if not empty\n");
-@@ -319,7 +322,7 @@ void usage(enum logcode F)
- enum {OPT_VERSION = 1000, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -312,7 +315,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[] = {
-@@ -374,6 +377,7 @@ static struct poptOption long_options[]
+@@ -367,6 +370,7 @@ static struct poptOption long_options[]
{"rsh", 'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 },
{"block-size", 'B', POPT_ARG_INT, &block_size, 0, 0, 0 },
{"max-delete", 0, POPT_ARG_INT, &max_delete, 0, 0, 0 },
{"timeout", 0, POPT_ARG_INT, &io_timeout, OPT_TIMEOUT, 0, 0 },
{"temp-dir", 'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
{"compare-dest", 0, POPT_ARG_STRING, &compare_dest, 0, 0, 0 },
-@@ -600,6 +604,33 @@ int parse_arguments(int *argc, const cha
+@@ -667,6 +671,33 @@ int parse_arguments(int *argc, const cha
read_batch = 1;
break;
case OPT_TIMEOUT:
if (io_timeout && io_timeout < select_timeout)
select_timeout = io_timeout;
-@@ -993,6 +1024,11 @@ void server_options(char **args,int *arg
+@@ -1050,6 +1081,11 @@ void server_options(char **args,int *arg
args[ac++] = arg;
}
if (io_timeout) {
if (asprintf(&arg, "--timeout=%d", io_timeout) < 0)
goto oom;
---- orig/rsync.yo 2004-09-24 16:42:30
+--- orig/rsync.yo 2004-10-06 00:12:16
+++ rsync.yo 2004-07-03 20:20:46
@@ -345,6 +345,7 @@ verb(
--delete-after receiver deletes after transfer, not before