possible typo/bug in receiver.c
dwd at drdykstra.us
Mon Jan 20 23:35:00 EST 2003
On Sat, Jan 18, 2003 at 12:25:05AM -0800, Wayne Davison wrote:
> On Fri, Jan 17, 2003 at 11:39:31PM -0800, Craig Barratt wrote:
> > If mkstemp() fails (for various reasons, including the directory not
> > existing) then fd == -1. So the first if () executes, which flushes
> > the data and does a continue. So the next two if () statements will
> > never execute.
> Good catch. The code got tweaked into this form in version 1.32 when it
> was changed from a set of calls (using do_mktemp() and do_open()) into a
> single call (using just do_mkstemp()). At that point the new (simpler)
> error-check section got added, and it made it impossible to get down to
> the older section.
> > Is rsync meant to create deep directories that don't exist?
> Not usually. In -R mode, it sends implied directories for the files, so
> it should be the case that the directories are normally created already.
> I find it interesting that this old code exists because there has been a
> lot of talk about the sending of implied directories (and an option to
> turn this off). If we put this code back the way it was back in 2001,
> then the newly suggested --no-implied-dirs option would not cause rsync
> to fail if a deep file didn't have a directory yet -- rsync would just
> create the intervening directories. I'm not sure if I want it to do
> that or not at the moment.
I removed the error check that skipped the creation of the directory,
just a piece of the code that was added in version 1.32. It's pretty
clear to me that it was just an oversight, because Tridge also modified
the dead code leg.
More information about the rsync