From d1497129256b8c1968237479e780fb6de2a978ee Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 5 Jun 2004 16:12:41 +0000 Subject: [PATCH] Simplified the code that avoids the re-stat for already-existing dirs. --- keep-dirlinks.diff | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/keep-dirlinks.diff b/keep-dirlinks.diff index 5445861..4253c3d 100644 --- a/keep-dirlinks.diff +++ b/keep-dirlinks.diff @@ -1,5 +1,5 @@ --- generator.c 18 May 2004 08:50:17 -0000 1.85 -+++ generator.c 5 Jun 2004 15:56:04 -0000 ++++ generator.c 5 Jun 2004 16:08:33 -0000 @@ -26,6 +26,7 @@ extern int verbose; extern int dry_run; @@ -24,42 +24,22 @@ if (statret == 0 && !preserve_perms && (S_ISDIR(st.st_mode) == S_ISDIR(file->mode))) { -@@ -329,18 +339,23 @@ void recv_generator(char *fname, struct +@@ -338,9 +348,10 @@ void recv_generator(char *fname, struct + full_fname(fname)); } - statret = -1; - } -- if (statret != 0 && do_mkdir(fname,file->mode) != 0 && errno != EEXIST) { -- if (!(relative_paths && errno == ENOENT -- && create_directory_path(fname, orig_umask) == 0 -- && do_mkdir(fname, file->mode) == 0)) { -- rsyserr(FERROR, errno, -- "recv_generator: mkdir %s failed", -- full_fname(fname)); -+ if (statret != 0) { -+ if (do_mkdir(fname,file->mode) != 0 && errno != EEXIST) { -+ if (!(relative_paths && errno == ENOENT -+ && create_directory_path(fname, orig_umask) == 0 -+ && do_mkdir(fname, file->mode) == 0)) { -+ rsyserr(FERROR, errno, -+ "recv_generator: mkdir %s failed", -+ full_fname(fname)); -+ } - } -+ statret = link_stat(fname, &st); -+ if (statret != 0) -+ return; } - /* f_out is set to -1 when doing final directory - permission and modification time repair */ - if (set_perms(fname,file,NULL,0) && verbose && (f_out != -1)) + /* f_out is set to -1 when doing final directory-permission + * and modification-time repair. */ -+ if (set_perms(fname, file, &st, 0) && verbose && (f_out != -1)) ++ if (set_perms(fname, file, statret ? NULL : &st, 0) ++ && verbose && f_out != -1) rprintf(FINFO,"%s/\n",fname); return; } --- options.c 27 May 2004 21:51:53 -0000 1.153 -+++ options.c 5 Jun 2004 15:56:04 -0000 ++++ options.c 5 Jun 2004 16:08:34 -0000 @@ -38,6 +38,7 @@ int make_backups = 0; int whole_file = -1; @@ -94,7 +74,7 @@ if (whole_file > 0) argstr[x++] = 'W'; --- rsync.yo 21 May 2004 09:44:32 -0000 1.170 -+++ rsync.yo 5 Jun 2004 15:56:05 -0000 ++++ rsync.yo 5 Jun 2004 16:08:35 -0000 @@ -289,6 +289,7 @@ verb( --backup-dir make backups into this directory --suffix=SUFFIX backup suffix (default ~ w/o --backup-dir) -- 2.34.1