mirror of
https://github.com/samba-team/samba.git
synced 2025-07-31 20:22:15 +03:00
Fix lseek-on-pipe problem in VFS (where it belongs IMHO).
Jeremy.
This commit is contained in:
@ -36,19 +36,7 @@ SMB_OFF_T seek_file(files_struct *fsp,SMB_OFF_T pos)
|
||||
|
||||
seek_ret = fsp->conn->vfs_ops.lseek(fsp,fsp->fd,pos+offset,SEEK_SET);
|
||||
|
||||
/*
|
||||
* We want to maintain the fiction that we can seek
|
||||
* on a fifo for file system purposes. This allows
|
||||
* people to set up UNIX fifo's that feed data to Windows
|
||||
* applications. JRA.
|
||||
*/
|
||||
|
||||
if((seek_ret == -1) && (errno == ESPIPE)) {
|
||||
seek_ret = pos+offset;
|
||||
errno = 0;
|
||||
}
|
||||
|
||||
if((seek_ret == -1) || (seek_ret != pos+offset)) {
|
||||
if(seek_ret == -1) {
|
||||
DEBUG(0,("seek_file: sys_lseek failed. Error was %s\n", strerror(errno) ));
|
||||
fsp->pos = -1;
|
||||
return -1;
|
||||
|
@ -225,13 +225,26 @@ ssize_t vfswrap_write(files_struct *fsp, int fd, const void *data, size_t n)
|
||||
|
||||
SMB_OFF_T vfswrap_lseek(files_struct *fsp, int filedes, SMB_OFF_T offset, int whence)
|
||||
{
|
||||
SMB_OFF_T result;
|
||||
SMB_OFF_T result;
|
||||
|
||||
START_PROFILE(syscall_lseek);
|
||||
START_PROFILE(syscall_lseek);
|
||||
|
||||
result = sys_lseek(filedes, offset, whence);
|
||||
END_PROFILE(syscall_lseek);
|
||||
return result;
|
||||
result = sys_lseek(filedes, offset, whence);
|
||||
|
||||
/*
|
||||
* We want to maintain the fiction that we can seek
|
||||
* on a fifo for file system purposes. This allows
|
||||
* people to set up UNIX fifo's that feed data to Windows
|
||||
* applications. JRA.
|
||||
*/
|
||||
|
||||
if((result == -1) && (errno == ESPIPE)) {
|
||||
result = 0;
|
||||
errno = 0;
|
||||
}
|
||||
|
||||
END_PROFILE(syscall_lseek);
|
||||
return result;
|
||||
}
|
||||
|
||||
int vfswrap_rename(connection_struct *conn, const char *old, const char *new)
|
||||
|
Reference in New Issue
Block a user