diff options
author | Ryo Nakamura <upa@haeena.net> | 2023-08-04 15:06:14 +0900 |
---|---|---|
committer | Ryo Nakamura <upa@haeena.net> | 2023-08-04 15:06:14 +0900 |
commit | 24c1bc9149eb8f1c383eaf16d94636b62d07c152 (patch) | |
tree | 54dd5823cb8255a493a851e4ecec74aeae675370 /src/fileops.h | |
parent | 16f2f88cc91ffa2421393b077611d55d6cd2b771 (diff) |
do not set O_TRUNC when opening destination file.
It prevents `mscp localhost:hoge ~/hoge` from truncating the source
file. See https://bugzilla.mindrot.org/show_bug.cgi?id=3431.
https://github.com/upa/mscp/issues/1
Diffstat (limited to 'src/fileops.h')
-rw-r--r-- | src/fileops.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/fileops.h b/src/fileops.h index ede9c48..8dc6e5b 100644 --- a/src/fileops.h +++ b/src/fileops.h @@ -46,7 +46,11 @@ typedef struct mf_struct mf; mf *mscp_open(const char *path, int flags, mode_t mode, sftp_session sftp); void mscp_close(mf *f); int mscp_lseek(mf *f, size_t off); -int mscp_chmod(const char *path, mode_t mode, sftp_session sftp); + +/* mscp_setstat() involves chmod and truncate. It executes both at + * once via a single SFTP command (sftp_setstat()). + */ +int mscp_setstat(const char *path, mode_t mode, size_t size, sftp_session sftp); /* remote glob */ int mscp_glob(const char *pattern, int flags, glob_t *pglob, sftp_session sftp); |