9699552002-03-12Martin Nilsson <!doctype html><html><head><title>Pike Reference Manual</title> <meta charset='utf-8'></head>
c3fe742003-02-05Martin Nilsson <body><dl><dt><h1 class='header'>9. I/O</h1></dt><dd><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.File</b></h2> </dt><dd><dl class='group--doc'> <dt class='head--doc'>Description</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>This is the basic I/O object, it provides socket and pipe communication as well as file access. It does not buffer reads and writes or provide line-by-line reading, that is done with <code>Stdio.FILE</code> object.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>The file or stream will normally be closed when this object is destructed (unless there are more objects that refer to the same file through use of <code>assign</code> or <code>dup</code>). Objects do not contain cyclic references in themselves, so they will be destructed timely when they run out of references.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>Stdio.FILE</code></p>
c3fe742003-02-05Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>assign</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>assign</span>(</b><code class='object unresolved'>File</code>|<code class='object unresolved'>Fd</code> <code class='argument'>o</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function takes a clone of Stdio.File and assigns all variables of this file from it. It can be used together with <code>dup()</code> to move files around.</p>
e4e3f32002-04-06Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>dup()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>async_connect</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
b27ad92003-04-22Marcus Comstedt <dd><p><code><code class='datatype'>int</code> <b><span class='method'>async_connect</span>(</b><code class='datatype'>string</code> <code class='argument'>host</code>, <code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>function</code>(<code class='datatype'>int</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>void</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Open a TCP/IP connection asynchronously.</p> <p> This function is similar to <code>connect()</code>, but works asynchronously.</p> </dd> <dt class='head--doc'><span id='p-host'></span>Parameter <code class='parameter'>host</code></dt> <dd></dd><dd class='body--doc'><p>Hostname or IP to connect to.</p> </dd> <dt class='head--doc'><span id='p-port'></span>Parameter <code class='parameter'>port</code></dt>
b27ad92003-04-22Marcus Comstedt <dd></dd><dd class='body--doc'><p>Port number or service name to connect to.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'><span id='p-callback'></span>Parameter <code class='parameter'>callback</code></dt> <dd></dd><dd class='body--doc'><p>Function to be called on completion.
84ea4e2003-04-07Martin Nilsson  The first argument will be <code class='expr'>1</code> if a connection was successfully estabished, and <code class='expr'>0</code> (zero) on failure.
c3fe742003-02-05Martin Nilsson  The rest of the arguments to <code>callback</code> are passed verbatim from <code>args</code>.</p> </dd> <dt class='head--doc'><span id='p-args'></span>Parameter <code class='parameter'>args</code></dt> <dd></dd><dd class='body--doc'><p>Extra arguments to pass to <code>callback</code>.</p> </dd> <dt class='head--doc'>Returns</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>Returns <code class='expr'>0</code> on failure, and <code class='expr'>1</code> if <code>callback</code>
c3fe742003-02-05Martin Nilsson  will be used.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>The socket may be opened with <code>open_socket()</code> ahead of the call to this function, but it is not required.</p>
7770c92003-10-29Martin Stjernholm </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>This object is put in callback mode by this function. For <code>callback</code> to be called, the backend must be active. See e.g. <code>set_read_callback</code> for more details about backends and callback mode.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>The socket will be in nonblocking state if the connection is successful, and any callbacks will be cleared.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>connect()</code>, <code>open_socket()</code>, <code>set_nonblocking()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>close</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>close</span>(</b><b>)</b></code><br> <code><code class='datatype'>int</code> <b><span class='method'>close</span>(</b><code class='datatype'>string</code> <code class='argument'>direction</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Close the file. Optionally, specify "r", "w" or "rw" to close just the read, just the write or both read and write directions of the file respectively.</p>
d69f952003-10-22Martin Stjernholm <p> An exception is thrown if an I/O error occurs.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Nonzero is returned if the file wasn't open in the specified direction, zero otherwise.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>This function will not call the <tt>close_callback</tt>.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>open</code>, <code>open_socket</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson 
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>connect</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
b27ad92003-04-22Marcus Comstedt <dd><p><code><code class='datatype'>int</code> <b><span class='method'>connect</span>(</b><code class='datatype'>string</code> <code class='argument'>host</code>, <code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>client</code>, <code class='datatype'>void</code>|<code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>client_port</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function connects a socket previously created with <code>open_socket()</code> to a remote socket through TCP/IP. The <code>host</code> argument is the hostname or IP number of the remote machine. A local IP and port can be explicitly bound by specifying <code>client</code> and <code>client_port</code>.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>This function returns 1 for success, 0 otherwise.</p> </dd> <dt class='head--doc'>Note</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>In nonblocking mode <code class='expr'>0</code> (zero) may be returned and <code>errno()</code> set to <code class='expr'>EWOULDBLOCK</code> or <code class='expr'>WSAEWOULDBLOCK</code>. This should not be regarded as a connection failure. In nonblocking mode you need to wait for a write or close callback before you know if the connection failed or not.</p>
e4e3f32002-04-06Martin Nilsson </dd>
50af352002-07-15Martin Nilsson <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>query_address()</code>, <code>async_connect()</code>, <code>connect_unix()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>connect_unix</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>connect_unix</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Open a UNIX domain socket connection to the specified destination.</p>
e4e3f32002-04-06Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>Returns</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>Returns <code class='expr'>1</code> on success, and <code class='expr'>0</code> on failure.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>Nonblocking mode is not supported while connecting</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>create</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='object'>Stdio.File</span> <span class='class'>Stdio.File</span><b>(</b><b>)</b></code><br> <code><span class='object'>Stdio.File</span> <span class='class'>Stdio.File</span><b>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code><br> <code><span class='object'>Stdio.File</span> <span class='class'>Stdio.File</span><b>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>mode</code><b>)</b></code><br> <code><span class='object'>Stdio.File</span> <span class='class'>Stdio.File</span><b>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>mode</code>, <code class='datatype'>int</code> <code class='argument'>mask</code><b>)</b></code><br> <code><span class='object'>Stdio.File</span> <span class='class'>Stdio.File</span><b>(</b><code class='datatype'>string</code> <code class='argument'>descriptorname</code><b>)</b></code><br> <code><span class='object'>Stdio.File</span> <span class='class'>Stdio.File</span><b>(</b><code class='datatype'>int</code> <code class='argument'>fd</code><b>)</b></code><br> <code><span class='object'>Stdio.File</span> <span class='class'>Stdio.File</span><b>(</b><code class='datatype'>int</code> <code class='argument'>fd</code>, <code class='datatype'>string</code> <code class='argument'>mode</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>There are four basic ways to create a Stdio.File object. The first is calling it without any arguments, in which case the you'd have to call <code>open()</code>, <code>connect()</code> or some other method which connects the File object with a stream.</p> <p> The second way is calling it with a <code>filename</code> and open <code>mode</code>. This is the same thing as cloning and then calling <code>open()</code>, except shorter and faster.</p>
84ea4e2003-04-07Martin Nilsson <p> The third way is to call it with <code>descriptorname</code> of <code class='expr'>"stdin"</code>, <code class='expr'>"stdout"</code> or <code class='expr'>"stderr"</code>. This will open the specified
c3fe742003-02-05Martin Nilsson  standard stream.</p> <p> For the advanced users, you can use the file descriptors of the systems (note: emulated by pike on some systems - like NT). This is only useful for streaming purposes on unix systems. This is <b>not recommended at all</b> if you don't know what you're into. Default
84ea4e2003-04-07Martin Nilsson  <code>mode</code> for this is <code class='expr'>"rw"</code>.</p>
715b8a2002-10-12Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>Open mode will be filtered through the system UMASK. You might need to use <code>chmod()</code> later.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>open()</code>, <code>connect()</code>, <code>Stdio.FILE</code>,</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>dup</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>File</code> <b><span class='method'>dup</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function returns a clone of Stdio.File with all variables copied from this file.</p>
715b8a2002-10-12Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>All variables, even <tt>id</tt>, are copied.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>assign()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>errno</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>errno</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns the error code for the last command on this file. Error code is normally cleared when a command is successful.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Inherit</span> <span class='homogen--name'><b>Fd_ref</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='datatype'><code class='modifier'>optional</code> inherit Fd_ref</span> : <span class='inherit'>Fd_ref</span></code></p></dd> </dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>line_iterator</b></span>
1f918f2002-05-26Martin Nilsson </dt>
88ba442003-04-21Henrik Grubbström (Grubba) <dd><p><code><code class='object unresolved'>String.SplitIterator</code>|<code class='object unresolved'>LineIterator</code> <b><span class='method'>line_iterator</span>(</b><code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>trim</code><b>)</b></code></p></dd>
c3fe742003-02-05Martin Nilsson  <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Returns an iterator that will loop over the lines in this file.
0f4adf2003-07-22Henrik Grubbström (Grubba)  If trim is true, all <tt>'\r'</tt> characters will be removed from the input.</p>
c3fe742003-02-05Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>open</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>open</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>mode</code><b>)</b></code><br> <code><code class='datatype'>int</code> <b><span class='method'>open</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>mode</code>, <code class='datatype'>int</code> <code class='argument'>mask</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Open a file for read, write or append. The parameter <code>mode</code> should contain one or more of the following letters:</p>
84ea4e2003-04-07Martin Nilsson <table class='box'><tr><td><code><code class='key'>"r"</code></code></td><td><p>Open file for reading.</p>
c3fe742003-02-05Martin Nilsson </td></tr>
84ea4e2003-04-07Martin Nilsson <tr><td><code><code class='key'>"w"</code></code></td><td><p>Open file for writing.</p>
c3fe742003-02-05Martin Nilsson </td></tr>
84ea4e2003-04-07Martin Nilsson <tr><td><code><code class='key'>"a"</code></code></td><td><p>Open file for append (use with <code class='expr'>"w"</code>).</p>
c3fe742003-02-05Martin Nilsson </td></tr>
84ea4e2003-04-07Martin Nilsson <tr><td><code><code class='key'>"t"</code></code></td><td><p>Truncate file at open (use with <code class='expr'>"w"</code>).</p>
c3fe742003-02-05Martin Nilsson </td></tr>
84ea4e2003-04-07Martin Nilsson <tr><td><code><code class='key'>"c"</code></code></td><td><p>Create file if it doesn't exist (use with <code class='expr'>"w"</code>).</p>
c3fe742003-02-05Martin Nilsson </td></tr>
84ea4e2003-04-07Martin Nilsson <tr><td><code><code class='key'>"x"</code></code></td><td><p>Fail if file already exists (use with <code class='expr'>"c"</code>).</p>
c3fe742003-02-05Martin Nilsson </td></tr>
84ea4e2003-04-07Martin Nilsson </table><p><code>mode</code> should always contain at least one of the letters <code class='expr'>"r"</code> or <code class='expr'>"w"</code>.</p> <p> The parameter <code>mask</code> is protection bits to use if the file is created. Default is <code class='expr'>0666</code> (read+write for all in octal notation).</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Returns</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>This function returns <code class='expr'>1</code> for success, <code class='expr'>0</code> otherwise.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>close()</code>, <code>create()</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
5bfef52003-04-01Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>open_socket</b></span> </dt>
4ed3b72003-04-26Marcus Comstedt <dd><p><code><code class='datatype'>int</code> <b><span class='method'>open_socket</span>(</b><code class='datatype'>int</code>|<code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>port</code>, <code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>address</code>, <code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>family</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This makes this file into a socket ready for connections. The reason for this function is so that you can set the socket to nonblocking or blocking (default is blocking) before you call <code>connect()</code>.</p> <p> If you give a <code>port</code> number to this function, the socket will be bound to this <code>port</code> locally before connecting anywhere. This is only useful for some silly protocols like <b>FTP</b>. You may also specify an <code>address</code> to bind to if your machine has many IP numbers.</p>
b27ad92003-04-22Marcus Comstedt <p> <code>port</code> can also be specified as a string, giving the name of the service associated with the port.</p>
4ed3b72003-04-26Marcus Comstedt <p> Finally, a protocol <code>family</code> for the socket can be specified. If no <code>family</code> is specified, one which is appropriate for the <code>address</code> is automatically selected. Thus, there is normally no need to specify it.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>This function returns 1 for success, 0 otherwise.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>connect()</code>, <code>set_nonblocking()</code>, <code>set_blocking()</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
c3fe742003-02-05Martin Nilsson 
f7707e2008-03-07Henrik Grubbström (Grubba) <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>openat</b></span> </dt> <dd><p><code><code class='object unresolved'>File</code> <b><span class='method'>openat</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>mode</code><b>)</b></code><br> <code><code class='object unresolved'>File</code> <b><span class='method'>openat</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>mode</code>, <code class='datatype'>int</code> <code class='argument'>mask</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Open a file relative to an open directory.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>File.statat()</code>, <code>File.unlinkat()</code></p> </dd></dl>
1f71bf2003-05-15Marcus Comstedt <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>openpt</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>openpt</span>(</b><code class='datatype'>string</code> <code class='argument'>mode</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Open the master end of a pseudo-terminal pair. The parameter <code>mode</code> should contain one or more of the following letters:</p> <table class='box'><tr><td><code><code class='key'>"r"</code></code></td><td><p>Open terminal for reading.</p> </td></tr> <tr><td><code><code class='key'>"w"</code></code></td><td><p>Open terminal for writing.</p> </td></tr> </table><p><code>mode</code> should always contain at least one of the letters <code class='expr'>"r"</code> or <code class='expr'>"w"</code>.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>grantpt()</code></p> </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
196a872008-06-13Henrik Grubbström (Grubba) <span class='homogen--name'><b>pipe</b></span>
1f71bf2003-05-15Marcus Comstedt </dt>
196a872008-06-13Henrik Grubbström (Grubba) <dd><p><code><code class='object unresolved'>File</code> <b><span class='method'>pipe</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>required_properties</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
25eb8a2003-10-05Henrik Grubbström (Grubba) <dd class='body--doc'><p>This function creates a pipe between the object it was called in and an object that is returned.</p> </dd>
9cb4712003-10-08Martin Nilsson <dt class='head--doc'><span id='p-required_properties'></span>Parameter <code class='parameter'>required_properties</code></dt>
25eb8a2003-10-05Henrik Grubbström (Grubba) <dd></dd><dd class='body--doc'><p>Binary or (<code>predef::`|()</code>) of required <code class='expr'>PROP_</code> properties.</p> <table class='box'><tr><td><code><code class='key'>PROP_IPC</code></code></td><td><p>The resulting pipe may be used for inter process communication.</p> </td></tr> <tr><td><code><code class='key'>PROP_NONBLOCK</code></code></td><td><p>The resulting pipe supports nonblocking I/O.</p> </td></tr> <tr><td><code><code class='key'>PROP_SHUTDOWN</code></code></td><td><p>The resulting pipe supports shutting down transmission in either direction (see <code>close()</code>).</p> </td></tr> <tr><td><code><code class='key'>PROP_BUFFERED</code></code></td><td><p>The resulting pipe is buffered (usually 4KB).</p> </td></tr> <tr><td><code><code class='key'>PROP_BIDIRECTIONAL</code></code></td><td><p>The resulting pipe is bi-directional.</p> </td></tr> <tr><td><code><code class='key'>PROP_REVERSE</code></code></td><td><p>The resulting pipe supports communication "backwards" (but not necessarily "forwards", see <code>PROP_BIDIRECTIONAL</code>).</p> </td></tr> </table><p>The default is <code class='expr'>PROP_NONBLOCK|PROP_BIDIRECTIONAL</code>.</p> <p> If <code>PROP_BIDIRECTIONAL</code> isn't specified, the read-end is this object, and the write-end is the returned object (unless <code>PROP_REVERSE</code> has been specified, in which case it is the other way around).</p> <p> The two ends of a bi-directional pipe are indistinguishable.</p> <p> If the File object this function is called in was open to begin with, it will be closed before the pipe is created.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>Calling this function with an argument of <tt>0</tt> is not the same as calling it with no arguments.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
25eb8a2003-10-05Henrik Grubbström (Grubba) <dd class='body--doc'><p><code>Process.create_process()</code>, <code>PROP_IPC</code>, <code>PROP_NONBLOCK</code>, <code>PROP_SHUTDOWN</code>, <code>PROP_BUFFERED</code>, <code>PROP_REVERSE</code>, <code>PROP_BIDIRECTIONAL</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
7770c92003-10-29Martin Stjernholm <span class='homogen--name'><b>query_read_callback</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>query_write_callback</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>query_read_oob_callback</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>query_write_oob_callback</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>query_close_callback</b></span><br>
e4e3f32002-04-06Martin Nilsson </dt>
7770c92003-10-29Martin Stjernholm <dd><p><code><code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>string</code>:<code class='datatype'>int</code>) <b><span class='method'>query_read_callback</span>(</b><b>)</b></code><br> <code><code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <b><span class='method'>query_write_callback</span>(</b><b>)</b></code><br> <code><code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>string</code>:<code class='datatype'>int</code>) <b><span class='method'>query_read_oob_callback</span>(</b><b>)</b></code><br> <code><code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <b><span class='method'>query_write_oob_callback</span>(</b><b>)</b></code><br> <code><code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <b><span class='method'>query_close_callback</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>These functions return the currently installed callbacks for the respective events.</p>
1f918f2002-05-26Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>See also</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p><code>set_nonblocking()</code>, <code>set_read_callback</code>, <code>set_write_callback</code>, <code>set_read_oob_callback</code>, <code>set_write_oob_callback</code>, <code>set_close_callback</code></p>
c3fe742003-02-05Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>query_id</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>mixed</code> <b><span class='method'>query_id</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function returns the <tt>id</tt> that has been set with <code>set_id()</code>.</p>
50af352002-07-15Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>set_id()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson 
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>read_function</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>function</code>(:<code class='datatype'>string</code>) <b><span class='method'>read_function</span>(</b><code class='datatype'>int</code> <code class='argument'>nbytes</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns a function that when called will call <code>read</code> with nbytes as argument. Can be used to get various callback
0f4adf2003-07-22Henrik Grubbström (Grubba)  functions, eg for the fourth argument to <code>String.SplitIterator</code>.</p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson 
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_blocking</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_blocking</span>(</b><b>)</b></code></p></dd>
1f918f2002-05-26Martin Nilsson  <dt class='head--doc'>Description</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>This function clears all callbacks and sets a stream to blocking mode. i.e. reading, writing and closing will wait until data has been transferred before returning.</p>
1f918f2002-05-26Martin Nilsson </dd>
0f4adf2003-07-22Henrik Grubbström (Grubba) <dt class='head--doc'>Note</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>The callbacks are cleared and blocking mode is set in one atomic operation, so no callback gets called in between if the backend is running in another thread.</p> <p> Even so, if the stream is in callback mode (i.e. if any callbacks are installed) then only the backend thread can use this function reliably; it might otherwise already be running in a callback which is about to call e.g. <code>write</code> when the stream becomes blocking.</p>
0f4adf2003-07-22Henrik Grubbström (Grubba) </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>See also</dt>
0f4adf2003-07-22Henrik Grubbström (Grubba) <dd class='body--doc'><p><code>set_nonblocking()</code>, <code>set_nonblocking_keep_callbacks()</code>, <code>set_blocking_keep_callbacks()</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_nonblocking_keep_callbacks</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_blocking_keep_callbacks</b></span><br>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_nonblocking_keep_callbacks</span>(</b><b>)</b></code><br> <code><code class='datatype'>void</code> <b><span class='method'>set_blocking_keep_callbacks</span>(</b><b>)</b></code></p></dd>
1f918f2002-05-26Martin Nilsson  <dt class='head--doc'>Description</dt>
0f4adf2003-07-22Henrik Grubbström (Grubba) <dd class='body--doc'><p>Toggle between blocking and nonblocking, without changing the callbacks.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>set_nonblocking()</code>, <code>set_blocking()</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
7770c92003-10-29Martin Stjernholm <span class='homogen--name'><b>set_read_callback</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_write_callback</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_read_oob_callback</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_write_oob_callback</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_close_callback</b></span><br>
e4e3f32002-04-06Martin Nilsson </dt>
7770c92003-10-29Martin Stjernholm <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_read_callback</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>string</code>:<code class='datatype'>int</code>) <code class='argument'>read_cb</code><b>)</b></code><br> <code><code class='datatype'>void</code> <b><span class='method'>set_write_callback</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>write_cb</code><b>)</b></code><br> <code><code class='datatype'>void</code> <b><span class='method'>set_read_oob_callback</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>string</code>:<code class='datatype'>int</code>) <code class='argument'>read_oob_cb</code><b>)</b></code><br> <code><code class='datatype'>void</code> <b><span class='method'>set_write_oob_callback</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>write_oob_cb</code><b>)</b></code><br> <code><code class='datatype'>void</code> <b><span class='method'>set_close_callback</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>close_cb</code><b>)</b></code></p></dd>
c3fe742003-02-05Martin Nilsson  <dt class='head--doc'>Description</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>These functions set the various callbacks, which will be called when various events occur on the stream. A zero as argument will
ee845b2004-04-05Martin Stjernholm  remove the callback.</p>
7770c92003-10-29Martin Stjernholm <p> A <code>Pike.Backend</code> object is responsible for calling the callbacks. It requires a thread to be waiting in it to execute the calls. That means that only one of the callbacks will be running at a time, so you don't need mutexes between them.</p> <p> Unless you've specified otherwise with the <code>set_backend</code> function, the default backend <code>Pike.DefaultBackend</code> will be used. It's normally activated by returning <code class='expr'>-1</code> from the <tt>main</tt> function and will then execute in the main thread.</p> <ul> <li><p>When data arrives on the stream, <code>read_cb</code> will be called with some or all of that data as the second argument.</p> </li><li><p>When the stream has buffer space over for writing, <code>write_cb</code> will be called so that you can write more data to it.</p>
fc8e992005-01-26Martin Stjernholm <p> This callback is also called after the remote end of a socket
09a3a02005-01-26Martin Stjernholm  connection has closed the write direction. An attempt to write data to it in that case will generate a <code>System.EPIPE</code> errno. If the remote end has closed both directions simultaneously (the usual case), Pike will first attempt to call <code>close_cb</code>, then this callback (unless <code>close_cb</code> has closed the stream).</p>
7770c92003-10-29Martin Stjernholm </li><li><p>When out-of-band data arrives on the stream, <code>read_oob_cb</code> will be called with some or all of that data as the second argument.</p> </li><li><p>When the stream allows out-of-band data to be sent, <code>write_oob_cb</code> will be called so that you can write more out-of-band data to it.</p>
fc8e992005-01-26Martin Stjernholm <p> If the OS doesn't separate the write events for normal and out-of-band data, Pike will try to call <code>write_oob_cb</code> first. If it doesn't write anything, then <code>write_cb</code> will be tried. This also means that <code>write_oob_cb</code> might get called when the
09a3a02005-01-26Martin Stjernholm  remote end of a connection has closed the write direction.</p>
fc8e992005-01-26Martin Stjernholm </li><li><p>When an error or an end-of-stream in the read direction occurs, <code>close_cb</code> will be called. <code>errno</code> will return the error, or zero in the case of an end-of-stream.</p> <p> The name of this callback is rather unfortunate since it really has nothing to do with a close: The stream is still open when <code>close_cb</code> is called (you might not be able to read and/or write to it, but you can still use things like <code>query_address</code>, and the underlying file descriptor is still allocated). Also, this callback will not be called for a local close, neither by a call to <code>close</code> or by destructing this object.</p>
09a3a02005-01-26Martin Stjernholm <p> Also, <code>close_cb</code> will not be called if a remote close only occurs in the write direction; that is handled by <code>write_cb</code> (or possibly <code>write_oob_cb</code>).</p> <p> Events to <code>read_cb</code> and <code>close_cb</code> will be automatically deregistered if an end-of-stream occurs, and all events in the case of an error. I.e. there won't be any more calls to the callbacks unless they are reinstalled. This doesn't affect the
fc8e992005-01-26Martin Stjernholm  callback settings - <code>query_read_callback</code> et al will still return the installed callbacks.</p>
09a3a02005-01-26Martin Stjernholm </li></ul><p>If the stream is a socket performing a nonblocking connect (see <code>open_socket</code> and <code>connect</code>), a connection failure will call <code>close_cb</code>, and a successful connect will call either <code>read_cb</code> or <code>write_cb</code> as above.</p> <p> All callbacks will receive the <tt>id</tt> set by <code>set_id</code> as
7770c92003-10-29Martin Stjernholm  first argument.</p> <p> If a callback returns <code class='expr'>-1</code>, no other callback or call out will be called by the backend in that round. I.e. the caller of the backend will get control back right away. For the default backend that means it will immediately start another round and check files and call outs anew.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Note</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>These functions do not set the file nonblocking.</p>
c3fe742003-02-05Martin Nilsson </dd>
0f4adf2003-07-22Henrik Grubbström (Grubba) <dt class='head--doc'>Note</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>Callbacks are also set by <code>set_nonblocking()</code>.</p> </dd> <dt class='head--doc'>Note</dt>
6369932004-04-05Martin Stjernholm <dd class='body--doc'><p>After a callback has been called, it's disabled until it has accessed the stream accordingly, i.e. the <code>write_cb</code> callback is disabled after it's been called until something has been written with <code>write</code>, and the <code>write_oob_cb</code> callback is likewise disabled until something has been written with <code>write_oob</code>. Since the data already has been read when the read callbacks are called, this effect is not noticeable for them.</p>
ee845b2004-04-05Martin Stjernholm </dd> <dt class='head--doc'>Note</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>Installing callbacks means that you will start doing I/O on the stream from the thread running the backend. If you are running these set functions from another thread you must be prepared that the callbacks can be called immediately by the backend thread, so it might not be safe to continue using the stream in this thread.</p> <p> Because of that, it's useful to talk about "callback mode" when any callback is installed. In callback mode the stream should be seen as "bound" to the backend thread. For instance, it's only the backend thread that reliably can end callback mode before the stream is "handed over" to another thread.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>Callback mode has nothing to do with nonblocking mode - although the two often are used together they don't have to be.</p> </dd> <dt class='head--doc'>Note</dt>
ee845b2004-04-05Martin Stjernholm <dd class='body--doc'><p>The file object will stay referenced from the backend object as long as there are callbacks that can receive events.</p>
7770c92003-10-29Martin Stjernholm </dd> <dt class='head--doc'>Bugs</dt> <dd class='body--doc'><p>Setting a close callback without a read callback currently only works when there's no risk of getting more data on the stream. Otherwise the close callback will be silently deregistered if data arrives.</p>
0f4adf2003-07-22Henrik Grubbström (Grubba) </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>See also</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p><code>set_nonblocking()</code>, <code>set_id()</code>, <code>set_backend</code>, <code>query_read_callback</code>, <code>query_write_callback</code>, <code>query_read_oob_callback</code>, <code>query_write_oob_callback</code>, <code>query_close_callback</code></p>
c3fe742003-02-05Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_id</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_id</span>(</b><code class='datatype'>mixed</code> <code class='argument'>id</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function sets the <tt>id</tt> of this file. The <tt>id</tt> is mainly used as an identifier that is sent as the first argument to all
84ea4e2003-04-07Martin Nilsson  callbacks. The default <tt>id</tt> is <code class='expr'>0</code> (zero). Another possible
c3fe742003-02-05Martin Nilsson  use of the <tt>id</tt> is to hold all data related to this file in a mapping or array.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>query_id()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
45eff82002-06-11Johan Sundström <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_nonblocking</b></span>
45eff82002-06-11Johan Sundström </dt>
4ea7112003-10-24Martin Stjernholm <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_nonblocking</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>string</code>:<code class='datatype'>int</code>) <code class='argument'>read_callback</code>, <code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>write_callback</code>, <code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>close_callback</code><b>)</b></code><br> <code><code class='datatype'>void</code> <b><span class='method'>set_nonblocking</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>string</code>:<code class='datatype'>int</code>) <code class='argument'>read_callback</code>, <code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>write_callback</code>, <code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>close_callback</code>, <code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>string</code>:<code class='datatype'>int</code>) <code class='argument'>read_oob_callback</code>, <code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>write_oob_callback</code><b>)</b></code><br>
c3fe742003-02-05Martin Nilsson <code><code class='datatype'>void</code> <b><span class='method'>set_nonblocking</span>(</b><b>)</b></code></p></dd>
45eff82002-06-11Johan Sundström 
50af352002-07-15Martin Nilsson <dt class='head--doc'>Description</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>This function sets a stream to nonblocking mode and installs the specified callbacks. See the <code class='expr'>set_*_callback</code> functions for details about them. If no arguments are given, the callbacks will be cleared.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Note</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p>As opposed to calling the set callback functions separately, this function will set all the callbacks and nonblocking mode atomically so that no callback gets called in between. That avoids races in case the backend is executed by another thread.</p>
0f4adf2003-07-22Henrik Grubbström (Grubba) </dd> <dt class='head--doc'>Note</dt>
d052e62003-10-23Henrik Grubbström (Grubba) <dd class='body--doc'><p>Out-of-band data was not be supported on Pike 0.5 and earlier, and not on Pike 0.6 through 7.4 if they were compiled with the
0f4adf2003-07-22Henrik Grubbström (Grubba)  option <tt>'--without-oob'</tt>.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
7770c92003-10-29Martin Stjernholm <dd class='body--doc'><p><code>set_blocking()</code>, <code>set_read_callback()</code>, <code>set_write_callback()</code>, <code>set_read_oob_callback()</code>, <code>set_write_oob_callback()</code>, <code>set_close_callback()</code> <code>set_nonblocking_keep_callbacks()</code>, <code>set_blocking_keep_callbacks()</code></p>
c3fe742003-02-05Martin Nilsson </dd></dl>
45eff82002-06-11Johan Sundström 
c3fe742003-02-05Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>tcgetattr</b></span><br> <span class='homogen--type'>Method</span> <span class='homogen--name'><b>tcsetattr</b></span><br> </dt> <dd><p><code><code class='datatype'>mapping</code> <b><span class='method'>tcgetattr</span>(</b><b>)</b></code><br> <code><code class='datatype'>int</code> <b><span class='method'>tcsetattr</span>(</b><code class='datatype'>mapping</code> <code class='argument'>attr</code><b>)</b></code><br> <code><code class='datatype'>int</code> <b><span class='method'>tcsetattr</span>(</b><code class='datatype'>mapping</code> <code class='argument'>attr</code>, <code class='datatype'>string</code> <code class='argument'>when</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Gets/sets term attributes. The returned value/the <code>attr</code> parameter is a mapping on the form</p> <table class='box'><tr><td><code><code class='key'>"ispeed"</code> : <code class='datatype'>int(-1..)</code></code></td><td><p>In baud rate.</p> </td></tr> <tr><td><code><code class='key'>"ospeed"</code> : <code class='datatype'>int(-1..)</code></code></td><td><p>Out baud rate.</p>
196a872008-06-13Henrik Grubbström (Grubba) </td></tr> <tr><td><code><code class='key'>"csize"</code> : <code class='datatype'>int(-1..-1)</code>|<code class='datatype'>int(5..8)</code></code></td><td><p>Character size.</p> </td></tr> <tr><td><code><code class='key'>"rows"</code> : <code class='datatype'>int</code></code></td><td><p>Terminal rows.</p> </td></tr> <tr><td><code><code class='key'>"columns"</code> : <code class='datatype'>int</code></code></td><td><p>Terminal columns.</p> </td></tr> <tr><td><code><code class='key'>flag_name</code> : <code class='datatype'>bool</code></code></td><td><p>The value of a named flag. The flag name is the string describing the termios flags (IGNBRK, BRKINT, IGNPAR, PARMRK, INPCK, ISTRIP, INLCR, IGNCR, ICRNL, IUCLC, IXON, IXANY, IXOFF, IMAXBEL, OPOST, OLCUC, ONLCR, OCRNL, ONOCR, ONLRET, OFILL, OFDEL, OXTABS, ONOEOT, CSTOPB, CREAD, PARENB, PARODD, HUPCL, CLOCAL, CRTSCTS, ISIG, ICANON, XCASE, ECHO, ECHOE, ECHOK, ECHONL, ECHOCTL, ECHOPRT, ECHOKE, FLUSHO, NOFLSH, TOSTOP, PENDIN). See the manpage for termios or other documentation for more information. All flags are not available on all platforms.</p> </td></tr> <tr><td><code><code class='key'>character_name</code> : <code class='datatype'>int(8bit)</code></code></td><td><p>Sets the value of a control character (VINTR, VQUIT, VERASE, VKILL, VEOF, VTIME, VMIN, VSWTC, VSTART, VSTOP, VSUSP, VEOL, VREPRINT, VDISCARD, VWERASE, VLNEXT, VEOL2). All control characters are not available on all platforms.</p> </td></tr> </table><p>Negative values are not allowed as indata, but might appear in the result from <code>tcgetattr</code> when the actual value is unknown. <code>tcsetattr</code> returns 0 if failed.</p> <p> The argument <code>when</code> to <code>tcsetattr</code> describes when the changes are to take effect:</p> <table class='box'><tr><td><code><code class='key'>"TCSANOW"</code></code></td><td><p>The change occurs immediately (default).</p> </td></tr> <tr><td><code><code class='key'>"TCSADRAIN"</code></code></td><td><p>The change occurs after all output has been written.</p> </td></tr> <tr><td><code><code class='key'>"TCSAFLUSH"</code></code></td><td><p>The change occurs after all output has been written, and empties input buffers.</p> </td></tr> </table>
a5bdb12003-10-15Martin Stjernholm </dd>
196a872008-06-13Henrik Grubbström (Grubba) <dt class='head--doc'>Example</dt> <dd class='example'><pre><p>// setting the terminal in raw mode: Stdio.stdin-&gt;tcsetattr((["ECHO":0,"ICANON":0,"VMIN":0,"VTIME":0]));</p> </pre></dd>
a5bdb12003-10-15Martin Stjernholm <dt class='head--doc'>Note</dt>
196a872008-06-13Henrik Grubbström (Grubba) <dd class='body--doc'><p>Unknown flags are ignored by <code>tcsetattr()</code>. <code>tcsetattr</code> always changes the attribute, so only include attributes that actually should be altered in the attribute mapping.</p>
5bfef52003-04-01Martin Nilsson </dd>
196a872008-06-13Henrik Grubbström (Grubba) <dt class='head--doc'>Bugs</dt> <dd class='body--doc'><p>Terminal rows and columns setting by <code>tcsetattr()</code> is not currently supported.</p>
5bfef52003-04-01Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.FILE</b></h2> </dt><dd><dl class='group--doc'>
45eff82002-06-11Johan Sundström <dt class='head--doc'>Description</dt>
0f4adf2003-07-22Henrik Grubbström (Grubba) <dd class='body--doc'><p><code>Stdio.FILE</code> is a buffered version of <code>Stdio.File</code>, it inherits <code>Stdio.File</code> and has most of the functionality of <code>Stdio.File</code>. However, it has an input buffer that allows line-by-line input.</p> <p> It also has support for automatic charset conversion for both input and output (see <code>Stdio.FILE()-&gt;set_charset()</code>).</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>The output part of <code>Stdio.FILE</code> is currently not buffered.</p>
45eff82002-06-11Johan Sundström </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>_get_iterator</b></span>
45eff82002-06-11Johan Sundström </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='class'>Stdio.FILE</span> <span class='method'>a</span>;<br> foreach( a; index; value ) or<br></code><code><code class='modifier'>protected</code> <code class='datatype'>object</code> <b><span class='method'>_get_iterator</span>(</b><b>)</b></code></p></dd>
45eff82002-06-11Johan Sundström  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns an iterator that will loop over the lines in this file.</p>
50af352002-07-15Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>line_iterator()</code></p>
45eff82002-06-11Johan Sundström </dd></dl>
84d5df2002-09-16Johan Schön <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>getchar</b></span>
84d5df2002-09-16Johan Schön </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>getchar</span>(</b><b>)</b></code></p></dd>
84d5df2002-09-16Johan Schön  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function returns one character from the input stream.</p>
84d5df2002-09-16Johan Schön </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>Returns</dt>
0f4adf2003-07-22Henrik Grubbström (Grubba) <dd class='body--doc'><p>Returns the ISO-10646 (Unicode) value of the character.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Note</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>Returns an <code class='expr'>int</code> and not a <code class='expr'>string</code> of length 1.</p>
84d5df2002-09-16Johan Schön </dd></dl>
45eff82002-06-11Johan Sundström <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>gets</b></span>
45eff82002-06-11Johan Sundström </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>gets</span>(</b><b>)</b></code></p></dd>
45eff82002-06-11Johan Sundström  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Read one line of input with support for input conversion.</p> </dd> <dt class='head--doc'>Returns</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>This function returns the line read if successful, and <code class='expr'>0</code> if
c3fe742003-02-05Martin Nilsson  no more lines are available.</p>
45eff82002-06-11Johan Sundström </dd>
50af352002-07-15Martin Nilsson <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>ngets()</code>, <code>read()</code>, <code>line_iterator()</code>, <code>set_charset()</code></p>
45eff82002-06-11Johan Sundström </dd></dl> <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Inherit</span> <span class='homogen--name'><b>file</b></span>
45eff82002-06-11Johan Sundström </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='datatype'>inherit File</span> : <span class='inherit'>file</span></code></p></dd> </dl>
e4e3f32002-04-06Martin Nilsson 
50af352002-07-15Martin Nilsson 
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>line_iterator</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>object</code> <b><span class='method'>line_iterator</span>(</b><code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>trim</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns an iterator that will loop over the lines in this file.
0f4adf2003-07-22Henrik Grubbström (Grubba)  If <code>trim</code> is true, all <tt>'\r'</tt> characters will be removed from the input.</p>
c3fe742003-02-05Martin Nilsson </dd>
abf4cb2005-02-02Per Hedbor <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>It's not supported to call this method more than once unless a call to <code>seek</code> is done in advance. Also note that it's not possible to intermingle calls to <code>read</code>, <code>gets</code> or other functions that read data with the line iterator, it will produce unexpected results since the internal buffer in the iterator will not contain sequential file-data in those cases.</p> </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>_get_iterator()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
ab1f522003-07-10Henrik Grubbström (Grubba) <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>ngets</b></span> </dt> <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>) <b><span class='method'>ngets</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int(1..)</code> <code class='argument'>n</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Get <code>n</code> lines.</p> </dd> <dt class='head--doc'><span id='p-n'></span>Parameter <code class='parameter'>n</code></dt> <dd></dd><dd class='body--doc'><p>Number of lines to get, or all remaining if zero.</p> </dd></dl>
f7707e2008-03-07Henrik Grubbström (Grubba) <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>openat</b></span> </dt> <dd><p><code><code class='object unresolved'>FILE</code> <b><span class='method'>openat</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>mode</code><b>)</b></code><br> <code><code class='object unresolved'>FILE</code> <b><span class='method'>openat</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>mode</code>, <code class='datatype'>int</code> <code class='argument'>mask</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Same as <code>Stdio.File()-&gt;openat()</code>, but returns a <code>Stdio.FILE</code> object.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>Stdio.File()-&gt;openat()</code></p> </dd></dl>
0f4adf2003-07-22Henrik Grubbström (Grubba) <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>pipe</b></span> </dt> <dd><p><code><code class='object unresolved'>File</code> <b><span class='method'>pipe</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>flags</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Same as <code>Stdio.File()-&gt;pipe()</code>.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>Returns an <code>Stdio.File</code> object, NOT a <code>Stdio.FILE</code> object.</p> </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>printf</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>printf</span>(</b><code class='datatype'>string</code> <code class='argument'>format</code>, <code class='datatype'>mixed</code> ... <code class='argument'>data</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function does approximately the same as: <code class='expr'><code>write</code>(<code>sprintf</code>(<code>format</code>,@<code>data</code>))</code>.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>write()</code>, <code>sprintf()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>read</b></span>
1f918f2002-05-26Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>read</span>(</b><code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>bytes</code>, <code class='datatype'>void</code>|<code class='datatype'>bool</code> <code class='argument'>now</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson 
1f918f2002-05-26Martin Nilsson <dt class='head--doc'>Description</dt>
0f4adf2003-07-22Henrik Grubbström (Grubba) <dd class='body--doc'><p>Read <code>bytes</code> (wide-) characters with buffering and support for input conversion.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>Stdio.File()-&gt;read()</code>, <code>set_charset()</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_charset</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_charset</span>(</b><code class='datatype'>string</code> <code class='argument'>charset</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Sets the input and output charset of this file to the specified
0f4adf2003-07-22Henrik Grubbström (Grubba)  <code>charset</code>.</p> <p> The default charset is <tt>"ISO-8859-1"</tt>.</p>
2e26a92008-04-28Henrik Grubbström (Grubba) </dd><dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Consider using one of
e1d7e42008-04-28Henrik Grubbström (Grubba)  ISO-IR-196 (<tt>"\e%G"</tt> - switch to UTF-8 with return) or ISO-IR-190 (<tt>"\e%/G"</tt> - switch to UTF-8 level 1 no return) or ISO-IR-191 (<tt>"\e%/H"</tt> - switch to UTF-8 level 2 no return) or ISO-IR-192 (<tt>"\e%/I"</tt> - switch to UTF-8 level 3 no return) or ISO-IR-193 (<tt>"\e%/J"</tt> - switch to UTF-16 level 1 no return) or ISO-IR-194 (<tt>"\e%/K"</tt> - switch to UTF-16 level 2 no return) or ISO-IR-195 (<tt>"\e%/L"</tt> - switch to UTF-16 level 3 no return)
2e26a92008-04-28Henrik Grubbström (Grubba)  or ISO-IR-162 (<tt>"\e%/@"</tt> - switch to UCS-2 level 1) or ISO-IR-163 (<tt>"\e%/A"</tt> - switch to UCS-4 level 1) or ISO-IR-174 (<tt>"\e%/C"</tt> - switch to UCS-2 level 2) or ISO-IR-175 (<tt>"\e%/D"</tt> - switch to UCS-4 level 2) or ISO-IR-176 (<tt>"\e%/E"</tt> - switch to UCS-2 level 3) or ISO-IR-177 (<tt>"\e%/F"</tt> - switch to UCS-4 level 3) or ISO-IR-178 (<tt>"\e%B"</tt> - switch to UTF-1) automatically to encode wide strings.</p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>ungets</b></span>
1f918f2002-05-26Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>ungets</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson 
1f918f2002-05-26Martin Nilsson <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function puts a string back in the input buffer. The string can then be read with eg <code>read()</code>, <code>gets()</code> or <code>getchar()</code>.</p>
1f918f2002-05-26Martin Nilsson </dd>
ab1f522003-07-10Henrik Grubbström (Grubba) <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>The string must not contain line-feeds.</p> </dd>
1f918f2002-05-26Martin Nilsson <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>read()</code>, <code>gets()</code>, <code>getchar()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>write</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>write</span>(</b><code class='datatype'>array</code>(<code class='datatype'>string</code>)|<code class='datatype'>string</code> <code class='argument'>what</code>, <code class='datatype'>mixed</code> ... <code class='argument'>fmt</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Write <code>what</code> with support for output_conversion.</p>
e4e3f32002-04-06Martin Nilsson </dd>
1f918f2002-05-26Martin Nilsson <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>Stdio.File()-&gt;write()</code></p> </dd></dl> </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Port</b></h2> </dt><dd><dl class='group--doc'> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Handles listening to socket ports. Whenever you need a bound socket that is open and listens for connections you should use this program.</p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>accept</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>File</code> <b><span class='method'>accept</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function completes a connection made from a remote machine to this port. It returns a two-way stream in the form of a clone of
0f4adf2003-07-22Henrik Grubbström (Grubba)  <code>Stdio.File</code>. The new file is by initially set to blocking mode.</p>
50af352002-07-15Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>Stdio.File</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
9699552002-03-12Martin Nilsson 
2d83192003-10-30Martin Stjernholm <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>accept</b></span> </dt> <dd><p><code><code class='object unresolved'>Stdio.File</code> <b><span class='method'>accept</span>(</b><b>)</b></code></p></dd>
388ed92005-02-01Martin Stjernholm  <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Get the first connection request waiting for this port and return it as a connected socket.</p> <p> If no connection request is waiting and the port is in nonblocking mode (i.e. an accept callback is installed) then zero is returned. Otherwise this function waits until a connection has arrived.</p>
dd17692008-06-13Henrik Grubbström (Grubba) </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>In Pike 7.7 and later the resulting file object will be assigned to the same backend as the port object.</p>
388ed92005-02-01Martin Stjernholm </dd></dl>
2d83192003-10-30Martin Stjernholm 
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>bind</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
b27ad92003-04-22Marcus Comstedt <dd><p><code><code class='datatype'>int</code> <b><span class='method'>bind</span>(</b><code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>void</code>|<code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>accept_callback</code>, <code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>ip</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
388ed92005-02-01Martin Stjernholm <dd class='body--doc'><p>Opens a socket and binds it to port number on the local machine. If the second argument is present, the socket is set to nonblocking and the callback funcition is called whenever something connects to it. The callback will receive the id for this port as argument and should typically call <code>accept</code> to establish a connection.</p> <p> If the optional argument <code>ip</code> is given, <code>bind</code> will try to bind to an interface with that host name or IP number.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>1 is returned on success, zero on failure. <code>errno</code> provides further details about the error in the latter case.</p>
50af352002-07-15Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
388ed92005-02-01Martin Stjernholm <dd class='body--doc'><p><code>accept</code>, <code>set_id</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
4856ea2004-05-13H. William Welliver III <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>bind_unix</b></span> </dt>
06eb092004-05-13H. William Welliver III <dd><p><code><code class='datatype'>int</code> <b><span class='method'>bind_unix</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code>, <code class='datatype'>void</code>|<code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>accept_callback</code><b>)</b></code></p></dd>
4856ea2004-05-13H. William Welliver III  <dt class='head--doc'>Description</dt>
388ed92005-02-01Martin Stjernholm <dd class='body--doc'><p>Opens a Unix domain socket at the given path in the file system. If the second argument is present, the socket is set to nonblocking and the callback funcition is called whenever something connects to it. The callback will receive the id for this port as argument and should typically call <code>accept</code> to establish a connection.</p>
4856ea2004-05-13H. William Welliver III </dd> <dt class='head--doc'>Returns</dt>
388ed92005-02-01Martin Stjernholm <dd class='body--doc'><p>1 is returned on success, zero on failure. <code>errno</code> provides further details about the error in the latter case.</p>
4856ea2004-05-13H. William Welliver III </dd> <dt class='head--doc'>Note</dt>
388ed92005-02-01Martin Stjernholm <dd class='body--doc'><p>This function is only available on systems that support Unix domain
4856ea2004-05-13H. William Welliver III  sockets.</p> </dd> <dt class='head--doc'>See also</dt>
388ed92005-02-01Martin Stjernholm <dd class='body--doc'><p><code>accept</code>, <code>set_id</code></p>
4856ea2004-05-13H. William Welliver III </dd></dl>
e0c2812004-04-04Martin Stjernholm <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>close</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>close</span>(</b><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Closes the socket.</p> </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>create</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='object'>Stdio.Port</span> <span class='class'>Stdio.Port</span><b>(</b><b>)</b></code><br>
b27ad92003-04-22Marcus Comstedt <code><span class='object'>Stdio.Port</span> <span class='class'>Stdio.Port</span><b>(</b><code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code><b>)</b></code><br> <code><span class='object'>Stdio.Port</span> <span class='class'>Stdio.Port</span><b>(</b><code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>accept_callback</code><b>)</b></code><br> <code><span class='object'>Stdio.Port</span> <span class='class'>Stdio.Port</span><b>(</b><code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>accept_callback</code>, <code class='datatype'>string</code> <code class='argument'>ip</code><b>)</b></code><br>
c3fe742003-02-05Martin Nilsson <code><span class='object'>Stdio.Port</span> <span class='class'>Stdio.Port</span><b>(</b><code class='argument'>"stdin"</code><b>)</b></code><br> <code><span class='object'>Stdio.Port</span> <span class='class'>Stdio.Port</span><b>(</b><code class='argument'>"stdin"</code>, <code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>accept_callback</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>If the first argument is other than <code class='expr'>"stdin"</code> the arguments will
c3fe742003-02-05Martin Nilsson  be passed to <code>bind()</code>.</p>
84ea4e2003-04-07Martin Nilsson <p> When create is called with <code class='expr'>"stdin"</code> as the first argument, a socket is created out of the file descriptor <code class='expr'>0</code>. This is only
0f4adf2003-07-22Henrik Grubbström (Grubba)  useful if it actually is a socket to begin with.</p>
50af352002-07-15Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>bind</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
388ed92005-02-01Martin Stjernholm <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>create</b></span> </dt> <dd><p><code><span class='object'>Stdio.Port</span> <span class='class'>Stdio.Port</span><b>(</b><code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>void</code>|<code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>accept_callback</code>, <code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>ip</code><b>)</b></code><br> <code><span class='object'>Stdio.Port</span> <span class='class'>Stdio.Port</span><b>(</b><code class='argument'>"stdin"</code>, <code class='datatype'>void</code>|<code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>accept_callback</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>When called with an int or any string except <code class='expr'>"stdin"</code> as first argument, this function does the same as <code>bind()</code> would do with the same arguments.</p> <p> When called with <code class='expr'>"stdin"</code> as argument, a socket is created out of the file descriptor 0. This is only useful if that actually IS a socket to begin with.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>bind</code>, <code>listen_fd</code></p> </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>errno</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>errno</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
388ed92005-02-01Martin Stjernholm <dd class='body--doc'><p>If the last call done on this port failed, this function will return an integer describing what went wrong. Refer to your unix manual for further information.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Inherit</span> <span class='homogen--name'><b>_port</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='datatype'>inherit _port</span> : <span class='inherit'>_port</span></code></p></dd> </dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>listen_fd</b></span>
1f918f2002-05-26Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>listen_fd</span>(</b><code class='datatype'>int</code> <code class='argument'>fd</code>, <code class='datatype'>void</code>|<code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>accept_callback</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
388ed92005-02-01Martin Stjernholm <dd class='body--doc'><p>This function does the same as <code>bind</code>, except that instead of creating a new socket and bind it to a port, it expects the file descriptor <code>fd</code> to be an already open port.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>This function is only for the advanced user, and is generally used when sockets are passed to Pike at exec time.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>bind</code>, <code>accept</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson 
e4e3f32002-04-06Martin Nilsson 
50af352002-07-15Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>query_address</b></span>
50af352002-07-15Martin Nilsson </dt>
7cd97e2008-05-12Martin Stjernholm <dd><p><code><code class='datatype'>string</code> <b><span class='method'>query_address</span>(</b><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Get the address and port of the local socket end-point.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>This function returns the address and port of a socket end-point on the form <code class='expr'>"x.x.x.x&nbsp;port"</code> (IPv4) or <code class='expr'>"x:x:x:x:x:x:x:x&nbsp;port"</code> (IPv6).</p> <p> If there is some error querying or formatting the address, <code class='expr'>0</code> (zero) is returned and <code>errno()</code> will return the error code.</p> </dd> <dt class='head--doc'>Throws</dt> <dd class='body--doc'><p>An error is thrown if the socket isn't bound.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
dea86c2004-04-05Martin Stjernholm <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>query_backend</b></span> </dt> <dd><p><code><code class='object unresolved'>Pike.Backend</code> <b><span class='method'>query_backend</span>(</b><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Return the backend used for the accept callback.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>set_backend</code></p> </dd></dl>
1f918f2002-05-26Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>query_id</b></span>
1f918f2002-05-26Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>mixed</code> <b><span class='method'>query_id</span>(</b><b>)</b></code></p></dd>
1f918f2002-05-26Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function returns the id for this port. The id is normally the first argument to accept_callback.</p>
1f918f2002-05-26Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>set_id</code></p> </dd></dl>
e4e3f32002-04-06Martin Nilsson 
dea86c2004-04-05Martin Stjernholm <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_backend</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_backend</span>(</b><code class='object unresolved'>Pike.Backend</code> <code class='argument'>backend</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Set the backend used for the accept callback.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>The backend keeps a reference to this object as long as the port is accepting connections, but this object does not keep a reference to the backend.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>query_backend</code></p> </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_id</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>mixed</code> <b><span class='method'>set_id</span>(</b><code class='datatype'>mixed</code> <code class='argument'>id</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson 
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>This function sets the id used for accept_callback by this port. The default id is <code>this_object()</code>.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>query_id</code></p> </dd></dl> </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.UDP</b></h2> </dt><dd><dl class='group--doc'> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>UDP (User Datagram Protocol) handling.</p> </dd></dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Constant</span> <span class='homogen--name'><b>MSG_OOB</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>constant</code> Stdio.UDP.<code class='constant'>MSG_OOB</code></code></p></dd>
50af352002-07-15Martin Nilsson <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this constant.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
50af352002-07-15Martin Nilsson  <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Constant</span> <span class='homogen--name'><b>MSG_PEEK</b></span>
50af352002-07-15Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>constant</code> Stdio.UDP.<code class='constant'>MSG_PEEK</code></code></p></dd>
50af352002-07-15Martin Nilsson <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this constant.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
50af352002-07-15Martin Nilsson 
1f72bf2004-09-18Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>add_membership</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>add_membership</span>(</b><code class='datatype'>string</code> <code class='argument'>group</code>, <code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>address</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Join a multicast group. <code>group</code> contains the address of the multicast group the application wants to join or leave. It must be a valid multicast address. <code>address</code> is the address of the local interface with wich the system should join to the multicast group. If not provided the system will select an appropriate interface. See also the Unix man page for setsocketopt IPPROTO_IP ADD_MEMBERSHIP.</p>
8831a42004-09-18Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>drop_membership</code></p>
1f72bf2004-09-18Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>bind</b></span>
1f918f2002-05-26Martin Nilsson </dt>
1f72bf2004-09-18Martin Nilsson <dd><p><code><code class='object unresolved'>UDP</code> <b><span class='method'>bind</span>(</b><code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code><b>)</b></code><br> <code><code class='object unresolved'>UDP</code> <b><span class='method'>bind</span>(</b><code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>string</code> <code class='argument'>address</code><b>)</b></code></p></dd>
c3fe742003-02-05Martin Nilsson 
1f918f2002-05-26Martin Nilsson <dt class='head--doc'>Description</dt>
97fa202008-05-30Martin Stjernholm <dd class='body--doc'><p>Binds a port for receiving or transmitting UDP.</p>
1f72bf2004-09-18Martin Nilsson </dd> <dt class='head--doc'>Throws</dt> <dd class='body--doc'><p>Throws error when unable to bind port.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
c3fe742003-02-05Martin Nilsson 
8ae0032003-10-29Henrik Grubbström (Grubba) <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>close</b></span> </dt> <dd><p><code><code class='datatype'>bool</code> <b><span class='method'>close</span>(</b><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Closes an open UDP port.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>This method was introduced in Pike 7.5.</p> </dd></dl>
c628122002-10-19Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>connect</b></span>
c628122002-10-19Martin Nilsson </dt>
b27ad92003-04-22Marcus Comstedt <dd><p><code><code class='datatype'>bool</code> <b><span class='method'>connect</span>(</b><code class='datatype'>string</code> <code class='argument'>address</code>, <code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code><b>)</b></code></p></dd>
c628122002-10-19Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Establish an UDP connection.</p> <p> This function connects an UDP socket previously created with <code>Stdio.UDP()</code> to a remote socket. The <code>address</code> is the IP name or number for the remote machine.</p> </dd> <dt class='head--doc'>Returns</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>Returns <code class='expr'>1</code> on success, <code class='expr'>0</code> (zero) otherwise.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>If the socket is in nonblocking mode, you have to wait for a write or close callback before you know if the connection failed or not.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>bind()</code>, <code>query_address()</code></p>
c628122002-10-19Martin Nilsson </dd></dl>
8831a42004-09-18Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>drop_membership</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>drop_membership</span>(</b><code class='datatype'>string</code> <code class='argument'>group</code>, <code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>address</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Leave a multicast group.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>add_membership</code></p> </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>enable_broadcast</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>bool</code> <b><span class='method'>enable_broadcast</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Set the broadcast flag. If enabled then sockets receive packets sent to a broadcast address and they are allowed to send packets to a broadcast address.</p> </dd> <dt class='head--doc'>Returns</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>Returns <code class='expr'>1</code> on success, <code class='expr'>0</code> (zero) otherwise.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>This is normally only avalable to root users.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
1f72bf2004-09-18Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>enable_multicast</b></span> </dt> <dd><p><code><code class='datatype'>bool</code> <b><span class='method'>enable_multicast</span>(</b><code class='datatype'>string</code> <code class='argument'>reply_address</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Set the local device for a multicast socket. See also the Unix man page for setsocketopt IPPROTO_IP IP_MULTICAST_IF.</p> </dd></dl>
c628122002-10-19Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>errno</b></span>
c628122002-10-19Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>errno</span>(</b><b>)</b></code></p></dd>
c628122002-10-19Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns the error code for the last command on this object. Error code is normally cleared when a command is successful.</p>
c628122002-10-19Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>get_type</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>get_type</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns socket type and protocol family.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
50af352002-07-15Martin Nilsson 
c3fe742003-02-05Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Inherit</span> <span class='homogen--name'><b>UDP</b></span> </dt> <dd><p><code><span class='datatype'>inherit files.UDP</span> : <span class='inherit'>UDP</span></code></p></dd> </dl>
c628122002-10-19Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>query_address</b></span>
c628122002-10-19Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>query_address</span>(</b><b>)</b></code></p></dd>
c628122002-10-19Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns the local address of a socket on the form "x.x.x.x port". If this file is not a socket, not connected or some other error occurs, zero is returned.</p>
c628122002-10-19Martin Nilsson </dd></dl>
dea86c2004-04-05Martin Stjernholm <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>query_backend</b></span> </dt> <dd><p><code><code class='object unresolved'>Pike.Backend</code> <b><span class='method'>query_backend</span>(</b><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Return the backend used for the read callback.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>set_backend</code></p> </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>read</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>int</code>|<code class='datatype'>string</code>) <b><span class='method'>read</span>(</b><b>)</b></code><br> <code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>int</code>|<code class='datatype'>string</code>) <b><span class='method'>read</span>(</b><code class='datatype'>int</code> <code class='argument'>flag</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Read from the UDP socket.</p> <p> Flag <code>flag</code> is a bitfield, 1 for out of band data and 2 for peek</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>mapping(string:int|string) in the form ([
70becb2003-03-12Marcus Agehall  "data" : string received data "ip" : string received from this ip
c3fe742003-02-05Martin Nilsson  "port" : int ...and this port ])</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>set_read_callback()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>send</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
b27ad92003-04-22Marcus Comstedt <dd><p><code><code class='datatype'>int</code> <b><span class='method'>send</span>(</b><code class='datatype'>string</code> <code class='argument'>to</code>, <code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>string</code> <code class='argument'>message</code><b>)</b></code><br> <code><code class='datatype'>int</code> <b><span class='method'>send</span>(</b><code class='datatype'>string</code> <code class='argument'>to</code>, <code class='datatype'>int</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>string</code> <code class='argument'>message</code>, <code class='datatype'>int</code> <code class='argument'>flags</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
5819482006-11-10Martin Stjernholm <dd class='body--doc'><p>Send data to a UDP socket. The recipient address will be <code>to</code>
c3fe742003-02-05Martin Nilsson  and port will be <code>port</code>.</p> <p> Flag <code>flag</code> is a bitfield, 1 for out of band data and 2 for don't route flag.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>The number of bytes that were actually written.</p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
dea86c2004-04-05Martin Stjernholm <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_backend</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_backend</span>(</b><code class='object unresolved'>Pike.Backend</code> <code class='argument'>backend</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Set the backend used for the read callback.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>The backend keeps a reference to this object as long as there can be calls to the read callback, but this object does not keep a reference to the backend.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>query_backend</code></p> </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_blocking</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>object</code> <b><span class='method'>set_blocking</span>(</b><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Sets this object to be blocking.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
9699552002-03-12Martin Nilsson 
e4e3f32002-04-06Martin Nilsson 
1f72bf2004-09-18Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_multicast_ttl</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>set_multicast_ttl</span>(</b><code class='datatype'>int</code> <code class='argument'>ttl</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Set the time-to-live value of outgoing multicast packets for this socket. It is very important for multicast packets to set the smallest TTL possible. The default is 1 which means that multicast packets don't leacl the local network unless the user program explicitly request it. See also the Unix man page for setsocketopt IPPROTO_IP IP_MULTICAST_TTL.</p> </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_nonblocking</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>UDP</code> <b><span class='method'>set_nonblocking</span>(</b><b>)</b></code><br> <code><code class='object unresolved'>UDP</code> <b><span class='method'>set_nonblocking</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>int</code>|<code class='datatype'>string</code>), <code class='datatype'>mixed</code> ... :<code class='datatype'>void</code>) <code class='argument'>read_cb</code>, <code class='datatype'>mixed</code> ... <code class='argument'>extra_args</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Set this object to nonblocking mode.</p> <p> If <code>read_cb</code> and <code>extra_args</code> are specified, they will be passed on to <code>set_read_callback()</code>.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>The called object.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
1f918f2002-05-26Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_read_callback</b></span>
1f918f2002-05-26Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>UDP</code> <b><span class='method'>set_read_callback</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>int</code>|<code class='datatype'>string</code>), <code class='datatype'>mixed</code> ... :<code class='datatype void'>void</code>) <code class='argument'>read_cb</code>, <code class='datatype'>mixed</code> ... <code class='argument'>extra_args</code><b>)</b></code></p></dd>
1f918f2002-05-26Martin Nilsson 
e4e3f32002-04-06Martin Nilsson <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>The <code>read_cb</code> function will receive a mapping similar to the mapping returned by <code>read()</code>:</p> <table class='box'><tr><td><code><code class='key'>"data"</code> : <code class='datatype'>string</code></code></td><td><p>Received data.</p> </td></tr> <tr><td><code><code class='key'>"ip"</code> : <code class='datatype'>string</code></code></td><td><p>Data was sent from this IP.</p> </td></tr> <tr><td><code><code class='key'>"port"</code> : <code class='datatype'>int</code></code></td><td><p>Data was sent from this port.</p> </td></tr> </table> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>The called object.</p>
c628122002-10-19Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p><code>read()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson 
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_type</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
1f72bf2004-09-18Martin Nilsson <dd><p><code><code class='object unresolved'>UDP</code> <b><span class='method'>set_type</span>(</b><code class='datatype'>int</code> <code class='argument'>sock_type</code><b>)</b></code><br> <code><code class='object unresolved'>UDP</code> <b><span class='method'>set_type</span>(</b><code class='datatype'>int</code> <code class='argument'>sock_type</code>, <code class='datatype'>int</code> <code class='argument'>family</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Sets socket type and protocol family.</p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
c628122002-10-19Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>wait</b></span>
c628122002-10-19Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>bool</code> <b><span class='method'>wait</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>timeout</code><b>)</b></code></p></dd>
c628122002-10-19Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Check for data and wait max. <code>timeout</code> seconds.</p>
c628122002-10-19Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>Returns</dt>
84ea4e2003-04-07Martin Nilsson <dd class='body--doc'><p>Returns <code class='expr'>1</code> if data are ready, <code class='expr'>0</code> (zero) otherwise.</p>
c628122002-10-19Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson </dd></dl><dl><dt><h2 class='header'>Module <b class='ms datatype'>Stdio.Terminfo</b></h2> </dt><dd>
c628122002-10-19Martin Nilsson 
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>getFallbackTerm</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='modifier'>protected</code> <code class='object unresolved'>Termcap</code> <b><span class='method'>getFallbackTerm</span>(</b><code class='datatype'>string</code> <code class='argument'>term</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns an object describing the fallback terminal for the terminal <code>term</code>. This is usually equvivalent to <code>Stdio.Terminfo.getTerm("dumb")</code>.</p>
c628122002-10-19Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Stdio.Terminfo.getTerm</p>
c628122002-10-19Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>getTerm</b></span>
c628122002-10-19Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>Termcap</code> <b><span class='method'>getTerm</span>(</b><code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>term</code><b>)</b></code></p></dd>
c628122002-10-19Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns an object describing the terminal term. If term is not specified, it will default to <code>getenv("TERM")</code> or if that fails to "dumb".</p> <p> Lookup of terminal information will first be done in the systems terminfo database, and if that fails in the termcap database. If neither database exists, a hardcoded entry for "dumb" will be used.</p>
c628122002-10-19Martin Nilsson </dd> <dt class='head--doc'>See also</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Stdio.Terminfo.getTerminfo, Stdio.Terminfo.getTermcap, Stdio.getFallbackTerm</p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson 
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>getTermcap</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>Termcap</code> <b><span class='method'>getTermcap</span>(</b><code class='datatype'>string</code> <code class='argument'>term</code><b>)</b></code></p></dd>
932a632002-10-25Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns the terminal description object for <code>term</code> from the systems termcap database. Returns 0 if not found.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p>Stdio.Terminfo.getTerm, Stdio.Terminfo.getTerminfo</p>
932a632002-10-25Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>getTerminfo</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>Terminfo</code> <b><span class='method'>getTerminfo</span>(</b><code class='datatype'>string</code> <code class='argument'>term</code><b>)</b></code></p></dd>
932a632002-10-25Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns the terminal description object for <code>term</code> from the systems terminfo database. Returns 0 if not found.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p>Stdio.Terminfo.getTerm, Stdio.Terminfo.getTermcap</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
6f7a292003-06-02Martin Stjernholm  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>is_tty</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>is_tty</span>(</b><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Returns 1 if <code>Stdio.stdin</code> is connected to an interactive terminal that can handle backspacing, carriage return without linefeed, and the like.</p> </dd></dl>
c3fe742003-02-05Martin Nilsson <dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Terminfo.Termcap</b></h2> </dt><dd><dl class='group--doc'>
1f918f2002-05-26Martin Nilsson <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Termcap terminal description object.</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
1f918f2002-05-26Martin Nilsson <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Variable</span> <span class='homogen--name'><b>aliases</b></span>
1f918f2002-05-26Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>) Stdio.Terminfo.Termcap.<b><span class='variable'>aliases</span></b></code></p></dd> </dl>
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>create</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='object'>Stdio.Terminfo.Termcap</span> <span class='class'>Stdio.Terminfo.Termcap</span><b>(</b><code class='datatype'>string</code> <code class='argument'>cap</code>, <code class='object unresolved'>TermcapDB</code>|<code class='datatype'>void</code> <code class='argument'>tcdb</code>, <code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>maxrecurse</code><b>)</b></code></p></dd> </dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Inherit</span> <span class='homogen--name'><b>TermMachine</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='datatype'>inherit TermMachine</span> : <span class='inherit'>TermMachine</span></code></p></dd> </dl>
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>tputs</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>tputs</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Put termcap string</p>
50af352002-07-15Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Terminfo.Terminfo</b></h2>
50af352002-07-15Martin Nilsson </dt><dd><dl class='group--doc'> <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Terminfo terminal description object</p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Variable</span> <span class='homogen--name'><b>aliases</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>) Stdio.Terminfo.Terminfo.<b><span class='variable'>aliases</span></b></code></p></dd> </dl>
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>create</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='object'>Stdio.Terminfo.Terminfo</span> <span class='class'>Stdio.Terminfo.Terminfo</span><b>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code></p></dd> </dl>
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Inherit</span> <span class='homogen--name'><b>TermMachine</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='datatype'>inherit TermMachine</span> : <span class='inherit'>TermMachine</span></code></p></dd> </dl>
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>tputs</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>tputs</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
9699552002-03-12Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson </dd></dl></dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Readline</b></h2> </dt><dd>
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>add_to_kill_ring</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>add_to_kill_ring</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>create</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='object'>Stdio.Readline</span> <span class='class'>Stdio.Readline</span><b>(</b><code class='datatype'>object</code>|<code class='datatype'>void</code> <code class='argument'>infd</code>, <code class='datatype'>object</code>|<code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>interm</code>, <code class='datatype'>object</code>|<code class='datatype'>void</code> <code class='argument'>outfd</code>, <code class='datatype'>object</code>|<code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>outterm</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Creates a Readline object, that takes input from <code>infd</code> and has output on <code>outfd</code>.</p>
50af352002-07-15Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'><span id='p-infd'></span>Parameter <code class='parameter'>infd</code></dt>
d5f90f2003-06-27Martin Nilsson <dd></dd><dd class='body--doc'><p>Defaults to <code>Stdio.stdin</code>.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'><span id='p-interm'></span>Parameter <code class='parameter'>interm</code></dt> <dd></dd><dd class='body--doc'><p>Defaults to <code>Stdio.Terminfo.getTerm()</code>.</p> </dd> <dt class='head--doc'><span id='p-outfd'></span>Parameter <code class='parameter'>outfd</code></dt> <dd></dd><dd class='body--doc'><p>Defaults to <code>infd</code>, unless <code>infd</code> is 0, in which case <code>outfd</code> defaults to <code>Stdio.stdout</code>.</p> </dd> <dt class='head--doc'><span id='p-outterm'></span>Parameter <code class='parameter'>outterm</code></dt> <dd></dd><dd class='body--doc'><p>Defaults to <code>interm</code>.</p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>delete</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>delete</span>(</b><code class='datatype'>int</code> <code class='argument'>p1</code>, <code class='datatype'>int</code> <code class='argument'>p2</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
e4e3f32002-04-06Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>delta_history</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>delta_history</span>(</b><code class='datatype'>int</code> <code class='argument'>d</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Changes the line to a line from the history <code>d</code> steps from the current entry (0 being the current line, negative values older, and positive values newer).</p>
50af352002-07-15Martin Nilsson </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>Only effective if you have a history object.</p>
78c3e22003-01-03Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>edit</b></span>
78c3e22003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>edit</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code>, <code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>local_prompt</code>, <code class='datatype'>array</code>(<code class='datatype'>string</code>)|<code class='datatype'>void</code> <code class='argument'>attrs</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
78c3e22003-01-03Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>enable_history</b></span>
78c3e22003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>enable_history</span>(</b><code class='datatype'>array</code>(<code class='datatype'>string</code>)|<code class='object unresolved'>History</code>|<code class='datatype'>int</code> <code class='argument'>hist</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
78c3e22003-01-03Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>eof</b></span>
78c3e22003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>eof</span>(</b><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
78c3e22003-01-03Martin Nilsson </dd></dl>
3a44ef2003-01-03Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>get_history</b></span>
3a44ef2003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>History</code> <b><span class='method'>get_history</span>(</b><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
3a44ef2003-01-03Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>get_input_controller</b></span>
3a44ef2003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>InputController</code> <b><span class='method'>get_input_controller</span>(</b><b>)</b></code></p></dd>
3a44ef2003-01-03Martin Nilsson 
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>get current input control object</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Terminal input controller object</p>
3a44ef2003-01-03Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>get_output_controller</b></span>
3a44ef2003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='object unresolved'>OutputController</code> <b><span class='method'>get_output_controller</span>(</b><b>)</b></code></p></dd>
3a44ef2003-01-03Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>get current output control object</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Terminal output controller object</p>
3a44ef2003-01-03Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>get_prompt</b></span>
3a44ef2003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_prompt</span>(</b><b>)</b></code></p></dd>
3a44ef2003-01-03Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Return the current prompt string.</p>
3a44ef2003-01-03Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson 
7867992003-01-03Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>getcursorpos</b></span>
7867992003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>getcursorpos</span>(</b><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
7867992003-01-03Martin Nilsson </dd></dl>
3a44ef2003-01-03Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>getmark</b></span>
3a44ef2003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>getmark</span>(</b><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
3a44ef2003-01-03Martin Nilsson </dd></dl>
7867992003-01-03Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>gettext</b></span>
7867992003-01-03Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>gettext</span>(</b><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
7867992003-01-03Martin Nilsson </dd></dl>
e8d6742002-12-05H. William Welliver III <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>history</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>history</span>(</b><code class='datatype'>int</code> <code class='argument'>n</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>insert</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>insert</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code>, <code class='datatype'>int</code> <code class='argument'>p</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>kill</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>kill</span>(</b><code class='datatype'>int</code> <code class='argument'>p1</code>, <code class='datatype'>int</code> <code class='argument'>p2</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>kill_ring_yank</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>kill_ring_yank</span>(</b><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>list_completions</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>list_completions</span>(</b><code class='datatype'>array</code>(<code class='datatype'>string</code>) <code class='argument'>c</code><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>message</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>message</span>(</b><code class='datatype'>string</code> <code class='argument'>msg</code><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Print a message to the output device</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>newline</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>newline</span>(</b><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>pointmark</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>pointmark</span>(</b><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>read</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>read</span>(</b><code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>prompt</code>, <code class='datatype'>array</code>(<code class='datatype'>string</code>)|<code class='datatype'>void</code> <code class='argument'>attrs</code><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>redisplay</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>redisplay</span>(</b><code class='datatype'>int</code> <code class='argument'>clear</code>, <code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>nobackup</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>region</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>region</span>(</b><code class='datatype'>int</code> ... <code class='argument'>args</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_blocking</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_blocking</span>(</b><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_echo</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_echo</span>(</b><code class='datatype'>int</code> <code class='argument'>onoff</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Set text echo on or off.</p> </dd> <dt class='head--doc'><span id='p-onoff'></span>Parameter <code class='parameter'>onoff</code></dt> <dd></dd><dd class='body--doc'><p>1 for echo, 0 for no echo.</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_nonblocking</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_nonblocking</span>(</b><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>f</code><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>set_prompt</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>set_prompt</span>(</b><code class='datatype'>string</code> <code class='argument'>newp</code>, <code class='datatype'>array</code>(<code class='datatype'>string</code>)|<code class='datatype'>void</code> <code class='argument'>newattrs</code><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Set the prompt string.</p>
e8d6742002-12-05H. William Welliver III </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'><span id='p-newp'></span>Parameter <code class='parameter'>newp</code></dt> <dd></dd><dd class='body--doc'><p>New prompt string</p>
e8d6742002-12-05H. William Welliver III </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'><span id='p-newattrs'></span>Parameter <code class='parameter'>newattrs</code></dt> <dd></dd><dd class='body--doc'><p>Terminal attributes</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>setcursorpos</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>setcursorpos</span>(</b><code class='datatype'>int</code> <code class='argument'>p</code><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>setmark</b></span>
e8d6742002-12-05H. William Welliver III </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>setmark</span>(</b><code class='datatype'>int</code> <code class='argument'>p</code><b>)</b></code></p></dd>
e8d6742002-12-05H. William Welliver III <dt class='head--fixme'>FIXME</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--fixme'><p>Document this function</p>
e8d6742002-12-05H. William Welliver III </dd></dl>
c3fe742003-02-05Martin Nilsson 
e4e3f32002-04-06Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>write</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>write</span>(</b><code class='datatype'>string</code> <code class='argument'>msg</code>, <code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>word_wrap</code><b>)</b></code></p></dd> <dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Document this function</p>
1f918f2002-05-26Martin Nilsson </dd></dl>
d5f90f2003-06-27Martin Nilsson <dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Readline.DefaultEditKeys</b></h2> </dt><dd> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>backward_char</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>backward_char</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>backward_delete_char</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>backward_delete_char</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>backward_kill_word</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>backward_kill_word</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>backward_word</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>backward_word</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>beginning_of_line</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>beginning_of_line</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>capitalize_word</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>capitalize_word</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>clear_screen</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>clear_screen</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>create</b></span> </dt> <dd><p><code><span class='object'>Stdio.Readline.DefaultEditKeys</span> <span class='class'>Stdio.Readline.DefaultEditKeys</span><b>(</b><code class='datatype'>object</code> <code class='argument'>readline</code><b>)</b></code></p></dd> </dl>
8847d02004-11-02Henrik Grubbström (Grubba) <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>delete_char</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>delete_char</span>(</b><b>)</b></code></p></dd> </dl>
d5f90f2003-06-27Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>delete_char_or_eof</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>delete_char_or_eof</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>down_history</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>down_history</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>downcase_word</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>downcase_word</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>end_of_line</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>end_of_line</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>forward_char</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>forward_char</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>forward_word</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>forward_word</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>kill_line</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>kill_line</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>kill_region</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>kill_region</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>kill_ring_save</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>kill_ring_save</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>kill_whole_line</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>kill_whole_line</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>kill_word</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>kill_word</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>newline</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>newline</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>quoted_insert</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>quoted_insert</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>redisplay</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>redisplay</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>self_insert_command</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>self_insert_command</span>(</b><code class='datatype'>string</code> <code class='argument'>str</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_default_bindings</b></span> </dt> <dd><p><code><code class='modifier'>protected</code> <code class='datatype'>void</code> <b><span class='method'>set_default_bindings</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_mark</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_mark</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>swap_mark_and_point</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>swap_mark_and_point</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>transpose_chars</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>transpose_chars</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>up_history</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>up_history</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>upcase_word</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>upcase_word</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>yank</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>yank</span>(</b><b>)</b></code></p></dd> </dl> </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Readline.History</b></h2> </dt><dd> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>create</b></span> </dt> <dd><p><code><span class='object'>Stdio.Readline.History</span> <span class='class'>Stdio.Readline.History</span><b>(</b><code class='datatype'>int</code> <code class='argument'>maxhist</code>, <code class='datatype'>void</code>|<code class='datatype'>array</code>(<code class='datatype'>string</code>) <code class='argument'>hist</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>encode</b></span> </dt> <dd><p><code><code class='datatype'>string</code> <b><span class='method'>encode</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>finishline</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>finishline</span>(</b><code class='datatype'>string</code> <code class='argument'>text</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>get_history_num</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>get_history_num</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>history</b></span> </dt> <dd><p><code><code class='datatype'>string</code> <b><span class='method'>history</span>(</b><code class='datatype'>int</code> <code class='argument'>n</code>, <code class='datatype'>string</code> <code class='argument'>text</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>initline</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>initline</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_max_history</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_max_history</span>(</b><code class='datatype'>int</code> <code class='argument'>maxhist</code><b>)</b></code></p></dd> </dl> </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Readline.InputController</b></h2>
f5e2962003-07-23Henrik Grubbström (Grubba) </dt><dd><dl class='group--doc'><dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Ought to have support for charset conversion.</p> </dd></dl>
d5f90f2003-06-27Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>bind</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>bind</span>(</b><code class='datatype'>string</code> <code class='argument'>k</code>, <code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>f</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>bindstr</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>bindstr</span>(</b><code class='datatype'>string</code> <code class='argument'>str</code>, <code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>f</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>bindtc</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>bindtc</span>(</b><code class='datatype'>string</code> <code class='argument'>cap</code>, <code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>f</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>create</b></span> </dt> <dd><p><code><span class='object'>Stdio.Readline.InputController</span> <span class='class'>Stdio.Readline.InputController</span><b>(</b><code class='datatype'>object</code>|<code class='datatype'>void</code> <code class='argument'>_infd</code>, <code class='datatype'>object</code>|<code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>_term</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>disable</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>disable</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>enable</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>enable</span>(</b><code class='datatype'>int</code> ... <code class='argument'>e</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>getbinding</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>getbinding</span>(</b><code class='datatype'>string</code> <code class='argument'>k</code>, <code class='datatype'>string</code> <code class='argument'>cap</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>getbindings</b></span> </dt> <dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>function</code>(:<code class='datatype void'>void</code>)) <b><span class='method'>getbindings</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>getbindingstr</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>getbindingstr</span>(</b><code class='datatype'>string</code> <code class='argument'>str</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>getbindingtc</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>getbindingtc</span>(</b><code class='datatype'>string</code> <code class='argument'>cap</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>grabnextkey</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>grabnextkey</span>(</b><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>g</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>isenabled</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>isenabled</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>nullbindings</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>nullbindings</span>(</b><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Clears the bindings.</p> </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>parsekey</b></span> </dt> <dd><p><code><code class='datatype'>string</code> <b><span class='method'>parsekey</span>(</b><code class='datatype'>string</code> <code class='argument'>k</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>run_blocking</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>run_blocking</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>set_close_callback</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_close_callback</span>(</b><code class='datatype'>function</code>(:<code class='datatype'>int</code>) <code class='argument'>ccb</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>unbind</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>unbind</span>(</b><code class='datatype'>string</code> <code class='argument'>k</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>unbindstr</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>unbindstr</span>(</b><code class='datatype'>string</code> <code class='argument'>str</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>unbindtc</b></span> </dt> <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <b><span class='method'>unbindtc</span>(</b><code class='datatype'>string</code> <code class='argument'>cap</code><b>)</b></code></p></dd> </dl> </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Readline.OutputController</b></h2>
f5e2962003-07-23Henrik Grubbström (Grubba) </dt><dd><dl class='group--doc'><dt class='head--fixme'>FIXME</dt> <dd class='body--fixme'><p>Ought to have support for charset conversion.</p> </dd></dl>
d5f90f2003-06-27Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>beep</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>beep</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>bol</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>bol</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>check_columns</b></span> </dt>
f5e2962003-07-23Henrik Grubbström (Grubba) <dd><p><code><code class='datatype'>int</code> <b><span class='method'>check_columns</span>(</b><b>)</b></code></p></dd>
d5f90f2003-06-27Martin Nilsson  <dt class='head--doc'>Description</dt>
f5e2962003-07-23Henrik Grubbström (Grubba) <dd class='body--doc'><p>Check and return the terminal width.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>In Pike 7.4 and earlier this function returned <code class='expr'>void</code>.</p>
d5f90f2003-06-27Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>get_number_of_columns</code></p> </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>clear</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>clear</span>(</b><code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>partial</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>create</b></span> </dt> <dd><p><code><span class='object'>Stdio.Readline.OutputController</span> <span class='class'>Stdio.Readline.OutputController</span><b>(</b><code class='object unresolved'>.File</code>|<code class='datatype'>void</code> <code class='argument'>_outfd</code>, <code class='object unresolved'>.Terminfo.Termcap</code>|<code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>_term</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>disable</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>disable</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>enable</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>enable</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>erase</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>erase</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>get_number_of_columns</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>get_number_of_columns</span>(</b><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Returns the width of the terminal.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>Does not check the width of the terminal.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>check_columns</code></p> </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>low_erase</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>low_erase</span>(</b><code class='datatype'>int</code> <code class='argument'>n</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>low_move_backward</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>low_move_backward</span>(</b><code class='datatype'>int</code> <code class='argument'>n</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>low_move_downward</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>low_move_downward</span>(</b><code class='datatype'>int</code> <code class='argument'>n</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>low_move_forward</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>low_move_forward</span>(</b><code class='datatype'>int</code> <code class='argument'>n</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>low_move_upward</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>low_move_upward</span>(</b><code class='datatype'>int</code> <code class='argument'>n</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>low_write</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>low_write</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code>, <code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>word_break</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>move_backward</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>move_backward</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>move_forward</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>move_forward</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>newline</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>newline</span>(</b><b>)</b></code></p></dd> </dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>turn_off</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>turn_off</span>(</b><code class='datatype'>string</code> ... <code class='argument'>atts</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Set the provided attributes to off.</p> </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>turn_on</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>turn_on</span>(</b><code class='datatype'>string</code> ... <code class='argument'>atts</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Set the provided attributes to on.</p> </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>write</b></span> </dt> <dd><p><code><code class='datatype'>void</code> <b><span class='method'>write</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code>, <code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>word_break</code>, <code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>hide</code><b>)</b></code></p></dd> </dl> </dd></dl></dd></dl><dl><dt><h2 class='header'>Module <b class='ms datatype'>Stdio</b></h2>
c90fc82003-06-27Martin Nilsson </dt><dd>
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>append_file</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>append_file</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>string</code> <code class='argument'>str</code>, <code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>access</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Append the string <code>str</code> onto the file <code>filename</code>.</p> <p> For a description of <code>access</code>, see <code>Stdio.File-&gt;open()</code>.</p> </dd> <dt class='head--doc'>Throws</dt> <dd class='body--doc'><p>Throws an error if <code>filename</code> couldn't be opened for writing.</p> </dd> <dt class='head--doc'>Returns</dt>
34497d2004-09-01Martin Stjernholm <dd class='body--doc'><p>Returns the number of bytes written, i.e. <code class='expr'>sizeof(str)</code>.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>write_file()</code>, <code>read_bytes()</code>, <code>Stdio.File()-&gt;open()</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
50af352002-07-15Martin Nilsson 
1f918f2002-05-26Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>append_path</b></span>
1f918f2002-05-26Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>append_path</span>(</b><code class='datatype'>string</code> <code class='argument'>absolute</code>, <code class='datatype'>string</code> ... <code class='argument'>relative</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Append <code>relative</code> paths to an <code>absolute</code> path and remove any
84ea4e2003-04-07Martin Nilsson  <code class='expr'>"//"</code>, <code class='expr'>"../"</code> or <code class='expr'>"/."</code> to produce a straightforward absolute path as a result.</p> <p> <code class='expr'>"../"</code> is ignorded in the relative paths if it makes the
c3fe742003-02-05Martin Nilsson  created path begin with something else than the absolute path (or so far created path).</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>Warning: This does not work on NT. (Consider paths like: k:/fnord)</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>combine_path()</code></p>
9699552002-03-12Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>async_cp</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>async_cp</span>(</b><code class='datatype'>string</code> <code class='argument'>from</code>, <code class='datatype'>string</code> <code class='argument'>to</code>, <code class='datatype'>function</code>(<code class='datatype'>int</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>void</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Copy a file asynchronously.</p> <p> This function is similar to <code>cp()</code>, but works asynchronously.</p> </dd> <dt class='head--doc'><span id='p-from'></span>Parameter <code class='parameter'>from</code></dt> <dd></dd><dd class='body--doc'><p>Name of file to copy.</p> </dd> <dt class='head--doc'><span id='p-to'></span>Parameter <code class='parameter'>to</code></dt> <dd></dd><dd class='body--doc'><p>Name of file to create or replace with a copy of <code>from</code>.</p> </dd>
a2b4e82003-07-23Henrik Grubbström (Grubba) <dt class='head--doc'><span id='p-callback'></span>Parameter <code class='parameter'>callback</code></dt>
c3fe742003-02-05Martin Nilsson <dd></dd><dd class='body--doc'><p>Function to be called on completion.
84ea4e2003-04-07Martin Nilsson  The first argument will be <code class='expr'>1</code> on success, and <code class='expr'>0</code> (zero)
a2b4e82003-07-23Henrik Grubbström (Grubba)  otherwise. The rest of the arguments to <code>callback</code> are passed
c3fe742003-02-05Martin Nilsson  verbatim from <code>args</code>.</p> </dd> <dt class='head--doc'><span id='p-args'></span>Parameter <code class='parameter'>args</code></dt> <dd></dd><dd class='body--doc'><p>Extra arguments to pass to <code>callback</code>.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>For <code>callback</code> to be called, the backend must be active (ie
a2b4e82003-07-23Henrik Grubbström (Grubba)  <code>main()</code> must have returned <code class='expr'>-1</code>, or <code>Pike.DefaultBackend</code> get called in some other way). The actual copying may start before the backend has activated.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Bugs</dt> <dd class='body--doc'><p>Currently the file sizes are not compared, so the destination file (<code>to</code>) may be truncated.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>cp()</code>, <code>sendfile()</code></p>
9699552002-03-12Martin Nilsson </dd></dl>
e823682004-09-03David Gourdelier <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>convert_modestring2int</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>convert_modestring2int</span>(</b><code class='datatype'>string</code> <code class='argument'>mode_string</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Convert the mode_string string as returned by Stdio.Stat object to int suitable for chmod</p> </dd> <dt class='head--doc'><span id='p-mode_string'></span>Parameter <code class='parameter'>mode_string</code></dt> <dd></dd><dd class='body--doc'><p>The string as return from Stdio.Stat()-&gt;mode_string</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>An int matching the permission of the mode_string string suitable for chmod</p> </dd></dl>
a23ed62003-06-18Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>cp</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>cp</span>(</b><code class='datatype'>string</code> <code class='argument'>from</code>, <code class='datatype'>string</code> <code class='argument'>to</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Copies the file <code>from</code> to the new position <code>to</code>. If there is no system function for cp, a new file will be created and the
e823682004-09-03David Gourdelier  old one copied manually in chunks of 65536 bytes. This function can also copy directories recursively.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>0 on error, 1 on success</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>This function keeps file and directory permissions unlike in Pike 7.6 and earlier</p>
a23ed62003-06-18Martin Nilsson </dd></dl>
9699552002-03-12Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>exist</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>exist</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Check if a <code>path</code> exists.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Returns true if the given path exists (is a directory or file), otherwise false.</p> </dd>
927e062006-06-13Henrik Grubbström (Grubba) <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>May fail with eg <code>errno()</code> <tt>EFBIG</tt> if the file exists, but the filesystem doesn't support the file size.</p> </dd>
c3fe742003-02-05Martin Nilsson <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>is_dir()</code>, <code>is_file()</code>, <code>is_link()</code>, <code>file_stat()</code></p>
9699552002-03-12Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson 
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>file_equal</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>file_equal</span>(</b><code class='datatype'>string</code> <code class='argument'>file_1</code>, <code class='datatype'>string</code> <code class='argument'>file_2</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Returns nonzero if the given paths are files with identical content, returns zero otherwise. Zero is also returned for any sort of I/O error.</p>
9699552002-03-12Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>file_size</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>file_size</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Give the size of a file. Size -1 indicates that the file either does not exist, or that it is not readable by you. Size -2
48e0ef2005-04-08Martin Nilsson  indicates that it is a directory, -3 that it is a symlink and -4 that it is a device.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>file_stat()</code>, <code>write_file()</code>, <code>read_bytes()</code></p>
e4e3f32002-04-06Martin Nilsson </dd></dl>
9699552002-03-12Martin Nilsson  <hr /> <dl class='group--doc'>
c3fe742003-02-05Martin Nilsson <dt class='head--type'><span class='homogen--type'>Inherit</span> <span class='homogen--name'><b>files</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><span class='datatype'>inherit files</span> : <span class='inherit'>files</span></code></p></dd> </dl>
e4e3f32002-04-06Martin Nilsson 
69373f2002-09-12Leif Stensson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>is_dir</b></span>
69373f2002-09-12Leif Stensson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>is_dir</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
69373f2002-09-12Leif Stensson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Check if a <code>path</code> is a directory.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Returns true if the given path is a directory, otherwise false.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>exist()</code>, <code>is_file()</code>, <code>is_link()</code>, <code>file_stat()</code></p>
69373f2002-09-12Leif Stensson </dd></dl>
e4e3f32002-04-06Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>is_file</b></span>
e4e3f32002-04-06Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>is_file</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
e4e3f32002-04-06Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Check if a <code>path</code> is a file.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Returns true if the given path is a file, otherwise false.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>exist()</code>, <code>is_dir()</code>, <code>is_link()</code>, <code>file_stat()</code></p>
1f918f2002-05-26Martin Nilsson </dd></dl>
e4e3f32002-04-06Martin Nilsson 
69373f2002-09-12Leif Stensson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>is_link</b></span>
69373f2002-09-12Leif Stensson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>is_link</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
69373f2002-09-12Leif Stensson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Check if a <code>path</code> is a symbolic link.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Returns true if the given path is a symbolic link, otherwise false.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>exist()</code>, <code>is_dir()</code>, <code>is_file()</code>, <code>file_stat()</code></p>
69373f2002-09-12Leif Stensson </dd></dl>
1f918f2002-05-26Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>mkdirhier</b></span>
1f918f2002-05-26Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>mkdirhier</span>(</b><code class='datatype'>string</code> <code class='argument'>pathname</code>, <code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>mode</code><b>)</b></code></p></dd>
1f918f2002-05-26Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Creates zero or more directories to ensure that the given <code>pathname</code> is a directory.</p> <p> If a <code>mode</code> is given, it's used for the new directories after being &amp;'ed with the current umask (on OS'es that support this).</p> </dd> <dt class='head--doc'>Returns</dt>
a2b4e82003-07-23Henrik Grubbström (Grubba) <dd class='body--doc'><p>Returns zero on failure and nonzero on success.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>mkdir()</code></p>
9699552002-03-12Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson 
9699552002-03-12Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>perror</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>void</code> <b><span class='method'>perror</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>This function prints a message to stderr along with a description of what went wrong if available. It uses the system errno to find out what went wrong, so it is only applicable to IO errors.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>werror()</code></p>
9699552002-03-12Martin Nilsson </dd></dl>
c3fe742003-02-05Martin Nilsson 
9699552002-03-12Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>read_bytes</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>read_bytes</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>int</code> <code class='argument'>start</code>, <code class='datatype'>int</code> <code class='argument'>len</code><b>)</b></code><br> <code><code class='datatype'>string</code> <b><span class='method'>read_bytes</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>int</code> <code class='argument'>start</code><b>)</b></code><br> <code><code class='datatype'>string</code> <b><span class='method'>read_bytes</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
34497d2004-09-01Martin Stjernholm <dd class='body--doc'><p>Read <code>len</code> number of bytes from a regular file <code>filename</code> starting at byte <code>start</code>, and return it as a string.</p>
c3fe742003-02-05Martin Nilsson <p> If <code>len</code> is omitted, the rest of the file will be returned.</p> <p> If <code>start</code> is also omitted, the entire file will be returned.</p> </dd> <dt class='head--doc'>Throws</dt>
34497d2004-09-01Martin Stjernholm <dd class='body--doc'><p>Throws an error on any I/O error except when the file doesn't exist.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Returns</dt>
34497d2004-09-01Martin Stjernholm <dd class='body--doc'><p>Returns <code class='expr'>0</code> (zero) if the file doesn't exist or if <code>start</code> is beyond the end of it.</p>
c3fe742003-02-05Martin Nilsson <p> Returns a string with the requested data otherwise.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>read_file</code>, <code>write_file()</code>, <code>append_file()</code></p>
9699552002-03-12Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>read_file</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>read_file</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code><br> <code><code class='datatype'>string</code> <b><span class='method'>read_file</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code>, <code class='datatype'>int</code> <code class='argument'>start</code>, <code class='datatype'>int</code> <code class='argument'>len</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
34497d2004-09-01Martin Stjernholm <dd class='body--doc'><p>Read <code>len</code> lines from a regular file <code>filename</code> after skipping <code>start</code> lines and return those lines as a string. If both <code>start</code> and <code>len</code> are omitted the whole file is read.</p> </dd> <dt class='head--doc'>Throws</dt> <dd class='body--doc'><p>Throws an error on any I/O error except when the file doesn't exist.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Returns <code class='expr'>0</code> (zero) if the file doesn't exist or if <code>start</code> is beyond the end of it.</p> <p> Returns a string with the requested data otherwise.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>read_bytes()</code>, <code>write_file()</code></p>
9699552002-03-12Martin Nilsson </dd></dl>
e823682004-09-03David Gourdelier <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span> <span class='homogen--name'><b>recursive_mv</b></span> </dt> <dd><p><code><code class='datatype'>int</code> <b><span class='method'>recursive_mv</span>(</b><code class='datatype'>string</code> <code class='argument'>from</code>, <code class='datatype'>string</code> <code class='argument'>to</code><b>)</b></code></p></dd> <dt class='head--doc'>Description</dt> <dd class='body--doc'><p>Copy a file or a directory tree by copying and then removing. It's not the fastest but works on every OS and works well across different file systems.</p> </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Returns 0 on failure, nonzero otherwise.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>recursive_rm</code> <code>cp</code></p> </dd></dl>
9699552002-03-12Martin Nilsson <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>recursive_rm</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>int</code> <b><span class='method'>recursive_rm</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
e823682004-09-03David Gourdelier <dd class='body--doc'><p>Remove a file or a directory tree.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Returns</dt> <dd class='body--doc'><p>Returns 0 on failure, nonzero otherwise.</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>rm</code></p>
9699552002-03-12Martin Nilsson </dd></dl> <hr /> <dl class='group--doc'> <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>sendfile</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>object</code> <b><span class='method'>sendfile</span>(</b><code class='datatype'>array</code>(<code class='datatype'>string</code>) <code class='argument'>headers</code>, <code class='object unresolved'>File</code> <code class='argument'>from</code>, <code class='datatype'>int</code> <code class='argument'>offset</code>, <code class='datatype'>int</code> <code class='argument'>len</code>, <code class='datatype'>array</code>(<code class='datatype'>string</code>) <code class='argument'>trailers</code>, <code class='object unresolved'>File</code> <code class='argument'>to</code><b>)</b></code><br> <code><code class='datatype'>object</code> <b><span class='method'>sendfile</span>(</b><code class='datatype'>array</code>(<code class='datatype'>string</code>) <code class='argument'>headers</code>, <code class='object unresolved'>File</code> <code class='argument'>from</code>, <code class='datatype'>int</code> <code class='argument'>offset</code>, <code class='datatype'>int</code> <code class='argument'>len</code>, <code class='datatype'>array</code>(<code class='datatype'>string</code>) <code class='argument'>trailers</code>, <code class='object unresolved'>File</code> <code class='argument'>to</code>, <code class='datatype'>function</code>(<code class='datatype'>int</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>void</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class='head--doc'>Description</dt>
c3fe742003-02-05Martin Nilsson <dd class='body--doc'><p>Sends <code>headers</code> followed by <code>len</code> bytes starting at <code>offset</code> from the file <code>from</code> followed by <code>trailers</code> to the file <code>to</code>. When completed <code>callback</code> will be called with the total number of bytes sent as the first argument, followed by <code>args</code>.</p> <p> Any of <code>headers</code>, <code>from</code> and <code>trailers</code> may be left out
84ea4e2003-04-07Martin Nilsson  by setting them to <code class='expr'>0</code>.</p> <p> Setting <code>offset</code> to <code class='expr'>-1</code> means send from the current position in
c3fe742003-02-05Martin Nilsson  <code>from</code>.</p>
84ea4e2003-04-07Martin Nilsson <p> Setting <code>len</code> to <code class='expr'>-1</code> means send until <code>from</code>'s end of file is
c3fe742003-02-05Martin Nilsson  reached.</p> </dd> <dt class='head--doc'>Note</dt> <dd class='body--doc'><p>The sending is performed asynchronously, and may complete
046e432007-05-26Henrik Grubbström (Grubba)  both before and after the function returns.</p>
c3fe742003-02-05Martin Nilsson <p> For <code>callback</code> to be called, the backend must be active (ie
a2b4e82003-07-23Henrik Grubbström (Grubba)  <code>main()</code> must have returned <code class='expr'>-1</code>, or <code>Pike.DefaultBackend</code> get called in some other way).</p>
c3fe742003-02-05Martin Nilsson <p> In some cases, the backend must also be active for any sending to be performed at all.</p>
2663222007-12-20Henrik Grubbström (Grubba) <p> In Pike 7.4.496, Pike 7.6.120 and Pike 7.7 and later the backend associated with <code>to</code> will be used rather than the default backend. Note that you usually will want <code>from</code> to have the same backend as <code>to</code>.</p>
c3fe742003-02-05Martin Nilsson </dd> <dt class='head--doc'>Bugs</dt> <dd class='body--doc'><p>FIXME: Support for timeouts?</p> </dd> <dt class='head--doc'>See also</dt> <dd class='body--doc'><p><code>Stdio.File-&gt;set_nonblocking()</code></p>
9699552002-03-12Martin Nilsson </dd></dl>
1f918f2002-05-26Martin Nilsson 
9699552002-03-12Martin Nilsson <hr /> <dl class='group--doc'>
50af352002-07-15Martin Nilsson <dt class='head--type'><span class='homogen--type'>Method</span>
c3fe742003-02-05Martin Nilsson <span class='homogen--name'><b>simplify_path</b></span>
9699552002-03-12Martin Nilsson </dt>
c3fe742003-02-05Martin Nilsson <dd><p><code><code class='datatype'>string</code> <b><span class='method'>simplify_path</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
9699552002-03-12Martin Nilsson  <dt class