Tcl_UnstackChannel man page on UnixWare

Man page or keyword search:  
man Server   3616 pages
apropos Keyword Search (all sections)
Output format
UnixWare logo
[printable version]

Tcl_StackChannel(3)	    Tcl Library Procedures	   Tcl_StackChannel(3)

______________________________________________________________________________

NAME
       Tcl_StackChannel,  Tcl_UnstackChannel  - stack an I/O channel on top of
       another, and undo it

SYNOPSIS
       #include <tcl.h>

       Tcl_Channel
       Tcl_StackChannel(interp, typePtr, clientData, mask, channel)

       void
       Tcl_UnstackChannel(interp, channel)

       Tcl_Channel
       Tcl_GetStackedChannel(channel)

ARGUMENTS
       Tcl_Interp	 *interp	(in)	  Interpreter	 for	 error
						  reporting - can be NULL.

       Tcl_ChannelType	 *typePtr	(in)	  The  new  channel I/O proce‐
						  dures to use for channel.

       ClientData	 clientData	(in)	  Arbitrary one-word value  to
						  pass	to  channel I/O proce‐
						  dures.

       int		 mask		(in)	  Conditions under which chan‐
						  nel will be used: OR-ed com‐
						  bination  of	 TCL_READABLE,
						  TCL_WRITABLE	and TCL_EXCEP‐
						  TION.	 This can be a	subset
						  of  the operations currently
						  allowed on channel.

       Tcl_Channel	 channel	(in)	  An existing Tcl channel such
						  as  returned	by Tcl_Create‐
						  Channel.
_________________________________________________________________

DESCRIPTION
       These functions are for use by extensions that add processing layers to
       Tcl I/O channels.  Examples include compression and encryption modules.
       These functions transparently stack and unstack a new channel on top of
       an existing one.	 Any number of channels can be stacked together.

       Tcl_StackChannel replaces an existing channel with a new channel by the
       same name that was registered for channel with Tcl_RegisterChannel.

       Tcl_StackChannel works by creating a new channel	 structure  under  the
       existing channel and pushing the existing channel functions down to the
       newly created channel.  The hidden channel does no  buffering,  newline
       translations,  or character set encoding.  Instead, the buffering, new‐
       line translations, and encoding functions all remain at the top of  the
       channel	stack.	The top-most channel gets changed to use the I/O chan‐
       nel functions defined in typePtr, and the channel functions are	passed
       the  new	 clientData.   The  existing  channel structure is modified in
       place, so C applications that continue to use channel will also see the
       effects	of  the	 new  processing  module.   A pointer to a new channel
       structure is returned, although this new data structure is the one that
       has  been pushed down below the top of the channel module stack.	 (This
       pointer can also be obtained with the Tcl_GetStackedChannel call.)   If
       an error occurs when stacking the channel, NULL is returned instead.

       The mask parameter specifies the operations that are allowed on the new
       channel.	 These can be a subset of the operations allowed on the origi‐
       nal  channel.   For  example, a read-write channel may become read-only
       after the Tcl_StackChannel call.

       Closing a channel closes the channels stacked below it.	The  close  of
       stacked	channels  is executed in a way that allows buffered data to be
       properly flushed.

       Tcl_UnstackChannel reverses the process.	 The old channel is associated
       with   the   channel   name,   and   the	 processing  module  added  by
       Tcl_StackChannel is destroyed.	If  there  is  no  old	channel,  then
       Tcl_UnstackChannel is equivalent to Tcl_Close .

SEE ALSO
       Notifier(3), Tcl_CreateChannel(3), Tcl_OpenFileChannel(3), vwait(n).

KEYWORDS
       channel, compression

Tcl				      8.2		   Tcl_StackChannel(3)
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server UnixWare

List of man pages available for UnixWare

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net