summaryrefslogtreecommitdiff
path: root/src/fileops.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fileops.c')
-rw-r--r--src/fileops.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/fileops.c b/src/fileops.c
index 5db7906..2c13436 100644
--- a/src/fileops.c
+++ b/src/fileops.c
@@ -323,12 +323,14 @@ int mscp_setstat(const char *path, struct stat *st, bool preserve_ts, sftp_sessi
ret = sftp_setstat(sftp, path, &attr);
sftp_err_to_errno(sftp);
} else {
- if ((ret = chmod(path, st->st_mode)) < 0)
- return ret;
if ((ret = truncate(path, st->st_size)) < 0)
return ret;
- if (preserve_ts)
- ret = setutimes(path, st->st_atim, st->st_mtim);
+ if (preserve_ts) {
+ if ((ret = setutimes(path, st->st_atim, st->st_mtim)) < 0)
+ return ret;
+ }
+ if ((ret = chmod(path, st->st_mode)) < 0)
+ return ret;
}
return ret;