From 0bc19c0bdbcfac2cad9029bcf36d3d00d82a074b Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Sat, 2 Mar 2002 00:44:38 +0000 Subject: Fix lseek-on-pipe problem in VFS (where it belongs IMHO). Jeremy. (This used to be commit ebef2e7bc87fcbae794426c39044a7d23f43722d) --- source3/smbd/vfs-wrap.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'source3/smbd/vfs-wrap.c') diff --git a/source3/smbd/vfs-wrap.c b/source3/smbd/vfs-wrap.c index 15d9572d1d..bb7d497274 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) -- cgit