Hello,
I've been porting rsync-3.0.7 to run on UWIN, an AT&T Labs open source project, 
supporting a Unix environment on Windows. The code configured easily and 
compiled without any modifications or ifdef's added to the code.

The backup test was failing because it didn't create a subdirectory. In tracing 
the code I realized the problem was in robust_move() in backup.c. UWIN returns 
ENOTDIR, when the rename(2) is called when a directory component is not in the 
new pathname. According to the Open Group website this is a valid errno value. 
The code in robust_move() only checked for ENOENT. When I added checking for 
ENOTDIR, the backup test passes.

I suggest changing lines 192 and 264 of backup.c from
      if (errno == ENOENT && make_bak_dir(dst) == 0) {
to 
      if ((errno == ENOENT || errno == ENOTDIR) && make_bak_dir(dst) == 0) {

to conform to the POSIX specification of rename(2) error returns.

Thank you
Jeff Fellin
AT&T Labs
180 Park Ave
Florham Park, NJ
-- 
Please use reply-all for most replies to avoid omitting the mailing list.
To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

Reply via email to