Fixed a failing hunk.
[rsync/rsync-patches.git] / omit-dir-times.diff
CommitLineData
16ac0fde
WD
1--- orig/options.c 2004-11-27 18:27:35
2+++ options.c 2004-12-03 23:24:19
3@@ -48,6 +48,7 @@ int preserve_devices = 0;
4 int preserve_uid = 0;
5 int preserve_gid = 0;
6 int preserve_times = 0;
7+int omit_dir_times = 0;
8 int update_only = 0;
9 int cvs_exclude = 0;
10 int dry_run = 0;
11@@ -260,6 +261,7 @@ void usage(enum logcode F)
12 rprintf(F," -g, --group preserve group\n");
13 rprintf(F," -D, --devices preserve devices (root only)\n");
14 rprintf(F," -t, --times preserve times\n");
15+ rprintf(F," -d, --omit-dir-times omit directories when preserving times\n");
16 rprintf(F," -S, --sparse handle sparse files efficiently\n");
17 rprintf(F," -n, --dry-run show what would have been transferred\n");
18 rprintf(F," -W, --whole-file copy whole files, no incremental checks\n");
19@@ -365,6 +367,7 @@ static struct poptOption long_options[]
20 {"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 },
21 {"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 },
22 {"times", 't', POPT_ARG_NONE, &preserve_times, 0, 0, 0 },
23+ {"omit-dir-times", 'd', POPT_ARG_NONE, &omit_dir_times, 0, 0, 0 },
24 {"checksum", 'c', POPT_ARG_NONE, &always_checksum, 0, 0, 0 },
25 {"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 },
26 {"quiet", 'q', POPT_ARG_NONE, 0, 'q', 0, 0 },
27@@ -1080,6 +1083,8 @@ void server_options(char **args,int *arg
28 argstr[x++] = 'D';
29 if (preserve_times)
30 argstr[x++] = 't';
31+ if (omit_dir_times && am_sender)
32+ argstr[x++] = 'd';
33 if (preserve_perms)
34 argstr[x++] = 'p';
35 if (recurse)
36--- orig/rsync.c 2004-09-07 21:45:30
37+++ rsync.c 2004-12-03 23:32:45
38@@ -25,6 +25,7 @@
39 extern int verbose;
40 extern int dry_run;
41 extern int preserve_times;
42+extern int omit_dir_times;
43 extern int am_root;
44 extern int am_sender;
45 extern int am_generator;
46@@ -143,14 +144,12 @@ int set_perms(char *fname,struct file_st
47 }
48
49 if (!preserve_times || S_ISLNK(st->st_mode)
50- || (make_backups && !backup_dir && S_ISDIR(st->st_mode)))
51+ || (S_ISDIR(st->st_mode)
52+ && (omit_dir_times || (make_backups && !backup_dir))))
53 flags |= PERMS_SKIP_MTIME;
54 if (!(flags & PERMS_SKIP_MTIME)
55 && cmp_modtime(st->st_mtime, file->modtime) != 0) {
56- /* don't complain about not setting times on directories
57- * because some filesystems can't do it */
58- if (set_modtime(fname,file->modtime) != 0 &&
59- !S_ISDIR(st->st_mode)) {
60+ if (set_modtime(fname,file->modtime) != 0) {
61 rsyserr(FERROR, errno, "failed to set times on %s",
62 full_fname(fname));
63 return 0;
64--- orig/rsync.yo 2004-12-03 23:06:59
65+++ rsync.yo 2004-12-03 23:28:07
66@@ -330,6 +330,7 @@ verb(
67 -g, --group preserve group
68 -D, --devices preserve devices (root only)
69 -t, --times preserve times
70+ -d, --omit-dir-times omit directories when preserving times
71 -S, --sparse handle sparse files efficiently
72 -n, --dry-run show what would have been transferred
73 -W, --whole-file copy whole files, no incremental checks
74@@ -627,6 +628,10 @@ cause the next transfer to behave as if
75 updated (though the rsync algorithm will make the update fairly efficient
76 if the files haven't actually changed, you're much better off using -t).
77
78+dit(bf(-d, --omit-dir-times)) This tells rsync to omit directories when
79+the preserving of modification times is enabled (see --times). If NFS
bb9fbf62 80+is sharing the files on the receiving end, it is a good idea to use -d.
16ac0fde
WD
81+
82 dit(bf(-n, --dry-run)) This tells rsync to not do any file transfers,
83 instead it will just report the actions it would have taken.
84