969955 | 2002-03-12 | Martin Nilsson | | <!doctype html><html><head><title>Pike Reference Manual</title>
<meta charset='utf-8'></head>
|
9add81 | 2019-07-04 | Henrik Grubbström (Grubba) | | <body><dl><dt><h1 class='header'>9. I/O</h1></dt><dd></dd>
<dt><a name='9.1'></a>
<h2 class='header'>9.1. File system manipulation</h2></dt>
<dd>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>access</b></span>
</dt>
<dd><p><code><code class='datatype'>int</code> <b><span class='method'>access</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code>, <code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>mode</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>access() checks if the calling process can access the file
<code>path</code>. Symbolic links are dereferenced.</p>
</dd>
<dt class='head--doc'><span id='p-mode'></span>Parameter <code class='parameter'>mode</code></dt>
<dd></dd><dd class='body--doc'><p>The <code>mode</code> specifies the accessibility checks to be performed, and
is either not specified or empty, in which case access() just tests
if the file exists, or one or more of the characters <code class='expr'>"rwx"</code>.</p>
<p> r, w, and x test whether the file exists and grants read, write,
and execute permissions, respectively.</p>
<p> The check is done using the calling process's real UID and GID,
rather than the effective IDs as is done when actually attempting
an operation (e.g., open(2)) on the file. This allows set-user-ID
programs to easily determine the invoking user's authority.</p>
<p> If the calling process is privileged (i.e., its real UID is zero),
then an X_OK check is successful for a regular file if execute
permission is enabled for any of the file owner, group, or other.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><table class='box'><tr><td><code><code class='key'>1</code></code></td><td><p>When the file is accessible using the given permissions.</p>
</td></tr>
<tr><td><code><code class='key'>0</code></code></td><td><p>When the file is not accessible, in which case <code>errno</code> is set
to one of the following values:</p>
<table class='box'><tr><td><code><code class='key'>EACCESS</code></code></td><td><p>Access denied.</p>
</td></tr>
<tr><td><code><code class='key'>ELOOP</code></code></td><td><p>Too many symbolic links.</p>
</td></tr>
<tr><td><code><code class='key'>ENAMETOOLONG</code></code></td><td><p>The path is too long.</p>
</td></tr>
<tr><td><code><code class='key'>ENOENT</code></code></td><td><p>The file does not exist.</p>
</td></tr>
<tr><td><code><code class='key'>ENOTDIR</code></code></td><td><p>One of the directories used in <code>path</code> is not, in fact, a directory.</p>
</td></tr>
<tr><td><code><code class='key'>EROFS</code></code></td><td><p>The filesystem is read only and write access was requested.</p>
</td></tr>
</table><p>Other errors can occur, but are not directly related to the
requested path, such as <code class='expr'>ENOMEM</code>, etc.</p>
</td></tr>
</table>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>errno()</code>, <code>Stdio.File</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>cd</b></span>
</dt>
<dd><p><code><code class='datatype'>int</code> <b><span class='method'>cd</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Change the current directory for the whole Pike process.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns <code class='expr'>1</code> for success, <code class='expr'>0</code> (zero) otherwise.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>getcwd()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>getcwd</b></span>
</dt>
<dd><p><code><code class='datatype'>string</code> <b><span class='method'>getcwd</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns the current working directory.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>cd()</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_dir</b></span>
</dt>
<dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>) <b><span class='method'>get_dir</span>(</b><code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>dirname</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns an array of all filenames in the directory <code>dirname</code>, or
<code class='expr'>0</code> (zero) if the directory does not exist. When no
<code>dirname</code> is given, current work directory is used.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>mkdir()</code>, <code>cd()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>mkdir</b></span>
</dt>
<dd><p><code><code class='datatype'>int</code> <b><span class='method'>mkdir</span>(</b><code class='datatype'>string</code> <code class='argument'>dirname</code>, <code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>mode</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Create a directory.</p>
<p> If <code>mode</code> is specified, it's will be used for the new directory after
being <code class='expr'>&</code>'ed with the current umask (on OS'es that support this).</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns <code class='expr'>0</code> (zero) on failure, <code class='expr'>1</code> otherwise.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>rm()</code>, <code>cd()</code>, <code>Stdio.mkdirhier()</code></p>
</dd></dl>
|
32f88f | 2020-06-10 | Henrik Grubbström (Grubba) | | <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>. This is an
alias for <code>Stdio.cp</code>.</p>
</dd></dl>
|
9add81 | 2019-07-04 | Henrik Grubbström (Grubba) | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>mv</b></span>
</dt>
<dd><p><code><code class='datatype'>int</code> <b><span class='method'>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>Rename or move a file or directory.</p>
<p> If the destination already exists, it will be replaced.
Replacement often only works if <code>to</code> is of the same type as
<code>from</code>, i.e. a file can only be replaced by another file and so
on. Also, a directory will commonly be replaced only if it's
empty.</p>
<p> On some OSs this function can't move directories, only rename
them.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns <code class='expr'>0</code> (zero) on failure, <code class='expr'>1</code> otherwise. Call
<code>errno()</code> to get more error info on failure.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>rm()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>rm</b></span>
</dt>
<dd><p><code><code class='datatype'>int</code> <b><span class='method'>rm</span>(</b><code class='datatype'>string</code> <code class='argument'>f</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Remove a file or directory.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns <code class='expr'>0</code> (zero) on failure, <code class='expr'>1</code> otherwise.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>May fail with <code>errno()</code> set to <code>EISDIR</code> or <code>ENOTDIR</code>
if the file has changed to a directory during the call
or the reverse.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Stdio.File()->unlinkat()</code>, <code>mkdir()</code>, <code>Stdio.recursive_rm()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>file_truncate</b></span>
</dt>
<dd><p><code><code class='datatype'>int</code> <b><span class='method'>file_truncate</span>(</b><code class='datatype'>string</code> <code class='argument'>file</code>, <code class='datatype'>int</code> <code class='argument'>length</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Truncates the file <code>file</code> to the length specified in <code>length</code>.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns 1 if ok, 0 if failed.</p>
</dd></dl>
</dd>
<dt><a name='9.2'></a>
<h2 class='header'>9.2. Path manipulation</h2></dt>
<dd>
|
99eac2 | 2021-07-20 | Henrik Grubbström (Grubba) | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>basename</b></span>
</dt>
<dd><p><code><code class='datatype'>string</code> <b><span class='method'>basename</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns the last segment of a path.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>dirname()</code>, <code>explode_path()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>dirname</b></span>
</dt>
<dd><p><code><code class='datatype'>string</code> <b><span class='method'>dirname</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns all but the last segment of a path. Some example inputs and
outputs:</p>
<p> <table class='box'>
<tr><td><b>Expression</b></td><td><b>Value</b></td></tr>
<tr><td>dirname("/a/b")</td><td>"/a"</td></tr>
<tr><td>dirname("/a/")</td><td>"/a"</td></tr>
<tr><td>dirname("/a")</td><td>"/"</td></tr>
<tr><td>dirname("/")</td><td>"/"</td></tr>
<tr><td>dirname("")</td><td>""</td></tr>
</table>
</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>basename()</code>, <code>explode_path()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>combine_path</b></span><br>
<span class='homogen--type'>Method</span>
<span class='homogen--name'><b>combine_path_unix</b></span><br>
<span class='homogen--type'>Method</span>
<span class='homogen--name'><b>combine_path_nt</b></span><br>
<span class='homogen--type'>Method</span>
<span class='homogen--name'><b>combine_path_amigaos</b></span><br>
</dt>
<dd><p><code><code class='datatype'>string</code> <b><span class='method'>combine_path</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code>, <code class='datatype'>string</code> ... <code class='argument'>paths</code><b>)</b></code><br>
<code><code class='datatype'>string</code> <b><span class='method'>combine_path_unix</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code>, <code class='datatype'>string</code> ... <code class='argument'>paths</code><b>)</b></code><br>
<code><code class='datatype'>string</code> <b><span class='method'>combine_path_nt</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code>, <code class='datatype'>string</code> ... <code class='argument'>paths</code><b>)</b></code><br>
<code><code class='datatype'>string</code> <b><span class='method'>combine_path_amigaos</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code>, <code class='datatype'>string</code> ... <code class='argument'>paths</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Concatenate a number of paths to a straightforward path without
any <code class='expr'>"//"</code>, <code class='expr'>"/.."</code> or <code class='expr'>"/."</code>. If any path
argument is absolute then the result is absolute and the
preceding arguments are ignored. If the result is relative then
it might have leading <code class='expr'>".."</code> components. If the last
nonempty argument ends with a directory separator then the
result ends with that too. If all components in a relative path
disappear due to subsequent <code class='expr'>".."</code> components then the
result is <code class='expr'>"."</code>.</p>
<p> <code>combine_path_unix()</code> concatenates in UNIX style, which also is
appropriate for e.g. URL:s ("/" separates path components and
absolute paths start with "/"). <code>combine_path_nt()</code>
concatenates according to NT filesystem conventions ("/" and "\"
separates path components and there might be a drive letter in
front of absolute paths). <code>combine_path_amigaos()</code> concatenates
according to AmigaOS filesystem conventions.</p>
<p> <code>combine_path()</code> is equivalent to <code>combine_path_unix()</code> on UNIX-like
operating systems, and equivalent to <code>combine_path_nt()</code> on NT-like
operating systems, and equivalent to <code>combine_path_amigaos()</code> on
AmigaOS-like operating systems.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>getcwd()</code>, <code>Stdio.append_path()</code></p>
</dd></dl>
|
32f88f | 2020-06-10 | Henrik Grubbström (Grubba) | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>explode_path</b></span>
</dt>
<dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>) <b><span class='method'>explode_path</span>(</b><code class='datatype'>string</code> <code class='argument'>p</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Split a path <code>p</code> into its components.</p>
<p> This function divides a path into its components. This might seem like
it could be done by dividing the string on <tt>"/"</tt>, but that will
not work on some operating systems. To turn the components back into
a path again, use <code>combine_path()</code>.</p>
</dd></dl>
|
9add81 | 2019-07-04 | Henrik Grubbström (Grubba) | | </dd>
<dt><a name='9.3'></a>
<h2 class='header'>9.3. Status</h2></dt>
<dd>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>file_stat</b></span>
</dt>
<dd><p><code><code class='object unresolved'>Stdio.Stat</code> <b><span class='method'>file_stat</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code>, <code class='datatype'>void</code>|<code class='datatype'>bool</code> <code class='argument'>symlink</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Stat a file.</p>
<p> If the argument <code>symlink</code> is <code class='expr'>1</code> symlinks will not be followed.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>If the path specified by <code>path</code> doesn't exist <code class='expr'>0</code> (zero) will
be returned.</p>
<p> Otherwise an object describing the properties of <code>path</code> will be
returned.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>In Pike 7.0 and earlier this function returned an array with 7 elements.
The old behaviour can be simulated with the following function:</p>
<pre><code><span class='type'>array</span><span class='delim'>(</span><span class='type'>int</span><span class='delim'>)</span> file_stat<span class='delim'>(</span><span class='type'>string</span> path<span class='delim'>,</span> <span class='type'>void</span><span class='delim'>|</span><span class='type'>int</span><span class='delim'>(</span>0..1<span class='delim'>)</span> symlink<span class='delim'>)</span>
<span class='delim'>{</span>
File<span class='delim'>.</span>Stat st <span class='delim'>=</span> predef::file_stat<span class='delim'>(</span>path<span class='delim'>,</span> symlink<span class='delim'>)</span><span class='delim'>;</span>
<span class='lang'>if</span> <span class='delim'>(</span><span class='delim'>!</span>st<span class='delim'>)</span> <span class='lang'>return</span> 0<span class='delim'>;</span>
<span class='lang'>return</span> <span class='delim'>(</span><span class='type'>array</span><span class='delim'>(</span><span class='type'>int</span><span class='delim'>)</span><span class='delim'>)</span>st<span class='delim'>;</span>
<span class='delim'>}</span>
</code></pre>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Stdio.Stat</code>, <code>Stdio.File->stat()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>filesystem_stat</b></span>
</dt>
<dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>int</code>) <b><span class='method'>filesystem_stat</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns a mapping describing the properties of the filesystem
containing the path specified by <code>path</code>.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>If a filesystem cannot be determined <code class='expr'>0</code> (zero) will be returned.</p>
<p> Otherwise a mapping(string:int) with the following fields will be
returned:</p>
<table class='box'><tr><td><code><code class='key'>"blocksize"</code> : <code class='datatype'>int</code></code></td><td><p>Size in bytes of the filesystem blocks.</p>
</td></tr>
<tr><td><code><code class='key'>"blocks"</code> : <code class='datatype'>int</code></code></td><td><p>Size of the entire filesystem in blocks.</p>
</td></tr>
<tr><td><code><code class='key'>"bfree"</code> : <code class='datatype'>int</code></code></td><td><p>Number of free blocks in the filesystem.</p>
</td></tr>
<tr><td><code><code class='key'>"bavail"</code> : <code class='datatype'>int</code></code></td><td><p>Number of available blocks in the filesystem.
This is usually somewhat less than the <code class='expr'>"bfree"</code> value, and
can usually be adjusted with eg tunefs(1M).</p>
</td></tr>
<tr><td><code><code class='key'>"files"</code> : <code class='datatype'>int</code></code></td><td><p>Total number of files (aka inodes) allowed by this filesystem.</p>
</td></tr>
<tr><td><code><code class='key'>"ffree"</code> : <code class='datatype'>int</code></code></td><td><p>Number of free files in the filesystem.</p>
</td></tr>
<tr><td><code><code class='key'>"favail"</code> : <code class='datatype'>int</code></code></td><td><p>Number of available files in the filesystem.
This is usually the same as the <code class='expr'>"ffree"</code> value, and can
usually be adjusted with eg tunefs(1M).</p>
</td></tr>
<tr><td><code><code class='key'>"fsname"</code> : <code class='datatype'>string</code></code></td><td><p>Name assigned to the filesystem. This item is not available
on all systems.</p>
</td></tr>
<tr><td><code><code class='key'>"fstype"</code> : <code class='datatype'>string</code></code></td><td><p>Type of filesystem (eg <code class='expr'>"nfs"</code>). This item is not
available on all systems. For some more uncommon filesystems
this may be an integer representing the magic number for the
filesystem type (cf <tt>statfs(2)</tt> on eg Linux systems).</p>
</td></tr>
</table>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>Please note that not all members are present on all OSs.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>file_stat()</code></p>
</dd></dl>
<dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Stat</b></h2>
</dt><dd><dl class='group--doc'>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>This object is used to represent file status information
from e.g. <code>file_stat()</code>.</p>
<p> It contains the following items usually found in a C <tt>struct
stat</tt>:</p>
<dl class='group--doc'><dt>mode</dt>
<dd><p>File mode (see <tt>mknod(2)</tt>).</p>
</dd>
<dt>size</dt>
<dd><p>File size in bytes.</p>
</dd>
<dt>uid</dt>
<dd><p>User ID of the file's owner.</p>
</dd>
<dt>gid</dt>
<dd><p>Group ID of the file's owner.</p>
</dd>
<dt>atime</dt>
<dd><p>Time of last access in seconds since 00:00:00 UTC, 1970-01-01.</p>
</dd>
<dt>mtime</dt>
<dd><p>Time of last data modification.</p>
</dd>
<dt>ctime</dt>
<dd><p>Time of last file status change.</p>
</dd>
<dt>atime_nsec</dt>
<dd><p>Time of last access in nanoseconds, added to atime to get
sub-second time</p>
</dd>
<dt>mtime_nsec</dt>
<dd><p>Time of last modification in nanoseconds, added to mtime to get
sub-second time</p>
</dd>
<dt>ctime_nsec</dt>
<dd><p>Time of last file status change in nanoseconds, added to ctime to
get sub-second time</p>
</dd>
<dt>ino</dt>
<dd><p>Inode number.</p>
</dd>
<dt>nlink</dt>
<dd><p>Number of links.</p>
</dd>
<dt>dev</dt>
<dd><p>ID of the device containing a directory entry for this file.</p>
</dd>
<dt>rdev</dt>
<dd><p>ID of the device.</p>
</dd>
</dl><p>It also contains some items that correspond to the C <tt>IS*</tt> macros:</p>
<dl class='group--doc'><dt>isreg</dt>
<dd><p>Set if the file is a regular file.</p>
</dd>
<dt>isdir</dt>
<dd><p>Set if the file is a directory.</p>
</dd>
<dt>islnk</dt>
<dd><p>Set if the file is a symbolic link. Note that symbolic links
are normally followed by the stat functions, so this might
only be set if you turn that off, e.g. by giving a nonzero
second argument to <code>file_stat()</code>.</p>
</dd>
<dt>isfifo</dt>
<dd><p>Set if the file is a FIFO (aka named pipe).</p>
</dd>
<dt>issock</dt>
<dd><p>Set if the file is a socket.</p>
</dd>
<dt>ischr</dt>
<dd><p>Set if the file is a character device.</p>
</dd>
<dt>isblk</dt>
<dd><p>Set if the file is a block device.</p>
</dd>
</dl><p>There are also some items that provide alternative representations
of the above:</p>
<dl class='group--doc'><dt>type</dt>
<dd><p>The type as a string, can be any of <code class='expr'>"reg"</code>,
<code class='expr'>"dir"</code>, <code class='expr'>"lnk"</code>, <code class='expr'>"fifo"</code>, <code class='expr'>"sock"</code>,
<code class='expr'>"chr"</code>, <code class='expr'>"blk"</code>, and <code class='expr'>"unknown"</code>.</p>
</dd>
<dt>mode_string</dt>
<dd><p>The file mode encoded as a string in <tt>ls -l</tt> style, e.g.
<code class='expr'>"drwxr-xr-x"</code>.</p>
</dd>
</dl><p>Note that some items might not exist or have meaningful values
on some platforms.</p>
<p> Additionally, the object may be initialized from or casted to an
<code class='expr'>array</code> on the form of a 'traditional' LPC stat-array, and
it's also possible to index the object directly with integers as
if it were such an array. The stat-array has this format:</p>
<table class='box'><tr><td colspan='2'>Array</td></tr>
<tr><td><code><code class='datatype'>int</code> <code class='key'>0</code></code></td><td><p>File mode, same as <tt>mode</tt>.</p>
</td></tr>
<tr><td><code><code class='datatype'>int</code> <code class='key'>1</code></code></td><td><p>If zero or greater, the file is a regular file and this is
its size in bytes. If less than zero it gives the type:
-2=directory, -3=symlink and -4=device.</p>
</td></tr>
<tr><td><code><code class='datatype'>int</code> <code class='key'>2</code></code></td><td><p>Time of last access, same as <tt>atime</tt>.</p>
</td></tr>
<tr><td><code><code class='datatype'>int</code> <code class='key'>3</code></code></td><td><p>Time of last data modification, same as <tt>mtime</tt>.</p>
</td></tr>
<tr><td><code><code class='datatype'>int</code> <code class='key'>4</code></code></td><td><p>Time of last file status change, same as <tt>ctime</tt>.</p>
</td></tr>
<tr><td><code><code class='datatype'>int</code> <code class='key'>5</code></code></td><td><p>User ID of the file's owner, same as <tt>uid</tt>.</p>
</td></tr>
<tr><td><code><code class='datatype'>int</code> <code class='key'>6</code></code></td><td><p>Group ID of the file's owner, same as <tt>gid</tt>.</p>
</td></tr>
</table><p>It's possible to modify the stat struct by assigning values to
the items. They essentially work as variables, although some of
them affect others, e.g. setting <code class='expr'>isdir</code> clears <code class='expr'>isreg</code>
and setting <code class='expr'>mode_string</code> changes many of the other items.</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>_equal</b></span>
</dt>
<dd><p><code><code class='datatype'>bool</code> <b><span class='method'>equal</span>(</b><span class='class'>Stdio.Stat</span> <span class='argument'>from</span>, <code class='datatype'>mixed</code> <code class='argument'>other</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Compare this object with another <code>Stat</code> object.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns <code class='expr'>1</code> if <code>other</code> is a <code>Stat</code> object with the
same content, and <code class='expr'>0</code> (zero) otherwise.</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>cast</b></span>
</dt>
<dd><p><code><b>(</b><span class='datatype'><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>int</code>)</span><b>)</b><span class='class'>Stdio.Stat</span>()<br><b>(</b><span class='datatype'><code class='datatype'>array</code></span><b>)</b><span class='class'>Stdio.Stat</span>()<br></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Convert the stat object to a mapping or array.</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.Stat</span> <span class='class'>Stdio.Stat</span><b>(</b><code class='datatype'>void</code>|<code class='datatype'>object</code>|<code class='datatype'>array</code> <code class='argument'>stat</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>A new <code>Stdio.Stat</code> object can be initialized in two ways:</p>
<ul>
<li><p><code>stat</code> is an object, typically another <code>Stdio.Stat</code>. The
stat info is copied from the object by getting the values of
<code class='expr'>mode</code>, <code class='expr'>size</code>, <code class='expr'>atime</code>, <code class='expr'>mtime</code>,
<code class='expr'>ctime</code>, <code class='expr'>uid</code>, <code class='expr'>gid</code>, <code class='expr'>dev</code>, <code class='expr'>ino</code>,
<code class='expr'>nlink</code>, and <code class='expr'>rdev</code>.</p>
</li><li><p><code>stat</code> is a seven element array on the 'traditional' LPC
stat-array form (see the class doc).</p>
</li></ul></dd></dl>
</dd></dl></dd>
<dt><a name='9.4'></a>
<h2 class='header'>9.4. Error handling</h2></dt>
<dd>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>errno</b></span>
</dt>
<dd><p><code><code class='datatype'>int</code> <b><span class='method'>errno</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>This function returns the system error from the last file operation.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>Note that you should normally use <code>Stdio.File->errno()</code> instead.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Stdio.File->errno()</code>, <code>strerror()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>strerror</b></span>
</dt>
<dd><p><code><code class='datatype'>string</code> <b><span class='method'>strerror</span>(</b><code class='datatype'>int</code> <code class='argument'>errno</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>This function returns a description of an error code. The error
code is usually obtained from eg <code>Stdio.File->errno()</code>.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>On some platforms the string returned can be somewhat nondescriptive.</p>
</dd></dl>
</dd>
<dt><a name='9.5'></a>
<h2 class='header'>9.5. Files and sockets</h2></dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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'>Annotations</dt>
|
c44ddc | 2020-05-25 | Stephen R. van den Berg | | <dd class='body--annotation'><pre><code>@<code>Pike.Annotations.Implements</code>(<code>NonblockingStream</code>)</code></pre></dd><dd class='body--annotation'><pre><code>@<code>Pike.Annotations.Implements</code>(<code>BlockFile</code>)</code></pre></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--doc'>Description</dt>
<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 by default, and provides no 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>
</dd></dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>assign</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
c3fe74 | 2003-02-05 | Martin Nilsson | | </dd>
<dt class='head--doc'>See also</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p><code>dup()</code></p>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>async_connect</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
4812c6 | 2022-05-25 | Henrik Grubbström (Grubba) | | <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='object unresolved'>__unknown__</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>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dd></dd><dd class='body--doc'><p>Port number or service name to connect to.</p>
</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.
The first argument will be <code class='expr'>1</code> if a connection was
successfully established, and <code class='expr'>0</code> (zero) on failure.
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>
<dd class='body--doc'><p>Returns <code class='expr'>0</code> on failure to open a socket, and <code class='expr'>1</code>
if <code>callback</code> 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>
</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>
|
c3fe74 | 2003-02-05 | Martin Nilsson | | </dd>
<dt class='head--doc'>See also</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p><code>connect()</code>, <code>open_socket()</code>, <code>set_nonblocking()</code></p>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dd></dl>
|
1f918f | 2002-05-26 | Martin Nilsson | |
|
35c47a | 2021-05-07 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>async_connect</b></span>
</dt>
<dd><p><code><code class='modifier'>variant</code> <code class='object unresolved'>Concurrent.Future</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><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Opens a TCP connection asynchronously using a Concurrent Future
object.</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>
<dd></dd><dd class='body--doc'><p>Port number or service name to connect to.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns a <code>Concurrent.Future</code> that resolves into the
connection object at success.</p>
</dd></dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>close</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<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>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>This function will not call the <tt>close_callback</tt>.</p>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dd>
<dt class='head--doc'>See also</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p><code>open</code>, <code>open_socket</code></p>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>connect</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='modifier'>variant</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(0..)</code>|<code class='datatype'>string</code> <code class='argument'>port</code><b>)</b></code><br>
<code><code class='modifier'>variant</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(0..)</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>string</code> <code class='argument'>client</code>, <code class='datatype'>int(0..)</code>|<code class='datatype'>string</code> <code class='argument'>client_port</code><b>)</b></code><br>
<code><code class='modifier'>variant</code> <code class='datatype'>string</code> <b><span class='method'>connect</span>(</b><code class='datatype'>string</code> <code class='argument'>host</code>, <code class='datatype'>int(0..)</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>string</code> <code class='argument'>data</code><b>)</b></code><br>
|
aacf4f | 2022-06-02 | Henrik Grubbström (Grubba) | | <code><code class='modifier'>variant</code> <code class='datatype'>string</code>|<code class='datatype'>zero</code> <b><span class='method'>connect</span>(</b><code class='datatype'>string</code> <code class='argument'>host</code>, <code class='datatype'>int(0..)</code>|<code class='datatype'>string</code> <code class='argument'>port</code>, <code class='datatype'>int(0..0)</code>|<code class='datatype'>string</code> <code class='argument'>client</code>, <code class='datatype'>int(0..)</code>|<code class='datatype'>string</code> <code class='argument'>client_port</code>, <code class='datatype'>string</code> <code class='argument'>data</code><b>)</b></code></p></dd>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p>Open a TCP/IP connection to the specified destination.</p>
<p> In nonblocking mode, success is indicated with the write-callback,
and failure with the close-callback or the read_oob-callback.</p>
<p> The <code>host</code> argument is the hostname or IP number of the remote
machine.</p>
<p> A local IP and port can be explicitly bound by specifying
<code>client</code> and <code>client_port</code>.</p>
<p> If the <code>data</code> argument is included the socket will use
TCP_FAST_OPEN if posible. In this mode the the function will
return the part of the data that has not been sent to the remote
server yet instead of 1 (you will have to use <code>write</code> to send
this data).</p>
<p> Note that TCP_FAST_OPEN requires server support, the connection
might fail even though the remote server exists. It might be
advisable to retry without TCP_FAST_OPEN (and remember this
fact)</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>This function returns 1 or the remaining <code>data</code> for success, 0
otherwise.</p>
</dd>
<dt class='head--doc'>Note</dt>
<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>.</p>
<p> 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>
|
c3fe74 | 2003-02-05 | Martin Nilsson | | </dd>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | <dt class='head--doc'>See also</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p><code>query_address()</code>, <code>async_connect()</code>, <code>connect_unix()</code></p>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dd></dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>connect_unix</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p>Open a UNIX domain socket connection to the specified destination.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns <code class='expr'>1</code> on success, and <code class='expr'>0</code> on failure.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>Nonblocking mode is not supported while connecting</p>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dd></dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<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.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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<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
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
<code>mode</code> for this is <code class='expr'>"rw"</code>.</p>
</dd>
<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>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dd></dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
|
f22887 | 2013-06-17 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>dup</b></span>
|
f22887 | 2013-06-17 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='object unresolved'>File</code> <b><span class='method'>dup</span>(</b><b>)</b></code></p></dd>
|
f22887 | 2013-06-17 | Martin Nilsson | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p>This function returns a clone of Stdio.File with all variables
copied from this file.</p>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>All variables, even <tt>id</tt>, are copied.</p>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>assign()</code></p>
|
f22887 | 2013-06-17 | Martin Nilsson | | </dd></dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>errno</b></span>
</dt>
<dd><p><code><code class='datatype'>int</code> <b><span class='method'>errno</span>(</b><b>)</b></code></p></dd>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dd></dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Inherit</span>
<span class='homogen--name'><b>Fd</b></span>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><span class='datatype'><code class='modifier'>optional</code> inherit Fd</span> : <span class='inherit'>Fd</span></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
f22887 | 2013-06-17 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>line_iterator</b></span>
|
f22887 | 2013-06-17 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik 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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns an iterator that will loop over the lines in this file.
If trim is true, all <tt>'\r'</tt> characters will be removed from
the input.</p>
</dd></dl>
|
f22887 | 2013-06-17 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>open</b></span>
|
f22887 | 2013-06-17 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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>
<table class='box'><tr><td><code><code class='key'>"r"</code></code></td><td><p>Open file for reading.</p>
</td></tr>
<tr><td><code><code class='key'>"w"</code></code></td><td><p>Open file for writing.</p>
</td></tr>
<tr><td><code><code class='key'>"a"</code></code></td><td><p>Open file for append (use with <code class='expr'>"w"</code>).</p>
</td></tr>
<tr><td><code><code class='key'>"t"</code></code></td><td><p>Truncate file at open (use with <code class='expr'>"w"</code>).</p>
</td></tr>
<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>
</td></tr>
<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>
</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>
<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>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>This function returns <code class='expr'>1</code> for success, <code class='expr'>0</code> otherwise.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>close()</code>, <code>create()</code></p>
</dd></dl>
|
f22887 | 2013-06-17 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>open_socket</b></span>
|
f22887 | 2013-06-17 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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'>string</code>|<code class='datatype'>void</code> <code class='argument'>family_hint</code><b>)</b></code></p></dd>
|
f22887 | 2013-06-17 | Martin Nilsson | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
</dd>
<dt class='head--doc'><span id='p-port'></span>Parameter <code class='parameter'>port</code></dt>
<dd></dd><dd class='body--doc'><p>If you give a port number to this function, the socket will be
bound to this port locally before connecting anywhere. This is
only useful for some silly protocols like <b>FTP</b>. The port can
also be specified as a string, giving the name of the service
associated with the port. Pass -1 to not specify a port (eg to
bind only to an address).</p>
</dd>
<dt class='head--doc'><span id='p-address'></span>Parameter <code class='parameter'>address</code></dt>
<dd></dd><dd class='body--doc'><p>You may specify an address to bind to if your machine has many IP
numbers.</p>
</dd>
<dt class='head--doc'><span id='p-family_hint'></span>Parameter <code class='parameter'>family_hint</code></dt>
<dd></dd><dd class='body--doc'><p>A protocol family for the socket can be specified. If no family is
specified, one which is appropriate for the address is automatically
selected. Thus, there is normally no need to specify it. If you
do not want to specify a bind address, you can provide the address
as a hint here instead, to allow the automatic selection to work
anyway.</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'>See also</dt>
<dd class='body--doc'><p><code>connect()</code>, <code>set_nonblocking()</code>, <code>set_blocking()</code></p>
|
f22887 | 2013-06-17 | Martin Nilsson | | </dd></dl>
|
e52650 | 2020-05-24 | Henrik 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><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><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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<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>
|
c3fe74 | 2003-02-05 | Martin Nilsson | | <dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
c3fe74 | 2003-02-05 | Martin Nilsson | | </dd></dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
|
d961e2 | 2013-05-29 | Henrik Grubbström (Grubba) | | <hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>pipe</b></span>
|
d961e2 | 2013-05-29 | Henrik Grubbström (Grubba) | | </dt>
|
aacf4f | 2022-06-02 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='object unresolved'>File</code>|<code class='datatype'>zero</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>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<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>
<dt class='head--doc'><span id='p-required_properties'></span>Parameter <code class='parameter'>required_properties</code></dt>
<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_SEND_FD</code></code></td><td><p>The resulting pipe might support sending of file descriptors
(see <code>send_fd()</code> and <code>receive_fd()</code> for details).</p>
</td></tr>
<tr><td><code><code class='key'>PROP_TTY</code></code></td><td><p>The resulting pipe is a pseudo-tty.</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> For <code>PROP_TTY</code> the returned object is the slave (unless
<code>PROP_REVERSE</code> has been specified).</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>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Process.create_process()</code>, <code>send_fd()</code>, <code>receive_fd()</code>,
<code>PROP_IPC</code>, <code>PROP_NONBLOCK</code>, <code>PROP_SEND_FD</code>,
<code>PROP_SHUTDOWN</code>, <code>PROP_BUFFERED</code>, <code>PROP_REVERSE</code>,
<code>PROP_BIDIRECTIONAL</code>, <code>PROP_TTY</code></p>
</dd></dl>
|
d961e2 | 2013-05-29 | Henrik Grubbström (Grubba) | |
|
2ca0cf | 2014-09-29 | Henrik Grubbström (Grubba) | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>query_buffer_mode</b></span>
|
2ca0cf | 2014-09-29 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>Stdio.Buffer</code>|<code class='datatype'>int(0..0)</code>) <b><span class='method'>query_buffer_mode</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Get the active input and output buffers that have been
set with <code>set_buffer_mode()</code> (if any).</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns an array with two elements:</p>
<table class='box'><tr><td colspan='2'>Array</td></tr>
<tr><td><code><code class='object unresolved'>Stdio.Buffer</code> <code class='key'>0</code></code></td><td><p>The current input buffer.</p>
</td></tr>
<tr><td><code><code class='object unresolved'>Stdio.Buffer</code> <code class='key'>1</code></code></td><td><p>The current output buffer.</p>
</td></tr>
</table>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>set_buffer_mode()</code></p>
</dd></dl>
|
2ca0cf | 2014-09-29 | Henrik Grubbström (Grubba) | |
|
546569 | 2008-06-13 | Martin Bähr | | <hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
<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>
<span class='homogen--type'>Method</span>
<span class='homogen--name'><b>query_callbacks</b></span><br>
|
546569 | 2008-06-13 | Martin Bähr | | </dt>
|
0297e9 | 2022-05-07 | Marcus Comstedt | | <dd><p><code><code class='object unresolved'>read_callback_t</code>|<code class='datatype'>zero</code> <b><span class='method'>query_read_callback</span>(</b><b>)</b></code><br>
<code><code class='object unresolved'>write_callback_t</code>|<code class='datatype'>zero</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>)|<code class='datatype'>zero</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>)|<code class='datatype'>zero</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>)|<code class='datatype'>zero</code> <b><span class='method'>query_close_callback</span>(</b><b>)</b></code><br>
<code><code class='datatype'>array</code>(<code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>void</code>|<code class='datatype'>string</code>:<code class='datatype'>int</code>)|<code class='datatype'>zero</code>) <b><span class='method'>query_callbacks</span>(</b><b>)</b></code></p></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>These functions return the currently installed callbacks for the
respective events.</p>
<p> <code>query_callbacks</code> returns the callbacks in the same order as
<code>set_callbacks</code> and <code>set_nonblocking</code> expect them.</p>
</dd>
<dt class='head--doc'>See also</dt>
<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>,
<code>set_callbacks</code></p>
</dd></dl>
|
546569 | 2008-06-13 | Martin Bähr | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>query_id</b></span>
</dt>
<dd><p><code><code class='datatype'>mixed</code> <b><span class='method'>query_id</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>This function returns the <tt>id</tt> that has been set with <code>set_id()</code>.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>set_id()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>read</b></span>
</dt>
|
aacf4f | 2022-06-02 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>string(8bit)</code>|<code class='datatype'>zero</code> <b><span class='method'>read</span>(</b><code class='datatype'>int</code>|<code class='datatype'>void</code> <code class='argument'>nbytes</code>, <code class='datatype'>bool</code>|<code class='datatype'>void</code> <code class='argument'>not_all</code><b>)</b></code></p></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Read (optionally buffered) data from a file or a stream.</p>
<p> Proxy function for <code>Fd::read()</code>, that adds support for
the buffering configured by <code>set_buffer_mode()</code></p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>read_function()</code>, <code>write()</code>, <code>Fd::read()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>read_function</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<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
functions, eg for the fourth argument to
<code>String.SplitIterator</code>.</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>send_fd</b></span>
</dt>
<dd><p><code><code class='datatype'>void</code> <b><span class='method'>send_fd</span>(</b><code class='object unresolved'>File</code>|<code class='object unresolved'>Fd</code> <code class='argument'>file</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_blocking</b></span>
</dt>
<dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_blocking</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<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>
</dd>
<dt class='head--doc'>Note</dt>
<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>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>set_nonblocking()</code>, <code>set_nonblocking_keep_callbacks()</code>,
<code>set_blocking_keep_callbacks()</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_nonblocking_keep_callbacks</b></span><br>
<span class='homogen--type'>Method</span>
<span class='homogen--name'><b>set_blocking_keep_callbacks</b></span><br>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>set_buffer_mode</b></span>
</dt>
<dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_buffer_mode</span>(</b><code class='object unresolved'>Stdio.Buffer</code>|<code class='datatype'>int(0..0)</code> <code class='argument'>in</code>, <code class='object unresolved'>Stdio.Buffer</code>|<code class='datatype'>int(0..0)</code> <code class='argument'>out</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Toggle the file to Buffer mode.</p>
<p> In this mode reading and writing will be done via Buffer
objects, in the directions you included buffers.</p>
</dd>
<dt class='head--doc'><span id='p-in'></span>Parameter <code class='parameter'>in</code></dt>
<dd></dd><dd class='body--doc'><p>Input buffer. If this buffer is non-empty, its contents
will be returned after any already received data.</p>
</dd>
<dt class='head--doc'><span id='p-out'></span>Parameter <code class='parameter'>out</code></dt>
<dd></dd><dd class='body--doc'><p>Output buffer. If this buffer is non-empty, its contents
will be sent after any data already queued for sending.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>Normally you call <code>write</code> to re-trigger the write callback if
you do not output anything in it (which will stop it from
re-occuring again).</p>
<p> This will work with buffered output mode as well, but simply
adding more data to the output buffer will work as well.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>query_buffer_mode()</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_callbacks</b></span>
</dt>
<dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_callbacks</span>(</b><code class='object unresolved'>read_callback_t</code>|<code class='datatype'>void</code> <code class='argument'>read_cb</code>, <code class='object unresolved'>write_callback_t</code>|<code class='datatype'>void</code> <code class='argument'>write_cb</code>, <code class='datatype'>void</code>|<code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>) <code class='argument'>close_cb</code>, <code class='datatype'>void</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_cb</code>, <code class='datatype'>void</code>|<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></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Installs all the specified callbacks at once. Use <code>UNDEFINED</code>
to keep the current setting for a callback.</p>
<p> Like <code>set_nonblocking</code>, the callbacks are installed atomically.
As opposed to <code>set_nonblocking</code>, this function does not do
anything with the stream, and it doesn't even have to be open.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><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>query_callbacks</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_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>
<span class='homogen--type'>Method</span>
<span class='homogen--name'><b>set_fs_event_callback</b></span><br>
</dt>
|
0297e9 | 2022-05-07 | Marcus Comstedt | | <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='datatype'>zero</code> <code class='argument'>read_cb</code><b>)</b></code><br>
<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='object unresolved'>Buffer</code>:<code class='datatype'>int</code>)|<code class='datatype'>zero</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='datatype'>zero</code> <code class='argument'>write_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='object unresolved'>Buffer</code>:<code class='datatype'>int</code>)|<code class='datatype'>zero</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='datatype'>zero</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='datatype'>zero</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='datatype'>zero</code> <code class='argument'>close_cb</code><b>)</b></code><br>
<code><code class='datatype'>void</code> <b><span class='method'>set_fs_event_callback</span>(</b><code class='datatype'>function</code>(<code class='datatype'>mixed</code>, <code class='datatype'>int</code>:<code class='datatype'>int</code>)|<code class='datatype'>zero</code> <code class='argument'>fs_event_cb</code>, <code class='datatype'>int</code> <code class='argument'>event_mask</code><b>)</b></code></p></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<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
remove the callback.</p>
<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>
<p> If the file is in buffer mode, the second argument will be a Buffer.</p>
<p> This will always be the same buffer, so data you do not use in
one read callback can be simply left in the buffer, when new
data arrives it will be appended</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>
<p> This callback is also called after the remote end of a socket
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>
<p> If the file is in buffer mode, the second argument will be a Buffer.</p>
<p> You should add data to write to this buffer.</p>
</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>
<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
remote end of a connection has closed the write direction.</p>
</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>
<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
callback settings - <code>query_read_callback</code> et al will still
return the installed callbacks.</p>
</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
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>
</dd>
<dt class='head--doc'><span id='p-event_mask'></span>Parameter <code class='parameter'>event_mask</code></dt>
<dd></dd><dd class='body--doc'><p>An event mask specifing bitwise OR of one or more event types to
monitor, selected from <code>Stdio.NOTE_WRITE</code> and friends.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>These functions do not set the file nonblocking.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>Callbacks are also set by <code>set_callbacks</code> and
<code>set_nonblocking()</code>.</p>
</dd>
<dt class='head--doc'>Note</dt>
<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>
</dd>
<dt class='head--doc'>Note</dt>
<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>
<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>
</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>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>fs_event callbacks only trigger on systems that support these events.
Currently, this includes systems that use kqueue, such as Mac OS X,
and various flavours of BSD.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>set_callbacks</code>, <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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>set_id</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<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
callbacks. The default <tt>id</tt> is <code class='expr'>0</code> (zero). Another possible
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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>set_nonblocking</b></span>
</dt>
|
0297e9 | 2022-05-07 | Marcus Comstedt | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_nonblocking</span>(</b><code class='object unresolved'>read_callback_t</code>|<code class='datatype'>zero</code> <code class='argument'>read_callback</code>, <code class='object unresolved'>write_callback_t</code>|<code class='datatype'>zero</code> <code class='argument'>write_callback</code>, <code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>)|<code class='datatype'>zero</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='object unresolved'>read_callback_t</code>|<code class='datatype'>zero</code> <code class='argument'>read_callback</code>, <code class='object unresolved'>write_callback_t</code>|<code class='datatype'>zero</code> <code class='argument'>write_callback</code>, <code class='datatype'>function</code>(<code class='datatype'>mixed</code>:<code class='datatype'>int</code>)|<code class='datatype'>zero</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='datatype'>zero</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='datatype'>zero</code> <code class='argument'>write_oob_callback</code><b>)</b></code><br>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <code><code class='datatype'>void</code> <b><span class='method'>set_nonblocking</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<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>
</dd>
<dt class='head--doc'>Note</dt>
<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>
</dd>
<dt class='head--doc'>Note</dt>
<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
option <tt>'--without-oob'</tt>.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>set_blocking()</code>, <code>set_callbacks</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>
</dd></dl>
</dd></dl><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>
<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()->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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>_get_iterator</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns an iterator that will loop over the lines in this file.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>line_iterator()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>getchar</b></span>
</dt>
<dd><p><code><code class='modifier'>local</code> <code class='datatype'>int</code> <b><span class='method'>getchar</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>This function returns one character from the input stream.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns the ISO-10646 (Unicode) value of the character.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>Returns an <code class='expr'>int</code> and not a <code class='expr'>string</code> of length 1.</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>gets</b></span>
</dt>
|
aacf4f | 2022-06-02 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>string</code>|<code class='datatype'>zero</code> <b><span class='method'>gets</span>(</b><code class='datatype'>bool</code>|<code class='datatype'>void</code> <code class='argument'>not_all</code><b>)</b></code></p></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Read one line of input with support for input conversion.</p>
</dd>
<dt class='head--doc'><span id='p-not_all'></span>Parameter <code class='parameter'>not_all</code></dt>
<dd></dd><dd class='body--doc'><p>Set this parameter to ignore partial lines at EOF. This
is useful for eg monitoring a growing logfile.</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>This function returns the line read if successful, and <code class='expr'>0</code> if
no more lines are available.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>ngets()</code>, <code>read()</code>, <code>line_iterator()</code>, <code>set_charset()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Inherit</span>
<span class='homogen--name'><b>file</b></span>
</dt>
<dd><p><code><span class='datatype'>inherit File</span> : <span class='inherit'>file</span></code></p></dd>
</dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>line_iterator</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns an iterator that will loop over the lines in this file.
If <code>trim</code> is true, all <tt>'\r'</tt> characters will be removed
from the input.</p>
</dd>
<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>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>_get_iterator()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>ngets</b></span>
</dt>
|
aacf4f | 2022-06-02 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>)|<code class='datatype'>zero</code> <b><span class='method'>ngets</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int(1..)</code> <code class='argument'>n</code>, <code class='datatype'>bool</code>|<code class='datatype'>void</code> <code class='argument'>not_all</code><b>)</b></code></p></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<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>
<dt class='head--doc'><span id='p-not_all'></span>Parameter <code class='parameter'>not_all</code></dt>
<dd></dd><dd class='body--doc'><p>Set this parameter to ignore partial lines at EOF. This
is useful for eg monitoring a growing logfile.</p>
</dd></dl>
<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><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><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()->openat()</code>, but returns an <code>Stdio.FILE</code>
object.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Stdio.File()->openat()</code></p>
</dd></dl>
<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()->pipe()</code>, but returns an <code>Stdio.FILE</code>
object.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Stdio.File()->pipe()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>printf</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>read</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Read <code>bytes</code> (wide-) characters with buffering and support for
input conversion.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Stdio.File()->read()</code>, <code>set_charset()</code>, <code>unread()</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_charset</b></span>
</dt>
<dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_charset</span>(</b><code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>charset</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Sets the input and output charset of this file to the specified
<code>charset</code>. If <code>charset</code> is 0 or not specified the environment
is used to try to detect a suitable charset.</p>
<p> The default charset if this function is not called is
<tt>"ISO-8859-1"</tt>.</p>
</dd><dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Consider using one of
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)
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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>ungets</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>This function puts a line back in the input buffer. The line
can then be read with eg <code>read()</code>, <code>gets()</code> or <code>getchar()</code>.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>The string is autoterminated by an extra line-feed.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>read()</code>, <code>gets()</code>, <code>getchar()</code>, <code>unread()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>unread</b></span>
</dt>
<dd><p><code><code class='datatype'>void</code> <b><span class='method'>unread</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<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>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>read()</code>, <code>gets()</code>, <code>getchar()</code>, <code>ungets()</code></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'>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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Write <code>what</code> with support for output_conversion.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Stdio.File()->write()</code></p>
</dd></dl>
</dd></dl></dd>
<dt><a name='9.6'></a>
<h2 class='header'>9.6. Ports and UDP</h2></dt>
<dd><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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>accept</b></span>
</dt>
|
aacf4f | 2022-06-02 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='object unresolved'>File</code>|<code class='datatype'>zero</code> <b><span class='method'>accept</span>(</b><b>)</b></code></p></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<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
<code>Stdio.File</code>. The new file is by initially set to blocking mode.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>Stdio.File</code>, <code>fd_factory()</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.Port</span> <span class='class'>Stdio.Port</span><b>(</b><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><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>
<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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>If the first argument is other than <code class='expr'>"stdin"</code> the arguments will
be passed to <code>bind()</code>.</p>
<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
useful if it actually is a socket to begin with, and is equivalent to
creating a port and initializing it with <code>listen_fd</code>(0).</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>bind</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>fd_factory</b></span>
</dt>
<dd><p><code><code class='modifier'>protected</code> <code class='object unresolved'>Fd</code> <b><span class='method'>fd_factory</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Factory creating empty <code>Fd</code> objects.</p>
<p> This function is called by <code>accept()</code> when it needs to create
a new file.</p>
<p> The default implementation returns the <code>Fd</code> inherit in
an empty <code>File</code> object.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>accept()</code></p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Inherit</span>
<span class='homogen--name'><b>_port</b></span>
</dt>
<dd><p><code><span class='datatype'>inherit _port</span> : <span class='inherit'>_port</span></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>
<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 _Stdio.UDP</span> : <span class='inherit'>UDP</span></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_nonblocking</b></span>
</dt>
<dd><p><code><code class='object unresolved'>UDP</code> <b><span class='method'>set_nonblocking</span>(</b><b>)</b></code><br>
|
0297e9 | 2022-05-07 | Marcus Comstedt | | <code><code class='object unresolved'>UDP</code> <b><span class='method'>set_nonblocking</span>(</b><code class='datatype'>void</code>|<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>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>set_read_callback</b></span>
</dt>
|
0297e9 | 2022-05-07 | Marcus Comstedt | | <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='datatype'>zero</code> <code class='argument'>read_cb</code>, <code class='datatype'>mixed</code> ... <code class='argument'>extra_args</code><b>)</b></code></p></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<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>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>read()</code></p>
</dd></dl>
</dd></dl></dd>
<dt><a name='9.7'></a>
<h2 class='header'>9.7. Terminal I/O</h2></dt>
<dd><dl><dt><h2 class='header'>Module <b class='ms datatype'>Stdio.Terminfo</b></h2>
</dt><dd>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>getFallbackTerm</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns an object describing the fallback terminal for the terminal
<code>term</code>. This is usually equivalent to <code>Stdio.Terminfo.getTerm("dumb")</code>.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p>Stdio.Terminfo.getTerm</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>getTerm</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<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>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p>Stdio.Terminfo.getTerminfo, Stdio.Terminfo.getTermcap, Stdio.getFallbackTerm</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>getTermcap</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>getTerminfo</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
<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>
<dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Terminfo.MetaTerminfoDB</b></h2>
</dt><dd><dl class='group--doc'>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p><code>TerminfoDB</code> that merges several directorys.</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.Terminfo.MetaTerminfoDB</span> <span class='class'>Stdio.Terminfo.MetaTerminfoDB</span><b>(</b><code class='datatype'>array</code>(<code class='object unresolved'>TerminfoDB</code>|<code class='datatype'>string</code>)|<code class='datatype'>void</code> <code class='argument'>dbs</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Create a new Meta <code>TerminfoDB</code>.</p>
</dd>
<dt class='head--doc'><span id='p-dbs'></span>Parameter <code class='parameter'>dbs</code></dt>
<dd></dd><dd class='body--doc'><p>Array with elements in priority order. Elements may be either</p>
<table class='box'><tr><td><code><code class='object unresolved'>TerminfoDB</code></code></td><td><p>An active <code>TerminfoDB</code>.</p>
</td></tr>
<tr><td><code><code class='datatype'>string</code></code></td><td><p>A directory that may exist and contain a terminfo database.</p>
</td></tr>
</table>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>If the resulting set of <code>TerminfoDB</code>'s is empty,
the object will be destructed.</p>
</dd></dl>
</dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Terminfo.Termcap</b></h2>
</dt><dd><dl class='group--doc'>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Termcap terminal description object.</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Variable</span>
<span class='homogen--name'><b>aliases</b></span>
</dt>
<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>
<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.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>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Inherit</span>
<span class='homogen--name'><b>TermMachine</b></span>
</dt>
<dd><p><code><span class='datatype'>inherit TermMachine</span> : <span class='inherit'>TermMachine</span></code></p></dd>
</dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>tputs</b></span>
</dt>
<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--doc'>Description</dt>
<dd class='body--doc'><p>Put termcap string</p>
</dd></dl>
</dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Terminfo.TermcapDB</b></h2>
</dt><dd><dl class='group--doc'>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Termcap database</p>
</dd></dl></dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Terminfo.Terminfo</b></h2>
</dt><dd><dl class='group--doc'>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Terminfo terminal description object</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Variable</span>
<span class='homogen--name'><b>aliases</b></span>
</dt>
<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>
<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.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>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Inherit</span>
<span class='homogen--name'><b>TermMachine</b></span>
</dt>
<dd><p><code><span class='datatype'>inherit TermMachine</span> : <span class='inherit'>TermMachine</span></code></p></dd>
</dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>tputs</b></span>
</dt>
<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>
</dd></dl>
</dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Terminfo.TerminfoDB</b></h2>
</dt><dd><dl class='group--doc'>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Terminfo database for a single directory.</p>
</dd></dl></dd></dl></dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Readline</b></h2>
|
c19f5e | 2022-07-25 | Henrik Grubbström (Grubba) | | </dt><dd><dl class='group--doc'>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Terminal-aware line-based input.</p>
</dd>
<dt class='head--doc'>Example</dt>
<dd class='example'><pre><p>// Get a Readline object connected to Stdio.stdin/Stdio.stdout.
Stdio.Readline readline = Stdio.Readline();</p>
<p> // Enable history.
string|zero history_dump = Stdio.read_file(history_file);
if (history_dump) {
readline->enable_history(history_dump/"\n");
} else {
readline->enable_history(512); // 512 lines of history.
}</p>
<p> // Add a completion handler.
readline->get_input_controller()->bind("\t", handle_completions);</p>
<p> // Output some message.
readline->message("Welcome to some application.\n");</p>
<p> // Set a prompt.
readline->set_prompt("> ");</p>
<p> // Read some input.
string command = readline->read();</p>
<p> // Save the history.
Stdio.write_file(history_file, readline->get_history()->encode());</p>
</pre></dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>enable_history()</code>, <code>get_history()</code>, <code>get_input_controller()</code>,
<code>message()</code>, <code>read()</code>, <code>set_prompt()</code></p>
</dd></dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>add_to_kill_ring</b></span>
</dt>
<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>
</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</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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Creates a Readline object, that takes input from <code>infd</code> and has output
on <code>outfd</code>.</p>
</dd>
<dt class='head--doc'><span id='p-infd'></span>Parameter <code class='parameter'>infd</code></dt>
<dd></dd><dd class='body--doc'><p>Defaults to <code>Stdio.stdin</code>.</p>
</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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>delete</b></span>
</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>delta_history</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<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>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>Only effective if you have a history object.</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>edit</b></span>
</dt>
|
aacf4f | 2022-06-02 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>string</code>|<code class='datatype'>zero</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>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>enable_history</b></span>
</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>eof</b></span>
</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>get_history</b></span>
</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>get_input_controller</b></span>
</dt>
<dd><p><code><code class='object unresolved'>InputController</code> <b><span class='method'>get_input_controller</span>(</b><b>)</b></code></p></dd>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>get_output_controller</b></span>
</dt>
<dd><p><code><code class='object unresolved'>OutputController</code> <b><span class='method'>get_output_controller</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>get_prompt</b></span>
</dt>
<dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_prompt</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Return the current prompt string.</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>getcursorpos</b></span>
</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>getmark</b></span>
</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>gettext</b></span>
</dt>
<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>
</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'>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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>insert</b></span>
</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>kill</b></span>
</dt>
<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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>kill_ring_yank</b></span>
</dt>
<dd><p><code><code class='datatype'>string</code> <b><span class='method'>kill_ring_yank</span>(</b><b>)</b></code></p></dd>
<dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>list_completions</b></span>
</dt>
<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>
<dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>message</b></span>
</dt>
<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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Print a message to the output device</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'>string</code> <b><span class='method'>newline</span>(</b><b>)</b></code></p></dd>
<dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>pointmark</b></span>
</dt>
<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>
<dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>read</b></span>
</dt>
<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>
<dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</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><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>
</dd></dl>
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
<span class='homogen--name'><b>region</b></span>
|
0f4adf | 2003-07-22 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
|
0f4adf | 2003-07-22 | Henrik Grubbström (Grubba) | | </dd></dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
|
0f4adf | 2003-07-22 | Henrik Grubbström (Grubba) | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>set_blocking</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_blocking</span>(</b><b>)</b></code></p></dd>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dd></dl>
|
1f918f | 2002-05-26 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>set_echo</b></span>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
1f918f | 2002-05-26 | Martin Nilsson | | <dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p>Set text echo on or off.</p>
|
6bbb87 | 2020-05-23 | Marcus Comstedt | | </dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dd></dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>set_nonblocking</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
0297e9 | 2022-05-07 | Marcus Comstedt | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_nonblocking</span>(</b><code class='datatype'>function</code>(<code class='datatype'>string</code>|<code class='datatype'>zero</code>:<code class='datatype'>void</code>)|<code class='datatype'>zero</code> <code class='argument'>f</code><b>)</b></code></p></dd>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dd></dl>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
|
429e50 | 2008-07-12 | Stephen R. van den Berg | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>set_prompt</b></span>
|
429e50 | 2008-07-12 | Stephen R. van den Berg | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
429e50 | 2008-07-12 | Stephen R. van den Berg | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p>Set the prompt string.</p>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
</dd>
<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>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dd></dl>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | |
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
|
1f918f | 2002-05-26 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>setcursorpos</b></span>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
</dd></dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>setmark</b></span>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
</dd></dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>write</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--fixme'>FIXME</dt>
<dd class='body--fixme'><p>Document this function</p>
</dd></dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
969955 | 2002-03-12 | Martin Nilsson | |
|
2d8319 | 2003-10-30 | Martin Stjernholm | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>backward_delete_char</b></span>
|
2d8319 | 2003-10-30 | Martin Stjernholm | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>backward_delete_char</span>(</b><b>)</b></code></p></dd>
</dl>
|
2d8319 | 2003-10-30 | Martin Stjernholm | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>backward_kill_word</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>backward_kill_word</span>(</b><b>)</b></code></p></dd>
</dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
|
4856ea | 2004-05-13 | H. William Welliver III | |
|
e0c281 | 2004-04-04 | Martin Stjernholm | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>beginning_of_line</b></span>
|
e0c281 | 2004-04-04 | Martin Stjernholm | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>beginning_of_line</span>(</b><b>)</b></code></p></dd>
</dl>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<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>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
388ed9 | 2005-02-01 | Martin Stjernholm | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>clear_screen</b></span>
|
388ed9 | 2005-02-01 | Martin Stjernholm | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>clear_screen</span>(</b><b>)</b></code></p></dd>
</dl>
|
388ed9 | 2005-02-01 | Martin Stjernholm | |
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<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>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
|
5af4c1 | 2009-02-24 | Henrik Grubbström (Grubba) | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>delete_char</b></span>
|
5af4c1 | 2009-02-24 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>delete_char</span>(</b><b>)</b></code></p></dd>
</dl>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
|
5af4c1 | 2009-02-24 | Henrik Grubbström (Grubba) | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>delete_char_or_eof</b></span>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>delete_char_or_eof</span>(</b><b>)</b></code></p></dd>
</dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>down_history</b></span>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>down_history</span>(</b><b>)</b></code></p></dd>
</dl>
|
c3fe74 | 2003-02-05 | Martin Nilsson | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
50af35 | 2002-07-15 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>downcase_word</b></span>
|
50af35 | 2002-07-15 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>downcase_word</span>(</b><b>)</b></code></p></dd>
</dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
dea86c | 2004-04-05 | Martin Stjernholm | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>end_of_line</b></span>
|
dea86c | 2004-04-05 | Martin Stjernholm | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>end_of_line</span>(</b><b>)</b></code></p></dd>
</dl>
|
dea86c | 2004-04-05 | Martin Stjernholm | |
|
1f918f | 2002-05-26 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>forward_char</b></span>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>forward_char</span>(</b><b>)</b></code></p></dd>
</dl>
|
c3fe74 | 2003-02-05 | Martin Nilsson | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
dea86c | 2004-04-05 | Martin Stjernholm | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>forward_word</b></span>
|
dea86c | 2004-04-05 | Martin Stjernholm | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>forward_word</span>(</b><b>)</b></code></p></dd>
</dl>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
|
dea86c | 2004-04-05 | Martin Stjernholm | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>kill_line</b></span>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>kill_line</span>(</b><b>)</b></code></p></dd>
</dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>kill_region</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>kill_region</span>(</b><b>)</b></code></p></dd>
</dl>
|
50af35 | 2002-07-15 | Martin Nilsson | |
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
|
50af35 | 2002-07-15 | Martin Nilsson | |
|
1f72bf | 2004-09-18 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>newline</b></span>
|
1f72bf | 2004-09-18 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
8ae003 | 2003-10-29 | Henrik Grubbström (Grubba) | |
|
c62812 | 2002-10-19 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>self_insert_command</b></span>
|
c62812 | 2002-10-19 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
c62812 | 2002-10-19 | Martin Nilsson | |
|
8831a4 | 2004-09-18 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>set_default_bindings</b></span>
|
8831a4 | 2004-09-18 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
8831a4 | 2004-09-18 | Martin Nilsson | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>set_mark</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_mark</span>(</b><b>)</b></code></p></dd>
</dl>
|
1f918f | 2002-05-26 | Martin Nilsson | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
1f72bf | 2004-09-18 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>swap_mark_and_point</b></span>
|
1f72bf | 2004-09-18 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>swap_mark_and_point</span>(</b><b>)</b></code></p></dd>
</dl>
|
1f72bf | 2004-09-18 | Martin Nilsson | |
|
c62812 | 2002-10-19 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>transpose_chars</b></span>
|
c62812 | 2002-10-19 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>transpose_chars</span>(</b><b>)</b></code></p></dd>
</dl>
|
c62812 | 2002-10-19 | Martin Nilsson | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>up_history</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>up_history</span>(</b><b>)</b></code></p></dd>
</dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
|
c3fe74 | 2003-02-05 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>upcase_word</b></span>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>upcase_word</span>(</b><b>)</b></code></p></dd>
</dl>
|
c3fe74 | 2003-02-05 | Martin Nilsson | |
|
c62812 | 2002-10-19 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>yank</b></span>
|
c62812 | 2002-10-19 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>create</b></span>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
c62812 | 2002-10-19 | Martin Nilsson | |
|
dea86c | 2004-04-05 | Martin Stjernholm | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>encode</b></span>
|
dea86c | 2004-04-05 | Martin Stjernholm | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>string</code> <b><span class='method'>encode</span>(</b><b>)</b></code></p></dd>
</dl>
|
dea86c | 2004-04-05 | Martin Stjernholm | |
|
ac9c55 | 2013-12-06 | Henrik Grubbström (Grubba) | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>finishline</b></span>
|
ac9c55 | 2013-12-06 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ac9c55 | 2013-12-06 | Henrik Grubbström (Grubba) | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>get_history_num</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>int</code> <b><span class='method'>get_history_num</span>(</b><b>)</b></code></p></dd>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>history</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
dea86c | 2004-04-05 | Martin Stjernholm | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>initline</b></span>
|
dea86c | 2004-04-05 | Martin Stjernholm | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>initline</span>(</b><b>)</b></code></p></dd>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
1f918f | 2002-05-26 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>pop</b></span>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>bool</code> <b><span class='method'>pop</span>(</b><code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>text</code><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Pop the last string off the history, discarding it.
If text is provided, will only pop that string.
Returns 1 if a string was removed, 0 if not.</p>
</dd></dl>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>set_max_history</b></span>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Readline.InputController</b></h2>
</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>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>bind</b></span>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>bindstr</b></span>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dt>
|
a9c5e8 | 2022-03-09 | Henrik Grubbström (Grubba) | | <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='datatype'>zero</code> <code class='argument'>f</code><b>)</b></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>bindtc</b></span>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
c62812 | 2002-10-19 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>create</b></span>
|
c62812 | 2002-10-19 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | </dl>
|
c62812 | 2002-10-19 | Martin Nilsson | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>disable</b></span>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>int</code> <b><span class='method'>disable</span>(</b><b>)</b></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>enable</b></span>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>getbinding</b></span>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
6f7a29 | 2003-06-02 | Martin Stjernholm | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>getbindings</b></span>
|
6f7a29 | 2003-06-02 | Martin Stjernholm | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
6f7a29 | 2003-06-02 | Martin Stjernholm | |
|
b36166 | 2010-06-05 | Henrik Grubbström (Grubba) | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>getbindingstr</b></span>
|
b36166 | 2010-06-05 | Henrik Grubbström (Grubba) | | </dt>
|
aacf4f | 2022-06-02 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>function</code>(:<code class='datatype void'>void</code>)|<code class='datatype'>zero</code> <b><span class='method'>getbindingstr</span>(</b><code class='datatype'>string</code> <code class='argument'>str</code><b>)</b></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
b36166 | 2010-06-05 | Henrik Grubbström (Grubba) | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
|
1f918f | 2002-05-26 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>getbindingtc</b></span>
|
1f918f | 2002-05-26 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
969955 | 2002-03-12 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>grabnextkey</b></span>
|
969955 | 2002-03-12 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>isenabled</b></span>
|
969955 | 2002-03-12 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>int</code> <b><span class='method'>isenabled</span>(</b><b>)</b></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
969955 | 2002-03-12 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>nullbindings</b></span>
|
969955 | 2002-03-12 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
969955 | 2002-03-12 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>parsekey</b></span>
|
969955 | 2002-03-12 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
969955 | 2002-03-12 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>run_blocking</b></span>
|
969955 | 2002-03-12 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>int</code> <b><span class='method'>run_blocking</span>(</b><b>)</b></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>set_close_callback</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
969955 | 2002-03-12 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>unbind</b></span>
|
969955 | 2002-03-12 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | |
|
969955 | 2002-03-12 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>unbindstr</b></span>
|
969955 | 2002-03-12 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>unbindtc</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Stdio.Readline.OutputController</b></h2>
</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>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>beep</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>beep</span>(</b><b>)</b></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>bol</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>bol</span>(</b><b>)</b></code></p></dd>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | | </dl>
|
78c3e2 | 2003-01-03 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>check_columns</b></span>
|
78c3e2 | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>int</code> <b><span class='method'>check_columns</span>(</b><b>)</b></code></p></dd>
<dt class='head--doc'>Description</dt>
<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>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>get_number_of_columns</code></p>
</dd></dl>
|
78c3e2 | 2003-01-03 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>clear</b></span>
|
78c3e2 | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
78c3e2 | 2003-01-03 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>create</b></span>
|
78c3e2 | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
78c3e2 | 2003-01-03 | Martin Nilsson | |
|
3a44ef | 2003-01-03 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>disable</b></span>
|
3a44ef | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>disable</span>(</b><b>)</b></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
3a44ef | 2003-01-03 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>enable</b></span>
|
3a44ef | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>enable</span>(</b><b>)</b></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
|
3a44ef | 2003-01-03 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>erase</b></span>
|
3a44ef | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
3a44ef | 2003-01-03 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>get_number_of_columns</b></span>
|
3a44ef | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
3a44ef | 2003-01-03 | Martin Nilsson | |
|
c3fe74 | 2003-02-05 | Martin Nilsson | |
|
786799 | 2003-01-03 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>low_erase</b></span>
|
786799 | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
786799 | 2003-01-03 | Martin Nilsson | |
|
3a44ef | 2003-01-03 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>low_move_backward</b></span>
|
3a44ef | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
|
3a44ef | 2003-01-03 | Martin Nilsson | |
|
786799 | 2003-01-03 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>low_move_downward</b></span>
|
786799 | 2003-01-03 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
786799 | 2003-01-03 | Martin Nilsson | |
|
e8d674 | 2002-12-05 | H. William Welliver III | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>low_move_forward</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>low_move_upward</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>low_write</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>move_backward</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>move_forward</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
|
029dae | 2017-10-13 | Chris Angelico | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>newline</b></span>
|
029dae | 2017-10-13 | Chris Angelico | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>void</code> <b><span class='method'>newline</span>(</b><b>)</b></code></p></dd>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dl>
|
029dae | 2017-10-13 | Chris Angelico | |
|
e8d674 | 2002-12-05 | H. William Welliver III | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>turn_off</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
|
e8d674 | 2002-12-05 | H. William Welliver III | | <hr />
<dl class='group--doc'>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>turn_on</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>write</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | </dd></dl></dd></dl></dd>
<dt><a name='9.8'></a>
<h2 class='header'>9.8. Other</h2></dt>
<dd><dl><dt><h2 class='header'>Module <b class='ms datatype'>Stdio</b></h2>
</dt><dd>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Constant</span>
<span class='homogen--name'><b>DATA_CHUNK_SIZE</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'><code class='modifier'>final</code> constant</code> <code class='datatype'>int</code> Stdio.<code class='constant'>DATA_CHUNK_SIZE</code></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Size used in various places to divide incoming or outgoing data
into chunks.</p>
</dd></dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Constant</span>
<span class='homogen--name'><b>TCSADRAIN</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>string</code> Stdio.<code class='constant'>TCSADRAIN</code></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Argument to <code>Stdio.File()->tcsetattr()</code>.</p>
<p> Change after all output has been written.</p>
</dd></dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Constant</span>
<span class='homogen--name'><b>TCSAFLUSH</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>string</code> Stdio.<code class='constant'>TCSAFLUSH</code></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Argument to <code>Stdio.File()->tcsetattr()</code>.</p>
<p> Change after all output has been written,
and empty the input buffers.</p>
</dd></dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Constant</span>
<span class='homogen--name'><b>TCSANOW</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>string</code> Stdio.<code class='constant'>TCSANOW</code></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Argument to <code>Stdio.File()->tcsetattr()</code>.</p>
<p> Change immediately.</p>
</dd></dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>append_file</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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->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>
<dd class='body--doc'><p>Returns the number of bytes written, i.e. <code class='expr'>sizeof(str)</code>.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>write_file()</code>, <code>read_bytes()</code>, <code>Stdio.File()->open()</code></p>
</dd></dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>append_path</b></span><br>
<span class='homogen--type'>Method</span>
<span class='homogen--name'><b>append_path_unix</b></span><br>
<span class='homogen--type'>Method</span>
<span class='homogen--name'><b>append_path_nt</b></span><br>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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><br>
<code><code class='datatype'>string</code> <b><span class='method'>append_path_unix</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><br>
<code><code class='datatype'>string</code> <b><span class='method'>append_path_nt</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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Append <code>relative</code> paths to an <code>absolute</code> path and remove any
<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
created path begin with something else than the absolute path
(or so far created path).</p>
<p> <code>append_path_nt()</code> fixes drive letter issues in <code>relative</code>
by removing the colon separator <code class='expr'>":"</code> if it exists (k:/fnord appends
as k/fnord)</p>
<p> <code>append_path_nt()</code> also makes sure that UNC path(s) in <code>relative</code> is appended
correctly by removing any <code class='expr'>"\\"</code> or <code class='expr'>"//"</code> from the beginning.</p>
<p> <code>append_path()</code> is equivalent to <code>append_path_unix()</code> on UNIX-like
operating systems, and equivalent to <code>append_path_nt()</code> on NT-like
operating systems.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>combine_path()</code></p>
</dd></dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>async_cp</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<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.
The first argument will be <code class='expr'>1</code> on success, and <code class='expr'>0</code> (zero)
otherwise. 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'>Note</dt>
<dd class='body--doc'><p>For <code>callback</code> to be called, the backend must be active (ie
<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>
</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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dd></dl>
|
e8d674 | 2002-12-05 | H. William Welliver III | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>convert_modestring2int</b></span>
|
e8d674 | 2002-12-05 | H. William Welliver III | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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()->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>
|
c3fe74 | 2003-02-05 | Martin Nilsson | |
|
e4e3f3 | 2002-04-06 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
50af35 | 2002-07-15 | Martin Nilsson | | <dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>cp</b></span>
|
e4e3f3 | 2002-04-06 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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
old one copied manually in chunks of <code>DATA_CHUNK_SIZE</code> bytes.</p>
<p> 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 mode bits, unlike in Pike
7.6 and earlier.</p>
</dd></dl>
|
70bc30 | 2014-09-28 | Henrik Grubbström (Grubba) | |
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>exist</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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>
<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>
<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>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>file_equal</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>file_size</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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
indicates that it is a directory, -3 that it is a symlink and -4
that it is a device.</p>
</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>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
|
d5f90f | 2003-06-27 | Martin Nilsson | | <hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Inherit</span>
<span class='homogen--name'><b>_Stdio</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><span class='datatype'>inherit _Stdio</span> : <span class='inherit'>_Stdio</span></code></p></dd>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dl>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>is_dir</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>is_file</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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 regular 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>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>is_link</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p>Check if a <code>path</code> is a symbolic link.</p>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns true if the given path is a symbolic link, otherwise false.</p>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dd>
<dt class='head--doc'>See also</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p><code>exist()</code>, <code>is_dir()</code>, <code>is_file()</code>, <code>file_stat()</code></p>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>mkdirhier</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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 &'ed
with the current umask (on OS'es that support this).</p>
</dd>
<dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns zero on failure and nonzero on success.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>mkdir()</code></p>
</dd></dl>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>perror</b></span>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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>
</dd></dl>
|
8847d0 | 2004-11-02 | Henrik Grubbström (Grubba) | |
|
d5f90f | 2003-06-27 | Martin Nilsson | | <hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>read_bytes</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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>
<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>
<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>
</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>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Typedef</span>
<span class='homogen--name'><b>read_callback_t</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
0297e9 | 2022-05-07 | Marcus Comstedt | | <dd><p><code><code class='datatype'><code class='modifier'>local</code> typedef</code> <code class='datatype'>function</code>(<code class='datatype'>mixed</code>|<code class='datatype'>void</code>, <code class='datatype'>string</code>:<code class='datatype'>int</code>|<code class='datatype'>void</code>)|<code class='datatype'>function</code>(<code class='datatype'>mixed</code>|<code class='datatype'>void</code>, <code class='object unresolved'>Buffer</code>:<code class='datatype'>int</code>|<code class='datatype'>void</code>)|<code class='datatype'>function</code>(<code class='datatype'>mixed</code>|<code class='datatype'>void</code>:<code class='datatype'>int</code>|<code class='datatype'>void</code>)|<code class='datatype'>zero</code> Stdio.<code class='typedef'>read_callback_t</code></code></p></dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>The various read_callback signatures.</p>
<p> The string (or void) version is used when buffer mode (see
<code>set_buffer_mode</code>) has not been enabled for reading.</p>
<p> The <code>Buffer</code> version is used when a <code>Buffer</code> has been enabled
for reading.</p>
<p> In both cases the data is the newly arrived data, but in buffered
mode data you did not fully read in the last read callback is
kept in the buffer.</p>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>read_file</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>read_bytes()</code>, <code>write_file()</code></p>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>recursive_mv</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | |
<dt class='head--doc'>Description</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p>Copy a file or a directory tree by copying and then
removing. Mode bits are preserved in the copy.
It's not the fastest but works on every OS and
works well across different file systems.</p>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dd>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--doc'>Returns</dt>
<dd class='body--doc'><p>Returns 0 on failure, nonzero otherwise.</p>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dd>
<dt class='head--doc'>See also</dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd class='body--doc'><p><code>recursive_rm</code> <code>cp</code></p>
|
bf9cb3 | 2020-05-13 | Henrik Grubbström (Grubba) | | </dd></dl>
|
f6a422 | 2017-07-10 | Henrik Grubbström (Grubba) | |
|
ed0ac8 | 2017-07-21 | Pontus Östlund | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>recursive_rm</b></span>
|
ed0ac8 | 2017-07-21 | Pontus Östlund | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Remove a file or a directory tree.</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>rm</code></p>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>sendfile</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<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
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
<code>from</code>.</p>
<p> Setting <code>len</code> to <code class='expr'>-1</code> means send until <code>from</code>'s end of file is
reached.</p>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>The sending is performed asynchronously, and may complete
both before and after the function returns.</p>
<p> For <code>callback</code> to be called, the backend must be active (ie
<code>main()</code> must have returned <code class='expr'>-1</code>, or <code>Pike.DefaultBackend</code>
get called in some other way).</p>
<p> In some cases, the backend must also be active for any sending to
be performed at all.</p>
<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>
</dd>
<dt class='head--doc'>Note</dt>
<dd class='body--doc'><p>The low-level sending may be performed with blocking I/O calls, and
thus trigger the process being killed with <tt>SIGPIPE</tt> when the
peer closes the other end. Add a call to <code>signal()</code> to avoid this.</p>
</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->set_nonblocking()</code></p>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
<dt class='head--type'><span class='homogen--type'>Method</span>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <span class='homogen--name'><b>simplify_path</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <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>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>Returns a canonic representation of <code>path</code> (without /./, /../, //
and similar path segments).</p>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Variable</span>
<span class='homogen--name'><b>stderr</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='object unresolved'>FILE</code> Stdio.<b><span class='variable'>stderr</span></b></code></p></dd>
<dt class='head--doc'>Description</dt>
<dd class='body--doc'><p>An instance of <tt>FILE("stderr")</tt>, the standard error stream. Use this
when you want to output error messages.</p>
</dd>
<dt class='head--doc'>See also</dt>
<dd class='body--doc'><p><code>predef::werror()</code></p>
</dd></dl>
|
d5f90f | 2003-06-27 | Martin Nilsson | |
<hr />
<dl class='group--doc'>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dt class='head--type'><span class='homogen--type'>Variable</span>
<span class='homogen--name'><b>stdin</b></span>
|
d5f90f | 2003-06-27 | Martin Nilsson | | </dt>
|
e52650 | 2020-05-24 | Henrik Grubbström (Grubba) | | <dd><p><code><code class='object unresolved'>FILE</code> Stdio.<b><span class='variable'>stdin</span></b></code></p></dd>
<dt class='head--doc'>Description</dt>
< |