---- backup.c 23 Feb 2004 07:03:03 -0000 1.27
-+++ backup.c 6 Mar 2004 07:46:00 -0000
-@@ -130,8 +130,8 @@ failure:
- /* robustly move a file, creating new directory structures if necessary */
- static int robust_move(char *src, char *dst)
- {
-- if (robust_rename(src, dst, 0755) != 0 && (errno != ENOENT
-- || make_bak_dir(dst) < 0 || robust_rename(src, dst, 0755) != 0))
-+ if (robust_rename(src, dst, 0755) < 0 && (errno != ENOENT
-+ || make_bak_dir(dst) < 0 || robust_rename(src, dst, 0755) < 0))
- return -1;
- return 0;
- }
---- rsync.c 25 Feb 2004 21:20:59 -0000 1.133
-+++ rsync.c 6 Mar 2004 07:46:00 -0000
-@@ -235,15 +235,19 @@ void finish_transfer(char *fname, char *
- if (make_backups && !make_backup(fname))
- return;
+--- orig/rsync.c 2004-07-23 17:16:13
++++ rsync.c 2004-07-26 06:27:27
+@@ -246,6 +246,9 @@ void finish_transfer(char *fname, char *
+ goto do_set_perms;
+ }
+ /* Change permissions before putting the file into place. */
-+ set_perms(fnametmp, file, NULL, 0);
++ set_perms(fnametmp, file, NULL, ok_to_set_time ? 0 : PERMS_SKIP_MTIME);
+
/* move tmp file over real file */
- ret = robust_rename(fnametmp, fname, file->mode & INITACCESSPERMS);
-- if (ret != 0) {
-+ if (ret < 0) {
- rprintf(FERROR, "%s %s -> \"%s\": %s\n",
- ret == -2 ? "copy" : "rename",
- full_fname(fnametmp), fname, strerror(errno));
+ if (verbose > 2)
+ rprintf(FINFO, "renaming %s to %s\n", fnametmp, fname);
+@@ -257,6 +260,10 @@ void finish_transfer(char *fname, char *
do_unlink(fnametmp);
-- } else {
-- set_perms(fname,file,NULL,0);
-+ } else if (ret == 1) {
-+ /* The file got copied, so set the permissions again. */
-+ set_perms(fname, file, NULL, 0);
+ return;
}
++ if (ret == 0) {
++ /* The file was moved into place (not copied), so it's done. */
++ return;
++ }
+ do_set_perms:
+ set_perms(fname, file, NULL, ok_to_set_time ? 0 : PERMS_SKIP_MTIME);
}
-
---- t_stub.c 11 Sep 2003 04:48:13 -0000 1.4
-+++ t_stub.c 6 Mar 2004 07:46:00 -0000
+--- orig/t_stub.c 2004-05-15 20:10:13
++++ t_stub.c 2004-07-03 20:17:55
@@ -26,6 +26,7 @@
* functions, so that module test harnesses can run standalone.
**/
+int am_root = 0;
int modify_window = 0;
int module_id = -1;
- struct exclude_struct **server_exclude_list;
---- util.c 17 Feb 2004 23:13:10 -0000 1.132
-+++ util.c 6 Mar 2004 07:46:00 -0000
-@@ -28,6 +28,7 @@
- #include "rsync.h"
+ struct exclude_list_struct server_exclude_list;
+--- orig/util.c 2004-06-09 21:54:47
++++ util.c 2004-07-03 20:17:55
+@@ -29,6 +29,7 @@
extern int verbose;
+ extern int dry_run;
+extern int am_root;
-
- int sanitize_paths = 0;
-
-@@ -262,6 +263,8 @@ int copy_file(char *source, char *dest,
+ extern int module_id;
+ extern int modify_window;
+ extern struct exclude_list_struct server_exclude_list;
+@@ -263,6 +264,8 @@ int copy_file(char *source, char *dest,
return -1;
}
+ mode |= S_IWUSR;
ofd = do_open(dest, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, mode);
if (ofd == -1) {
- rprintf(FERROR,"open %s: %s\n",
-@@ -353,8 +356,8 @@ int robust_unlink(char *fname)
+ rsyserr(FERROR, errno, "open %s", full_fname(dest));
+@@ -361,8 +364,8 @@ int robust_unlink(char *fname)
#endif
}
int robust_rename(char *from, char *to, int mode)
{
int tries = 4;
-@@ -371,10 +374,12 @@ int robust_rename(char *from, char *to,
+@@ -379,10 +382,12 @@ int robust_rename(char *from, char *to,
break;
#endif
case EXDEV: