diff options
author | Jeremy Allison <jra@samba.org> | 2010-12-02 17:52:11 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-12-03 03:39:42 +0100 |
commit | 2b0ff09982bcf961b830dc44e5a658e1cf31bfc1 (patch) | |
tree | e616f79f4f5851169b34ea6c98cbd29faa485527 | |
parent | 24ca7bcb604a1a5de6a074fd3ad1dfab4e58b34d (diff) | |
download | samba-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.c | 14 |
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: |