extern int recurse;
extern int make_backups;
extern char *backup_dir;
+extern int inplace;
/*
return 0;
if (!st) {
- if (link_stat(fname,&st2) != 0) {
+ if (link_stat(fname, &st2, 0) < 0) {
rsyserr(FERROR, errno, "stat %s failed",
full_fname(fname));
return 0;
* destination had the setuid or setgid bits set due
* to the side effect of the chown call */
if (st->st_mode & (S_ISUID | S_ISGID)) {
- link_stat(fname, st);
+ link_stat(fname, st, 0);
}
updated = 1;
}
if (make_backups && !make_backup(fname))
return;
+ if (inplace) {
+ if (verbose > 2)
+ rprintf(FINFO, "finishing %s\n", fname);
+ set_perms(fname, file, NULL, 0);
+ return;
+ }
+
/* move tmp file over real file */
+ if (verbose > 2)
+ rprintf(FINFO, "renaming %s to %s\n", fnametmp, fname);
ret = robust_rename(fnametmp, fname, file->mode & INITACCESSPERMS);
if (ret < 0) {
rsyserr(FERROR, errno, "%s %s -> \"%s\"",