summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2010-12-02 17:52:11 -0800
committerJeremy Allison <jra@samba.org>2010-12-03 03:39:42 +0100
commit2b0ff09982bcf961b830dc44e5a658e1cf31bfc1 (patch)
treee616f79f4f5851169b34ea6c98cbd29faa485527
parent24ca7bcb604a1a5de6a074fd3ad1dfab4e58b34d (diff)
downloadsamba-2b0ff09982bcf961b830dc44e5a658e1cf31bfc1.tar.gz
samba-2b0ff09982bcf961b830dc44e5a658e1cf31bfc1.tar.bz2
samba-2b0ff09982bcf961b830dc44e5a658e1cf31bfc1.zip
Replace lseek()/write()/lseek() triple with pwrite call. We already emulate this
inside pwrite under the covers. Jeremy. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Fri Dec 3 03:39:42 CET 2010 on sn-devel-104
-rw-r--r--source3/modules/vfs_default.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 79f66db6d9..648aa34fcc 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -886,7 +886,6 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, SMB_O
int result = -1;
SMB_STRUCT_STAT st;
char c = 0;
- SMB_OFF_T currpos;
START_PROFILE(syscall_ftruncate);
@@ -909,10 +908,6 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, SMB_O
/* According to W. R. Stevens advanced UNIX prog. Pure 4.3 BSD cannot
extend a file with ftruncate. Provide alternate implementation
for this */
- currpos = SMB_VFS_LSEEK(fsp, 0, SEEK_CUR);
- if (currpos == -1) {
- goto done;
- }
/* Do an fstat to see if the file is longer than the requested
size in which case the ftruncate above should have
@@ -939,15 +934,10 @@ static int vfswrap_ftruncate(vfs_handle_struct *handle, files_struct *fsp, SMB_O
goto done;
}
- if (SMB_VFS_LSEEK(fsp, len-1, SEEK_SET) != len -1)
- goto done;
-
- if (SMB_VFS_WRITE(fsp, &c, 1)!=1)
+ if (SMB_VFS_PWRITE(fsp, &c, 1, len-1)!=1) {
goto done;
+ }
- /* Seek to where we were */
- if (SMB_VFS_LSEEK(fsp, currpos, SEEK_SET) != currpos)
- goto done;
result = 0;
done: