On Mon, Jun 12, 2006 at 09:37:43AM -0600, Alan Sparks wrote: > I see in the code for the log_formatted() function the filename is > special-cased if rsync is sending the file, but do not understand why > this should be special-cased.
That's because only the sender has (or needs) path info from outside the transfer. > I did not want to use the pre-xfer exec, as it's too early (I need to run > after the file is transferred successfully). You misunderstood my suggestion. I suggested adding a pre-xfer exec that just logs the path info. That would enable you to manually post-process the log info using that extra logged information (or to grab the info at the start of the post-xfer exec). As for improving the %f escape, attached is a patch that prepends the current directory when receiving a file. This will add the missing information on what file is being changed. The patch may yet be improved from this early state, but it looks good for now. ..wayne..
--- log.c 7 Jun 2006 23:05:17 -0000 1.155 +++ log.c 13 Jun 2006 17:54:42 -0000 @@ -49,6 +49,8 @@ extern char *logfile_name; #if defined HAVE_ICONV_OPEN && defined HAVE_ICONV_H extern iconv_t ic_chck; #endif +extern char curr_dir[]; +extern unsigned int module_dirlen; static int log_initialised; static int logfile_was_closed; @@ -513,8 +515,18 @@ static void log_formatted(enum logcode c strlcpy(n, buf2, MAXPATHLEN); else n = buf2; - } else - clean_fname(n, 0); + } else { + if (*n != '/') { + pathjoin(buf2, sizeof buf2, + curr_dir + module_dirlen, n); + clean_fname(buf2, 0); + if (fmt[1]) + strlcpy(n, buf2, MAXPATHLEN); + else + n = buf2; + } else + clean_fname(n, 0); + } if (*n == '/') n++; break;
-- To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html