From c55c7b67fafe41bbab5c29af55c496cb8aa280d2 Mon Sep 17 00:00:00 2001 From: andreas_kupries Date: Mon, 4 Feb 2002 23:51:59 +0000 Subject: * unix/tclUnixChan.c (FileOutputProc): Fixed [bug 465765] reported by Dale Talcott . Avoid to write nothing into a file as STREAM based implementations will consider this a EOF (if the file is a pipe). Not done in the generic layer as this type of writing is actually useful to check the state of a socket. --- ChangeLog | 7 +++++++ unix/tclUnixChan.c | 12 +++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 07e6deb..2385727 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2002-02-04 Andreas Kupries + * unix/tclUnixChan.c (FileOutputProc): Fixed [bug 465765] reported + by Dale Talcott . Avoid + writing nothing into a file as STREAM based implementations will + consider this a EOF (if the file is a pipe). Not done in the + generic layer as this type of writing is actually useful to + check the state of a socket. + * doc/open.n: Fixed [Bug 511540], added cross-reference to 'pid' as the command to use to retrieve the pid of a command pipeline created via 'open'. diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 6386bd5..aa11fcf 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclUnixChan.c,v 1.27 2002/01/23 20:46:01 dgp Exp $ + * RCS: @(#) $Id: tclUnixChan.c,v 1.28 2002/02/04 23:51:59 andreas_kupries Exp $ */ #include "tclInt.h" /* Internal definitions for Tcl. */ @@ -429,6 +429,16 @@ FileOutputProc(instanceData, buf, toWrite, errorCodePtr) int written; *errorCodePtr = 0; + + if (toWrite == 0) { + /* SF Tcl Bug 465765. + * Do not try to write nothing into a file. STREAM based + * implementations will considers this as EOF (if there is a + * pipe behind the file). + */ + + return 0; + } written = write(fsPtr->fd, buf, (size_t) toWrite); if (written > -1) { return written; -- cgit v0.12