diff options
author | Jeremy Allison <jra@samba.org> | 2002-03-02 00:44:38 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2002-03-02 00:44:38 +0000 |
commit | 0bc19c0bdbcfac2cad9029bcf36d3d00d82a074b (patch) | |
tree | 6a324a61c58939e81e70e41b8bccc367feee8e3a /source3/smbd/vfs-wrap.c | |
parent | a07e040c8c8515d0ffc2a6cce31a4f0124e42023 (diff) | |
download | samba-0bc19c0bdbcfac2cad9029bcf36d3d00d82a074b.tar.gz |
Fix lseek-on-pipe problem in VFS (where it belongs IMHO).
Jeremy.
(This used to be commit ebef2e7bc87fcbae794426c39044a7d23f43722d)
Diffstat (limited to 'source3/smbd/vfs-wrap.c')
-rw-r--r-- | source3/smbd/vfs-wrap.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/source3/smbd/vfs-wrap.c b/source3/smbd/vfs-wrap.c index 15d9572d1db..bb7d4972749 100644 --- a/source3/smbd/vfs-wrap.c +++ b/source3/smbd/vfs-wrap.c @@ -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) |