summaryrefslogtreecommitdiffstats
path: root/doc/CrtChannel.3
diff options
context:
space:
mode:
authorandreas_kupries <akupries@shaw.ca>2004-07-15 20:46:17 (GMT)
committerandreas_kupries <akupries@shaw.ca>2004-07-15 20:46:17 (GMT)
commit597bb3236aba9dbe1c799b8bde917c1228fd21a1 (patch)
tree6b9b7f812be710b6ab81f81e35ba63a056c6926f /doc/CrtChannel.3
parent3c87843ad32da0db04bc580121a56049ad5cb367 (diff)
downloadtcl-597bb3236aba9dbe1c799b8bde917c1228fd21a1.zip
tcl-597bb3236aba9dbe1c799b8bde917c1228fd21a1.tar.gz
tcl-597bb3236aba9dbe1c799b8bde917c1228fd21a1.tar.bz2
* generic/tclIO.h (CHANNEL_INCLOSE): New flag. Set in
* generic/tclIO.c (Tcl_UnregisterChannel): 'Tcl_Close' while the * generic/tclIO.c (Tcl_Close): close callbacks are run. Checked in 'Tcl_Close' and 'Tcl_Unregister' to prevent recursive call of 'close' in the close-callbacks. This is a possible error made by implementors of virtual filesystems based on 'tclvfs', thinking that they have to close the channel in the close handler for the filesystem. * generic/tclIO.c: * generic/tclIO.h: * Not reverting, but #ifdef'ing the changes from May 19, 2004 out of the core. This removes the ***POTENTIAL INCOMPATIBILITY*** for channel drivers it introduced. This has become possible due to Expect gaining a BlockModeProc and now handling blockingg and non-blocking modes correctly. Thus [SF Tcl Bug 943274] is still fixed if a recent enough version of Expect is used. * doc/CrtChannel.3: Added warning about usage of a channel without a BlockModeProc.
Diffstat (limited to 'doc/CrtChannel.3')
-rw-r--r--doc/CrtChannel.310
1 files changed, 9 insertions, 1 deletions
diff --git a/doc/CrtChannel.3 b/doc/CrtChannel.3
index 477ef67..828b958 100644
--- a/doc/CrtChannel.3
+++ b/doc/CrtChannel.3
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: CrtChannel.3,v 1.16 2002/07/01 18:24:39 jenglish Exp $
+'\" RCS: @(#) $Id: CrtChannel.3,v 1.16.2.1 2004/07/15 20:46:17 andreas_kupries Exp $
.so man.macros
.TH Tcl_CreateChannel 3 8.3 Tcl "Tcl Library Procedures"
.BS
@@ -405,6 +405,14 @@ behavior must be emulated in the channel driver.
.PP
This value can be retrieved with \fBTcl_ChannelBlockModeProc\fR, which returns
a pointer to the function.
+.PP
+A channel driver \fBnot\fR supplying a \fIblockModeProc\fR has to be
+very, very careful. It has to tell the generic layer exactly which
+blocking mode is acceptable to it, and should this also document for
+the user so that the blocking mode of the channel is not changed to an
+inacceptable value. Any confusion here may lead the interpreter into a
+(spurious and difficult to find) deadlock.
+
.SH "CLOSEPROC AND CLOSE2PROC"
.PP