summaryrefslogtreecommitdiffstats
path: root/doc/chan.n
blob: 19753cd142200b12caa8bd1e75778fde3b7e65fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
'\" 
'\" Copyright (c) 2005 Donal K. Fellows
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
'\" RCS: @(#) $Id: chan.n,v 1.1 2005/06/06 23:45:41 dkf Exp $
.so man.macros
.TH chan n 8.5 Tcl "Tcl Built-In Commands"
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
chan \- Read, write and manipulate channels
.SH SYNOPSIS
\fBchan \fIoption\fR ?\fIarg arg ...\fR?
.BE

.SH DESCRIPTION
.PP
This command provides several operations for reading from, writing to
and otherwise manipulating open channels (such as have been created
with the \fBopen\fR and \fBsocket\fR commands). \fIOption\fR indicates
what to do with the channel; any unique abbreviation for \fIoption\fR
is acceptable. Valid options are:
.TP
\fBchan blocked \fIchannelId\fR
Test whether the last input operation on the channel called
\fIchannelId\fR failed because it would have otherwise caused the
process to block.
.TP
\fBchan close \fIchannelId\fR
Close and destroy the channel called \fIchannelId\fR. Note that this
deletes all existing file-events registered on the channel.
.TP
\fBchan configure \fIchannelId\fR ?\fIoptionName\fR? ?\fIvalue\fR? ?\fIoptionName value\fR?...
Query or set the configuration options of the channel named
\fIchannelId\fR (see \fBfconfigure\fR for details).
'\" FIXME: describe common channel options here and refer to creator
'\" commands for special option descriptions.
.TP
\fBchan copy \fIinput output\fR ?\fB\-size \fIsize\fR? ?\fB\-command \fIcallback\fR?
Copy the contents of the channel \fIinput\fR, which must have been
opened for reading, to the channel \fIoutput\fR, which must have been
opened for writing. If \fIsize\fR is specified, only that many bytes
will be transferred. If \fIcallback\fR is specified, this command
returns immediately and arranges for \fIcallback\fR to be called when
the requested transfer has completed or an error occurs (assuming that
the event loop is running) with extra arguments appended to
\fIcallback\fR to indicate what happened.
.TP
\fBchan eof \fIchannelId\fR
Test whether the last input operation on the channel called
\fIchannelId\fR failed because the end of the data stream was reached.
.TP
\fBchan event \fIchannelId mode\fR ?\fIscript\fR?
Arrange for the Tcl script \fIscript\fR to be called whenever the
channel called \fIchannelId\fR enters the state described by
\fImode\fR (which must be either \fBreadable\fR or \fBwritable\fR). If
\fIscript\fR is omitted, the currently installed script is returned.
The callback is only performed if the event loop is being serviced.
.TP
\fBchan flush \fIchannelId\fR
Ensures that all pending output for the channel called \fIchannelId\fR
is written.
.TP
\fBchan gets \fIchannelId\fR ?\fIvarName\fR?
Reads a line from the channel called \fIchannelId\fR. If \fIvarName\fR
is not specified, the result of the command will be the line that has
been read (without a trailing newline character) or an empty string
upon error. If \fIvarName\fR is specified, the line that has been read
will be written to the variable called \fIvarName\fR and result will
be the number of characters that have been read or -1 if an error
occurred.
.TP
\fBchan names\fR ?\fIpattern\fR?
Produces a list of all channel names. If \fIpattern\fR is specified,
only those channel names that match it (according to the rules of
\fBstring match\fR) will be returned.
.TP
\fBchan puts\fR ?\fB\-nonewline\fR? ?\fIchannelId\fR? \fIstring\fR
Writes \fIstring\fR to the channel named \fIchannelId\fR (by default,
to the standard output stream) followed by a newline character. If the
optional flag \fB\-nonewline\fR is given, no trailing newline
character is written.
.TP
\fBchan read \fIchannelId\fR ?\fInumChars\fR?
.TP
\fBchan read \fR?\fB\-nonewline\fR? \fIchannelId\fR
In the first form, the result will be the next \fInumChars\fR
characters read from the channel named \fIchannelId\fR; if
\fInumChars\fR is omitted, all characters up to the point when the
channel would signal a failure (whether an end-of-file, blocked or
other error condition) are read. In the second form (i.e. when
\fInumChars\fR has been omitted) the flag \fB\-nonewline\fR may be
given to indicate that any trailing newline in the string that has
been read should be trimmed.
.TP
\fBchan seek \fIchannelId offset\fR ?\fIorigin\fR?
Sets the current position within the underlying data stream for the
channel named \fIchannelId\fR to be \fIoffset\fR bytes relative to
\fIorigin\fR. \fIOrigin\fR should be one of \fBstart\fR (the default
origin), \fBcurrent\fR or \fBend\fR.
.TP
\fBchan tell \fIchannelId\fR
Reports the current byte offset within the underlying data stream for
the channel named \fIchannelId\fR.
.TP
\fBchan truncate \fIchannelId\fR ?\fIlength\fR?
Sets the byte length of the underlying data stream for the channel
named \fIchannelId\fR to be \fIlength\fR (or to the current byte
offset within the underlying data stream if \fIlength\fR is omitted).

.SH "SEE ALSO"
close(n), eof(n), fblocked(n), fconfigure(n), fcopy(n), file(n),
fileevent(n), flush(n), gets(n), open(n), puts(n), read(n), seek(n),
socket(n), tell(n)

.SH KEYWORDS
channel, input, output, events, offset