summaryrefslogtreecommitdiff
path: root/syscall.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2010-11-06 09:57:23 -0700
committerWayne Davison <wayned@samba.org>2010-11-06 10:13:16 -0700
commit96e051c86abc046034b371b75709ecb597497c63 (patch)
tree7e0b2e86f7f3a2456f269abc0d261f18a6a632bf /syscall.c
parent55f767c5caab53386e17686c69dd1bfe5afe752e (diff)
downloadrsync-96e051c86abc046034b371b75709ecb597497c63.tar.gz
Use ftruncate() at the end of a --sparse file.
Fixes bug 7337.
Diffstat (limited to 'syscall.c')
-rw-r--r--syscall.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/syscall.c b/syscall.c
index 1d72d198..a99783a3 100644
--- a/syscall.c
+++ b/syscall.c
@@ -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;