diff options
author | Wayne Davison <wayned@samba.org> | 2010-11-06 09:57:23 -0700 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2010-11-06 10:13:16 -0700 |
commit | 96e051c86abc046034b371b75709ecb597497c63 (patch) | |
tree | 7e0b2e86f7f3a2456f269abc0d261f18a6a632bf /syscall.c | |
parent | 55f767c5caab53386e17686c69dd1bfe5afe752e (diff) | |
download | rsync-96e051c86abc046034b371b75709ecb597497c63.tar.gz |
Use ftruncate() at the end of a --sparse file.
Fixes bug 7337.
Diffstat (limited to 'syscall.c')
-rw-r--r-- | syscall.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -226,6 +226,22 @@ int do_rename(const char *fname1, const char *fname2) return rename(fname1, fname2); } +#ifdef HAVE_FTRUNCATE +int do_ftruncate(int fd, OFF_T size) +{ + int ret; + + if (dry_run) return 0; + RETURN_ERROR_IF_RO_OR_LO; + + do { + ret = ftruncate(fd, size); + } while (ret < 0 && errno == EINTR); + + return ret; +} +#endif + void trim_trailing_slashes(char *name) { int l; |