X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/972a3619c4ea253671e2fe0897f99af897782e26..0503f06089b89aa4166d6ced8d5901ad6a112c41:/rsync.c diff --git a/rsync.c b/rsync.c index 87a8056b..489afcf1 100644 --- a/rsync.c +++ b/rsync.c @@ -57,7 +57,7 @@ int delete_file(char *fname) int ret; extern int recurse; - if (do_unlink(fname) == 0 || errno == ENOENT) return 0; + if (robust_unlink(fname) == 0 || errno == ENOENT) return 0; #if SUPPORT_LINKS ret = do_lstat(fname, &st); @@ -242,7 +242,8 @@ int make_backup(char *fname) slprintf(fnamebak,sizeof(fnamebak),"%s%s",fname,backup_suffix); if (do_rename(fname,fnamebak) != 0) { - if (errno != ENOENT) { + /* cygwin (at least version b19) reports EINVAL */ + if (errno != ENOENT && errno != EINVAL) { rprintf(FERROR,"rename %s %s : %s\n",fname,fnamebak,strerror(errno)); return 0; } @@ -261,7 +262,7 @@ void finish_transfer(char *fname, char *fnametmp, struct file_struct *file) return; /* move tmp file over real file */ - if (do_rename(fnametmp,fname) != 0) { + if (robust_rename(fnametmp,fname) != 0) { if (errno == EXDEV) { /* rename failed on cross-filesystem link. Copy the file instead. */ @@ -271,12 +272,11 @@ void finish_transfer(char *fname, char *fnametmp, struct file_struct *file) } else { set_perms(fname,file,NULL,0); } - do_unlink(fnametmp); } else { rprintf(FERROR,"rename %s -> %s : %s\n", fnametmp,fname,strerror(errno)); - do_unlink(fnametmp); } + do_unlink(fnametmp); } else { set_perms(fname,file,NULL,0); }