diff --git a/tutorial/tutorial.wmml b/tutorial/tutorial.wmml index f263da5420700fe9f0818c1c579d1fad3e804e8b..2826f78958c39f0bd6e17a335e47dfe1ebd7d6eb 100644 --- a/tutorial/tutorial.wmml +++ b/tutorial/tutorial.wmml @@ -6,7 +6,7 @@ <h1> Programming, using and understanding <p> -<img src=pike.gif alt=PIKE> +<img src=pike.gif alt=" "> <p> <font size=+7><gh1>Pike</gh1></font> <p> @@ -163,7 +163,7 @@ data type. <chapter title="Getting started"> <p> -First you need to have pike installed on your computer. See Appendix E +First you need to have pike installed on your computer. See <link to=install> "how to install Pike" if this is not already done. It is also vital for the following examples that the pike binary is in your UNIX search path. If you have problems with this, consult the manual for your shell @@ -645,8 +645,8 @@ Now if we want to save the database and also be able to retrieve previously stor Now we have to introduce objects. To open a file, be it for writing or for reading, we need to use the builtin program <tt>File</tt>. A program is a data type which contains code, function and variables. A program can be <i>cloned</i>, i.e. we can create an data area for the program and initialize it with the physical file in question. The methods and variables in the file object enables us to perform actions on the associated file. -The methods we need to use are open, read, write and close. See chapter -XXXX for more details. +The methods we need to use are open, read, write and close. See <link to=io> +for more details. <p> <section title="save()"> @@ -804,7 +804,7 @@ Once again <tt>main()</tt> is left unchanged, except for yet another two case st <section title="Then what?"> Well that's it! The example is now a complete working example of a Pike program. But of course there are plenty of details that we haven't attended to. Error checking is for example extremely sparse in our program. This is left for you -to do as you continue to reed this book. The complete listing of this example can be found in APPENDIX B on page XXX. Read it, study it and enjoy! +to do as you continue to reed this book. The complete listing of this example can be found in <link to=register_program>. Read it, study it and enjoy! <p> </section> @@ -1491,8 +1491,8 @@ For example: <tt>rows( ({"a","b","c"}), ({ 2,1,2,0}) ) </tt> will return <dt><tt>array sort(array <i>arr</i>, array ... <i>rest</i>)</tt> <dd>This function sorts <i>arr</i> in smaller-to-larger order. Numbers, floats and strings can be sorted. If there are any additional arguments, they - will be permutated in the same manner as <i>arr</i>. See page XXXX - for more details. + will be permutated in the same manner as <i>arr</i>. See + <link to=functions> for more details. <dt><tt>array uniq(array <i>a</i>)</tt> <dd>This function returns a copy of the array <i>a</i> with all duplicate @@ -1620,7 +1620,7 @@ Note that you can actually have two of the same index in a multiset. This is normally not used, but can be practical at times. </section> -<section title="program"> +<section title="program" alias=programs> Normally, when we say <b>program</b> we mean something we can execute from a shell prompt. However, Pike has another meaning for the same word. In Pike @@ -2006,7 +2006,7 @@ Here is a list of what is possible: </chapter> -<chapter title="Operators"> +<chapter title="Operators" alias=operators> To make it easier to write Pike, and to make the code somewhat shorter, some functions can be called with just one or two characters in the code. @@ -2846,8 +2846,8 @@ The following table assumes that a and b are objects and shows what will be evaluated if you use that particular operation on an object. Note that some of these operators, notably <tt>==</tt> and <tt>!</tt> have default behaviour which will be used if the corresponding method is not defined in the object. -Other operators will simply fail if called with objects. Refer to the Chapter -XXXX <!--FIXME--> for information on which operators can operate on objects +Other operators will simply fail if called with objects. Refer to +<link to=operators> for information on which operators can operate on objects without operator overloading. <center> <table border=1> @@ -2944,7 +2944,7 @@ expect, in which case you are better off not using operator overloading. </section> </chapter> -<chapter title="Miscellaneous functions"> +<chapter title="Miscellaneous functions" alias=misc> There are some 'functions' in pike that are not really functions at all but just as builtin as operators. These special functions can do things that no @@ -3000,7 +3000,7 @@ Let's look at a couple of examples: sscanf(" \t test","%*[ \t]%s",a) </pre> <p> -<font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b>: <a href=#sprintf>sprintf</a> +<encaps>SEE ALSO</encaps>: <a href=#sprintf>sprintf</a> </section> </a> @@ -3021,7 +3021,7 @@ The description of the error has the following format: }) </pre> If no error occurs, catch will return zero. You may emulate your own errors -using the function, throw is described in chapter XXXXX<!--FIXME-->. +using the function, throw is described in <link to=functions>. <p> Example: <pre> @@ -3061,7 +3061,7 @@ expect. </chapter> -<chapter title="Modules"> +<chapter title="Modules" alias=modules> A module is a software package that plugs into the Pike programming environment. They provide you with simple interfaces to system routines @@ -3214,7 +3214,7 @@ or like this: <a href=Stdio> -<chapter title="File I/O"> +<chapter title="File I/O" alias=io> Programming without reading and writing data from files, sockets, keybaord etc. would be quite pointless. Luckily enough, Pike provides you with an object oriented interface to files, pipes and TCP sockets. All I/O functions @@ -3231,10 +3231,10 @@ written in C. What follows is a description of all the functions in <hr noshade size=1> <a name=Stdio.File.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->create</tt> - init file struct <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object Stdio.File();<br> or<br> object Stdio.File(string <I>fd</I>);<br> @@ -3242,7 +3242,7 @@ or object(Stdio.File) Stdio.File(string <i>file</i>, string <i>mode</i>);</br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> When cloning a File you can choose between three different ways. The first is to clone it without any arguments, in which case the you have to call open(), connect() or some other method which connects @@ -3256,7 +3256,7 @@ Alternatively, you can clone a File with "stdin", "stdout" or "stderr" as argument. This will open the specified standard stream. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#clone>clone</a> and <a href=#Stdio.File.open>Stdio.File->open</a> <p> </dl> @@ -3265,14 +3265,14 @@ stream. <hr noshade size=1> <a name=Stdio.File.open> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->open</tt> - open a file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int open(string <I>filename</I>, string <I>how</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Open a file for read, write or append. The variable how should contain one or more of the following letters: <p><table border=0 cellpadding=0 cellspacing=0> @@ -3287,7 +3287,7 @@ contain one or more of the following letters: <p>How should _always_ contain at least one of 'r' or 'w'. <p>Returns 1 on success, 0 otherwise. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.close>Stdio.File->close</a> <p> </dl> @@ -3296,22 +3296,22 @@ contain one or more of the following letters: <hr noshade size=1> <a name=Stdio.File.close> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->close</tt> - close file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int close(string <I>how</I>);<br> or<br> int close();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Close the file. Optionally, specify "r", "w" or "rw" to close just the read, just the write or both read and write part of the file respectively. Note that this funciton will not call the close_callback. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.open>Stdio.File->close</a> <p> </dl> @@ -3320,10 +3320,10 @@ close_callback. <hr noshade size=1> <a name=Stdio.File.read> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->read</tt> - read data from a file or stream <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string read(int <I>nbytes</I>);<br> or<br> string read(int <I>nbytes</I>, int <I>notall</I>);<br> @@ -3331,7 +3331,7 @@ or<br> string read();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Read tries to read nbytes bytes from the file, and return it as a string. If something goes wrong, zero is returned. <p>If a one is given as second argument to read(), read will not try @@ -3342,7 +3342,7 @@ exactly one row or packet at a time. <p> If no arguments are given, read will read to the end of the file/stream. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.write>Stdio.File->write</a> <p> </dl> @@ -3351,19 +3351,19 @@ If no arguments are given, read will read to the end of the file/stream. <hr noshade size=1> <a name=Stdio.File.write> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->write</tt> - write data to a file or stream <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int write(string <I>data</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Write data to file or stream and return how many bytes that was actually written. -1 is returned if something went wrong and no bytes had been written. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.read>Stdio.File->read</a> <p> </dl> @@ -3372,19 +3372,19 @@ bytes had been written. <hr noshade size=1> <a name=Stdio.File.seek> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->seek</tt> - seek to a position in a file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int seek(int <I>pos</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Seek to a position in a file, if pos is less than zero, seek to position pos relative end of file. Return -1 for failiure, or the old position in the file when successful. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.tell>Stdio.File->tell</a> <p> </dl> @@ -3393,17 +3393,17 @@ the old position in the file when successful. <hr noshade size=1> <a name=Stdio.File.tell> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->tell</tt> - tell where we are in a file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int tell();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the current position in the file. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.seek>Stdio.Fileile->seek</a> <p> </dl> @@ -3412,20 +3412,20 @@ Return the current position in the file. <hr noshade size=1> <a name=Stdio.File.stat> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->stat</tt> - do file_stat on an open file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int *stat();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the same information as the efun file_stat, but for the file it is called in. If file is not an open file, zero will be returned. Zero is also returned if file is a pipe or socket. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#file_stat>file_stat</a> <p> </dl> @@ -3434,14 +3434,14 @@ socket. <hr noshade size=1> <a name=Stdio.File.errno> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->errno</tt> - what was last error? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int errno();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the error code for the last command on this file. Error code is normally cleared when a command is successful. <p> @@ -3452,23 +3452,23 @@ Error code is normally cleared when a command is successful. <hr noshade size=1> <a name=Stdio.File.set_buffer> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->set_buffer</tt> - set internal socket buffer <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_buffer(int <I>bufsize</I>, string <I>mode</I>);<br> or<br> void set_buffer(int <I>bufsize</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets the internal buffer size of a socket or stream, the second argument allows you to set the read or write buffer by specifying "r" or "w". It is not guaranteed that this function actually does anything, but it certainly helps to increase data transfer speed when it does. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.open_socket>Stdio.File->open_socket</a> and <a href=#Stdio.Port.accept>Stdio.Port->accept</a> <p> </dl> @@ -3477,10 +3477,10 @@ transfer speed when it does. <hr noshade size=1> <a name=Stdio.File.set_nonblocking> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->set_nonblocking</tt> - make stream nonblocking <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_nonblocking(function read_callback,<br> <dl><dt><dd>function write_callback,<br> function close_callback);<br> @@ -3489,7 +3489,7 @@ void set_nonblocking();<br> <br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets a stream to nonblocking mode. When data arrives on the stream, read_callback will be called with some or all of this data. When the stream has buffer space over for writing, write_callback is @@ -3499,7 +3499,7 @@ id of file as first argument when called. <p>If no arguments are given, the callbacks are not changed. The stream is just set to nonblocking mode. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.set_blocking>Stdio.File->set_blocking</a> <p> </dl> @@ -3508,19 +3508,19 @@ stream is just set to nonblocking mode. <hr noshade size=1> <a name=Stdio.File.set_read_callback> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->set_read_callback</tt> - set the read callback <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_read_callback(function read_callback)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets the read callback for the file. The read callback is called whenever there is data to read from the file. Note that this function does not set the file nonblocking. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.set_nonblocking>Stdio.File->set_nonblocking</a> <p> </dl> @@ -3529,19 +3529,19 @@ this function does not set the file nonblocking. <hr noshade size=1> <a name=Stdio.File.set_write_callback> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->set_write_callback</tt> - set the write callback <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_write_callback(function write_callback)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets the write callback for the file. The write callback is called whenever there is buffer space available to write to for the file. Note that this function does not set the file nonblocking. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=Stdio.File.set_nonblocking>Stdio.File->set_nonblocking</a> <p> </dl> @@ -3550,19 +3550,19 @@ the file. Note that this function does not set the file nonblocking. <hr noshade size=1> <a name=Stdio.File.set_close_callback> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->set_close_callback</tt> - set the close callback <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_close_callback(function close_callback)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets the close callback for the file. The close callback is called when the remote end of a socket or pipe is closed. Note that this function does not set the file nonblocking. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.set_nonblocking>Stdio.File->set_nonblocking</a> <p> </dl> @@ -3571,18 +3571,18 @@ this function does not set the file nonblocking. <hr noshade size=1> <a name=Stdio.File.set_blocking> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->set_blocking</tt> - make stream blocking <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_blocking();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets a stream to blocking mode. ie. all reads and writes will wait until data has been written before returning. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=Stdio.File.set_nonblocking>Stdio.File->set_nonblocking</a> <p> </dl> @@ -3591,20 +3591,20 @@ will wait until data has been written before returning. <hr noshade size=1> <a name=Stdio.File.set_id> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->set_id</tt> - set id of this file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_id(mixed <I>id</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets the id of this file. The id is mainly used as an identifier that is sent as the first arguments to all callbacks. The default id is 0. Another possible use of the id is to hold all data related to this file in a mapping or array. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.query_id>Stdio.File->query_id</a> <p> </dl> @@ -3613,17 +3613,17 @@ related to this file in a mapping or array. <hr noshade size=1> <a name=Stdio.File.query_id> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->query_id</tt> - get id of this file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed query_id();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the id of this file. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.set_id>Stdio.File->set_id</a> <p> </dl> @@ -3632,18 +3632,18 @@ This function returns the id of this file. <hr noshade size=1> <a name=Stdio.File.query_read_callback> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->query_read_callback</tt> - return the read callback function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>function query_read_callback();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the read_callback, which is set with set_nonblocking. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.set_nonblocking>Stdio.File->set_nonblocking</a> <p> </dl> @@ -3652,18 +3652,18 @@ set_nonblocking. <hr noshade size=1> <a name=Stdio.File.query_write_callback> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->query_write_callback</tt> - return the write callback function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>function query_write_callback();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the write_callback, which is set with set_nonblocking. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.set_nonblocking>Stdio.File->set_nonblocking</a> <p> </dl> @@ -3672,18 +3672,18 @@ set_nonblocking. <hr noshade size=1> <a name=Stdio.File.query_close_callback> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File.query_close_callback</tt> - return the close callback function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>function query_close_callback();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the close_callback, which is set with set_nonblocking. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.set_nonblocking>Stdio.File->set_nonblocking</a> <p> </dl> @@ -3692,18 +3692,18 @@ set_nonblocking. <hr noshade size=1> <a name=Stdio.File.dup> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->dup</tt> - duplicate a file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object(Stdio.File) dup();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns a clone of Stdio.File with all variables copied from this file. Note that all variables, even id, is copied. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.assign>Stdio.File->assign</a> <p> </dl> @@ -3712,26 +3712,26 @@ copied from this file. Note that all variables, even id, is copied. <hr noshade size=1> <a name=Stdio.File.dup2> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->dup2</tt> - duplicate a file over another <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int dup2(object(Stdio.File) <I>to</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function works similar to Stdio.File->assign, but instead of making the argument a reference to the same file, it creates a new file with the same properties and places it in the argument. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>/* Redirect stdin to come from the file 'foo' */<br> object o=Stdio.File();<br> o->open("foo","r");<br> o->dup2(Stdio.File("stdin"));<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.assign>Stdio.File->assign</a> and <a href=#Stdio.File.dup>Stdio.File->dup</a> <p> </dl> @@ -3740,19 +3740,19 @@ o->dup2(Stdio.File("stdin"));<br> <hr noshade size=1> <a name=Stdio.File.assign> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->assign</tt> - assign a file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void assign(object <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function takes a clone of /precompiled/file and assigns all variables this file from it. It can be used together with file->dup to move files around. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.dup>Stdio.File->dup</a> <p> </dl> @@ -3761,14 +3761,14 @@ to move files around. <hr noshade size=1> <a name=Stdio.File.open_socket> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->open_socket</tt> - open a socket <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int open_socket(int|void port, int|void address);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This makes this file into a socket ready for connection. The reason for this function is so that you can set the socket to nonblocking or blocking (default is blocking) before you call Stdio.File->connect() @@ -3779,7 +3779,7 @@ this port locally before connecting anywhere. This is only useful for some silly protocols like FTP. You may also specify an adress to bind to if your machine has many ip numbers. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.connect>Stdio.File->connect</a> and <a href=#Stdio.File.set_nonblocking>Stdio.Fileile->set_nonblocking</a> <p> </dl> @@ -3788,14 +3788,14 @@ if your machine has many ip numbers. <hr noshade size=1> <a name=Stdio.File.connect> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->connect</tt> - connect a socket to something. <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int connect(string <I>ip</I>,int <I>port</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This funcion connects a socket previously created with Stdio.File->open_socket to a remote socket. The argument is the ip name or number fot he remote machine. @@ -3803,7 +3803,7 @@ or number fot he remote machine. socket is in nonblocking mode, you have to wait for a write or close callback before you know if the connection failed or not. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.query_address>Stio.File->query_address</a> <p> </dl> @@ -3812,22 +3812,22 @@ callback before you know if the connection failed or not. <hr noshade size=1> <a name=Stdio.File.query_address> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->query_address</tt> - get adresses <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string query_address();<br> or<br> string query_address(1);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the remote or local address of a socket on the form "x.x.x.x port". Without argument, the remote address is returned, with argument the local address is returned. If this file is not a socket, not connected or some other error occurs, zero is returned. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File.connect>Stdio.File->connect</a> <p> </dl> @@ -3836,20 +3836,20 @@ socket, not connected or some other error occurs, zero is returned. <hr noshade size=1> <a name=Stdio.File.pipe> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->pipe</tt> - create a two-way pipe <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object pipe();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function creates a pipe between the object it was called in and an object that is returned. The two ends of the pipe are indistinguishable. If the object is this function is called in was open to begin with, it is closed before the pipe is created. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#fork>fork</a> <p> </dl> @@ -3858,19 +3858,19 @@ was open to begin with, it is closed before the pipe is created. <hr noshade size=1> <a name=Stdio.File.set_close_on_exec> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.File->set_close_on_exec</tt> - set / clear the close on exec flag <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_close_on_exec(int <I>onoff</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function determines weather this file will be closed when calling exece. Default is that the file WILL be closed on exec except for stdin, stdout and stderr. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#exece>exece</a> <p> </dl> @@ -3932,14 +3932,14 @@ described here: <hr noshade size=1> <a name=Stdio.FILE.gets> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.FILE->gets</tt> - get one line <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string gets();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns one line from the FILE, it returns zero if no more lines are available. <p> @@ -3950,18 +3950,18 @@ no more lines are available. <hr noshade size=1> <a name=Stdio.FILE.printf> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.FILE->printf</tt> - formatted print <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string printf(string <I>format</I>, mixed ... <I>data</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function does aproximately the same as: write(sprintf(format,@data)) <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sprintf>sprintf</a> <p> </dl> @@ -3970,14 +3970,14 @@ write(sprintf(format,@data)) <hr noshade size=1> <a name=Stdio.FILE.ungets> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.FILE->ungets</tt> - put a string back in the buffer <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string ungets(string <I>s</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function puts a string back in the input buffer. The string can then be read with read, gets or getchar. <p> @@ -3988,14 +3988,14 @@ can then be read with read, gets or getchar. <hr noshade size=1> <a name=Stdio.FILE.getchar> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.FILE->getchar</tt> - get one character from the input stream <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int getchar();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns one character from the input stream. Note that the return value is the ascii value of the character, not a string containing one character. @@ -4045,22 +4045,22 @@ functions are implemented using Stdio.File and Stdio.FILE. <a name=Stdio.file_size> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.file_size</tt> - return the size of a file in bytes <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int file_size(string <I>file</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> 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. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index.html#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.write_file>Stdio.write_file</a> and <a href=#Stdio.read_bytes>Stdio.read_bytes</a> <p> </dl> @@ -4069,22 +4069,22 @@ indicates that it is a directory. <hr noshade size=1> <a name=Stdio.perror> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.perror</tt> - print error <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void perror(string <I>s</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> 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> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index.html#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.werror>Stdio.werror</a> <p> </dl> @@ -4095,10 +4095,10 @@ out what went wrong, so it is only applicable to IO errors. <a name=Stdio.read_bytes> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.read_bytes</tt> - read a number of bytes into a string from a file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt> string read_bytes(string <I>file</I>,int <I>start</I>,int <I>len</I>);<br> or<br> @@ -4107,16 +4107,16 @@ or<br> string read_bytes(string <I>file</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Read len number of bytes from file file staring at byte start and return it as a string. If <i>len</i> is omitted, the rest of the file will be returned. If <i>start</i> is also omitted, the entire file will be returned. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index.html#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.write_file>Stdio.write_file</a> <p> </dl> @@ -4125,25 +4125,25 @@ be returned. <hr noshade size=1> <a name=Stdio.read_file> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.read_file</tt> - read a number of lines into a string from file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt> string read_file(string <I>file</I>, int <I>start</I>, int <I>len</I>);<br> or<br> string read_file(string <I>file</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Read 'len' lines from the file 'file' after skipping 'start' lines and return those lines as a string. If start and len are omitted the whole file is read. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index.html#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.read_bytes>Stdio.read_bytes</a> and <a href=Stdio.write_file.html>Stdio.write_file</a> <p> </dl> @@ -4154,20 +4154,20 @@ the whole file is read. <a name=Stdio.readline> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.readline</tt> - read a line from stdin <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string readline(string <I>prompt</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function writes the string 'prompt' and then waits until the user has entered a line from the keyboard. If the readline library was available when Pike was compiled the user will have history and line edithing at his/her disposal when entering the line. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File>Stdio.File</a> <p> </dl> @@ -4176,18 +4176,18 @@ line edithing at his/her disposal when entering the line. <hr noshade size=1> <a name=Stdio.werror> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.werror</tt> - write to stderr <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void werror(string <I>s</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Writes a message to stderr. Stderr is normally the console, even if the process output has been redirected to a file or pipe. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=#Stdio.File>Stdio.File</a> <p> </dl> @@ -4196,20 +4196,20 @@ the process output has been redirected to a file or pipe. <hr noshade size=1> <a name=Stdio.write_file> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.write_file</tt> - append a string to a file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int write_file(string file, string str)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Append the string str onto the file file. Returns number of bytes written. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index.html#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.read_bytes.html>Stdio.read_bytes</a> <p> </dl> @@ -4229,10 +4229,10 @@ These are the methods available in <tt>Stdio.Port</tt>: <hr noshade size=1> <a name=Stdio.Port.bind> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.Port->bind</tt> - open socket and bind it to a port <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int bind(int <I>port</I>);<br> or<br> int bind(int <I>port</I>,function <I>accept_callback</I>);<br> @@ -4240,7 +4240,7 @@ or<br> int bind(int <I>port</I>,function <I>accept_callback</I>, string <I>ip</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Bind opens a sockets and binds it to port number on the local machine. If the second argument is present, the socket is set to nonblocking and the callback funcition is called whenever something connects to @@ -4249,7 +4249,7 @@ Bind returns 1 on success, and zero on failiure. <p>If the optional argument 'ip' is given, bind will try to bind to this ip name (or number). <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.Port.accept>Stdio.Port->accept</a> <p> </dl> @@ -4258,25 +4258,25 @@ this ip name (or number). <hr noshade size=1> <a name=Stdio.Port.listen_fd> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.Port->listen_fd</tt> - listen to an already open port <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int listen_fd(int <I>fd</I>);<br> or<br> int listen_fd(int <I>fd</I>,function <I>accept_callback</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function does the same as Stdio.Port->bind, except that instead of creating a new socket and bind it to a port, it expects that the filedescriptor 'fd' is an already open port. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function is only for the advanced user, and is generally used when sockets are passed to Pike at exec time. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.Port.bind>Stdio.Port->bind</a> and <a href=#Stdio.Port.accept>Stdio.Port->accept</a> <p> </dl> @@ -4285,10 +4285,10 @@ when sockets are passed to Pike at exec time. <hr noshade size=1> <a name=Stdio.Port.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> -<tt>Stdio.Port-create</tt> - create and/or setup a port +<dt><encaps>NAME</encaps><dd> +<tt>Stdio.Port->create</tt> - create and/or setup a port <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object(Stdio.Port) Stdio.Port("stdin")<br> or<br> object(Stdio.Port) Stdio.Port("stdin",function accept_callback)<br> @@ -4302,13 +4302,13 @@ or<br> object(Stdio.Port) Stdio.Port(int port,function accept_callback, string ip)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> When create is called with 'stdin' as argument, a socket is created out of the file descriptor 0. This is only useful if that actually IS a socket to begin with. When create is called with an int as first argument, it does the same as bind() would do with the same arguments. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#clone>clone</a> <p> </dl> @@ -4317,18 +4317,18 @@ argument, it does the same as bind() would do with the same arguments. <hr noshade size=1> <a name=Stdio.Port.set_id> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.Port->set_id</tt> - set the id of a port <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void set_id(mixed <I>id</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets the id used for accept_callback by this port. The default id is this_object(). <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.Port.query_id>Stdio.Port->query_id</a> <p> </dl> @@ -4337,18 +4337,18 @@ The default id is this_object(). <hr noshade size=1> <a name=Stdio.Port.query_id> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.Port->query_id</tt> - Return the id for this port. <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed query_id();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the id for this port. The id is normally the first argument to accept_callback. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.Port.set_id>Stdio.Port->set_id</a> <p> </dl> @@ -4357,19 +4357,19 @@ first argument to accept_callback. <hr noshade size=1> <a name=Stdio.Port.errno> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.Port->errno</tt> - return the last error <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int errno();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> If the last call done on this port failed, errno will return an integer describing what went wrong. Refer to your unix manual for further information. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.Port.errno>Stdio.Port->errno</a> <p> </dl> @@ -4378,19 +4378,19 @@ further information. <hr noshade size=1> <a name=Stdio.Port.accept> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Stdio.Port->accept</tt> - accept a connection <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object accept();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function completes a connection made from a remote machine to this port. It returns a two-way stream in the form of a copy of Stdio.File. The new file is by default set to blocking. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.File>Stdio.File</a> <p> </dl> @@ -4871,14 +4871,14 @@ This section describes all thread-related functions and classes. <hr noshade size=1> <a name=Thread.thread_create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.thread_create</tt> - create a thread <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object thread_create(function <I>f</I>, mixed ... <I>args</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function creates a new thread which will run simultaneously to the rest of the program. The new thread will call the function <i>f</i> with the arguments <i>args</i>. When f returns the thread will cease @@ -4887,10 +4887,10 @@ a function at the same time from different threads will not corrupt any internal data in the Pike process. The returned value will be the same as the return value of this_thread() for the new thread. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function is only available on systems with POSIX or UNIX threads support. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Thread.Mutex>Thread.Mutex</a>, <a href=#Thread.Condition>Thread.Condition</a> and <a href=#Thread.this_thread>Thread.this_thread</a> <p> </dl> @@ -4900,17 +4900,17 @@ This function is only available on systems with POSIX or UNIX threads support. <a name=Thread.this_thread> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.this_thread</tt> - return thread id <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object thread_id();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the object that identifies this thread. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Thread.thread_create>Thread.thread_create</a> <p> </dl> @@ -4919,10 +4919,10 @@ This function returns the object that identifies this thread. <hr noshade size=1> <a name=Thread.Mutex> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Mutex</tt> - mutex locks <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Thread.Mutex is a precompiled Pike program that implements mutal exclusion locks. Mutex locks are used to prevent multiple threads from simultaneously execute sections of code which accesses @@ -4930,14 +4930,14 @@ or changes shared data. The basic operations for a mutex is locking and unlocking, if a thread attempts to lock an already locked mutex the thread will sleep until the mutex is unlocked. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> Mutex locks are only available on systems with POSIX or UNIX threads support. <p> In POSIX threads, mutex locks can only be unlocked by the same thread locked them. In Pike any thread can unlock a locked mutex. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> This simple program can be used to exchange data between two programs. It is similar to Thread.Fifo, but can only hold one element of data. @@ -4971,14 +4971,14 @@ mixed read() <hr noshade size=1> <a name=Thread.Mutex.lock> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Mutex->lock</tt> - lock the mutex <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object lock();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function attempts to lock the mutex, if the mutex is already locked current thread will sleep until the lock is unlocked by some other thread. The value returned is the 'key' to the lock, which the @@ -4991,14 +4991,14 @@ be unlocked. <hr noshade size=1> <a name=Thread.Mutex.trylock> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Mutex->trylock</tt> - try to lock the mutex <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object trylock();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function performs the same operation as lock(), but if the mutex is already locked zero will be returned instead of sleeping until the lock is unlocked. @@ -5008,18 +5008,18 @@ lock is unlocked. <hr newpage noshade size=1> <a name=Thread.Condition> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Condition</tt> - condition variables <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Thread.Condition is a precompiled Pike program that implements condition variables. Condition variables are used by threaded programs to wait for events happening in other threads. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> Mutex locks are only available on systems with POSIX or UNIX threads support. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>// This program implements a fifo that can be used to send<br> // data between two threads.<br> inherit Thread.Condition : r_cond;<br> @@ -5057,7 +5057,7 @@ r_cond::signal();<br> </dl>}<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Tread.Mutex>Thread.Mutex</a> <p> </dl> @@ -5066,23 +5066,23 @@ r_cond::signal();<br> <hr noshade size=1> <a name=Thread.Condition.wait> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Condition->wait</tt> - wait for condition <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void wait();<br> or<br> void wait(object <I>mutex_key</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function makes the current thread sleep until the condition variable is signalled. The optional argument should be the 'key' to a mutex lock. If present the mutex lock will be unlocked before waiting for the condition in one atomical operation. After waiting for the condition the mutex referenced by mutex_key will be re-locked. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Thread.Mutex.lock>Thread.Mutex->lock</a> <p> </dl> @@ -5091,18 +5091,18 @@ for the condition the mutex referenced by mutex_key will be re-locked. <hr noshade size=1> <a name=Thread.Mutex.signal> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Mutex->signal</tt> - signal a condition variable <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void signal();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Signal wakes up one of the threads currently waiting for the condition. <p> -<dt><b> <font size=+1>B</font><font size=-1>UGS</font></b><dd> +<dt><encaps>BUGS</encaps><dd> It sometimes wakes up more than one thread. <p> </dl> @@ -5111,14 +5111,14 @@ It sometimes wakes up more than one thread. <hr noshade size=1> <a name=Thread.Mutex.broadcast> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Mutex->broadcast</tt> - signal all waiting threads <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void broadcast();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function wakes up all threads currently waiting for this condition. <p> @@ -5128,17 +5128,17 @@ condition. <hr noshade size=1> <a name=Thread.Fifo> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Fifo</tt> - first in, first out object <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Thread.Fifo implements a fixed length fifo. A fifo is a queue of values and is often used as a stream of data between two threads. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Thread.Queue>Thread.Queue</a> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> Fifos are only available on systems with POSIX threads support. <p> <p> @@ -5148,10 +5148,10 @@ Fifos are only available on systems with POSIX threads support. <hr noshade size=1> <a name=Thread.Fifo.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Fifo->create</tt> - initialize the fifo <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void create(int <I>size</I>);<br> or<br> object(Thread.Fifo) Thread.Fifo();<br> @@ -5159,7 +5159,7 @@ or<br> object(Thread.Fifo) Thread.Fifo(int <i>size</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> The function create() is called when the fifo is cloned, if the optional size argument is present it sets how many values can be written to the fifo without blocking. The default size is 128. @@ -5170,14 +5170,14 @@ written to the fifo without blocking. The default size is 128. <hr noshade size=1> <a name=Thread.Fifo.write> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Fifo->write</tt> - queue a value <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void write(mixed <I>value</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function puts a value last in the fifo. If there is no more room in the fifo the current thread will sleep until space is available. @@ -5188,14 +5188,14 @@ available. <hr noshade size=1> <a name=Thread.Fifo.read> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Fifo->read</tt> - read a value from the fifo <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed read();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function retreives a value from the fifo. Values will be returned in the order they were written. If there are no values present in the fifo the current thread will sleep until some other @@ -5207,14 +5207,14 @@ thread writes a value to the fifo. <hr noshade size=1> <a name=Thread.Fifo.size> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Fifo->size</tt> - return number of values in fifo <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int size();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns how many values are currently in the fifo. <p> </dl> @@ -5227,18 +5227,18 @@ This function returns how many values are currently in the fifo. <hr noshade size=1> <a name=Thread.Queue> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Queue</tt> - a queue of values <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Thread.Queue implements a queue, or a pipeline. The main differance between Thread.Queue and Thread.Fifo is that queues will never block in write(), only allocate more memory. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=Thread.Fifo>Thread.Fifo</a> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> Queues are only available on systems with POSIX or UNIX threads support. <p> </dl> @@ -5247,14 +5247,14 @@ Queues are only available on systems with POSIX or UNIX threads support. <hr noshade size=1> <a name=Thread.Queue.write> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Queue->write</tt> - queue a value <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>>void write(mixed <I>value</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function puts a value last in the queue. If the queue is to small to hold the value the queue will be expanded to make room for it. @@ -5265,14 +5265,14 @@ room for it. <hr noshade size=1> <a name=Thread.Queue.read> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Queue->read</tt> - read a value from the queue <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed read();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function retreives a value from the queue. Values will be returned in the order they were written. If there are no values present in the queue the current thread will sleep until some other @@ -5284,14 +5284,14 @@ thread writes a value to the queue. <hr noshade size=1> <a name=Thread.Queue.size> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Thread.Queue->size</tt> - return number of values in queue <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int queue->size();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns how many values are currently in the queue. <p> </dl> @@ -5302,7 +5302,7 @@ This function returns how many values are currently in the queue. <section title="Threads example"> Let's look at an example of how to work with threads. This program is the same -minimal WWW server as in the chapter XXXX <!-- FIXME --> but it has been +minimal WWW server as in <link to=io> but it has been re-written to use threads, as you can see it is a lot smaller this way. This is because we can use blocking I/O operations instead of non-blocking and callbacks. This also makes the program much easier to @@ -5419,18 +5419,18 @@ compliment to those written in C. <hr noshade size=1> <a name=String.implode_nicely> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>String.implode_nicely</tt> - make an english comma separated list <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string implode_nicely(string *words, string|void separator)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function implodes a list of words to a readable string. If the separator is omitted, the default is <tt>"and"</tt>. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>> implode_nicely(({"green"}));<br> Result: green<br> > implode_nicely(({"green","blue"}));<br> @@ -5441,10 +5441,10 @@ Result: green, blue and white<br> Result: green, blue or white<br> </tt> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string.html>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#multiplication>`*</a> </dl> </a> @@ -5453,21 +5453,21 @@ Result: green, blue or white<br> <a name=String.capitalize> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>String.capitalize</tt> - capitalize a string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string capitalize(string str)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Convert the first character in str to upper case, and return the new string. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string.html>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#lower_case>lower_case</a> and <a href=#upper_case>upper_case</a> <p> </dl> @@ -5477,14 +5477,14 @@ new string. <a name=String.strmult> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>String.strmult</tt> - multiply strings <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string strmult(string <I>s</I>, int <I>num</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function multplies 's' by 'num'. The return value is the same as appending 's' to an empty string 'num' times. <p> @@ -5500,10 +5500,10 @@ suppliment those written in C. <hr noshade size=1> <a name=Array.map> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Array.map</tt> - map an array or mapping over a function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *map(mixed <I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br> or<br> mixed *map(object *<I>arr</I>,string <I>fun</I>,mixed ... <I>args</I>);<br> @@ -5511,7 +5511,7 @@ or<br> mixed *map(function *<I>arr</I>,-<I>1</I>,mixed ... <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> First syntax: Map array returns an array holding the items of arr mapped thrugh the function fun. ie. arr[x]=fun(arr[x], @args) for all x. @@ -5522,10 +5522,10 @@ ie. arr[x]=arr[x]->fun(@ args); Map array calls the functions in the array arr: arr[x]=arr[x]->fun(@ args); <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array.html>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Array.sum_arrays>Array.sum_arrays</a> and <a href=#Array.filter>Array.filter</a> <p> </dl> @@ -5534,10 +5534,10 @@ arr[x]=arr[x]->fun(@ args); <hr noshade size=1> <a name=Array.filter> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Array.filter</tt> - filter an array or mapping through a function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *filter(mixed <I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br> or<br> mixed *filter(object *<I>arr</I>,string <I>fun</I>,mixed ... <I>args</I>);<br> @@ -5545,7 +5545,7 @@ or<br> mixed *filter(function *<I>arr</I>,-<I>1</I>,mixed ... <I>args</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> First syntax: Filter array returns an array holding the items of arr for which fun returns true. @@ -5556,10 +5556,10 @@ return all objects that returned true. Filter array calls all functionpointers in the array arr, and return all that returned true. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array.html>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Array.sum_arrays>Array.sum_arrays</a> and <a href=#Array.map>Array.map</a> </dl> </a> @@ -5568,10 +5568,10 @@ return all that returned true. <hr noshade size=1> <a name=Array.search_array> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Array.search_array</tt> - search for something in an array <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int search_array(mixed *<I>arr</I>,function <I>fun</I>,mixed <I>arg</I>, ...);<br> or<br> int search_array(object *<I>arr</I>,string <I>fun</I>,mixed <I>arg</I>, ...);<br> @@ -5579,15 +5579,15 @@ or<br> int search_array(function *<I>arr</I>,-<I>1</I>,mixed <I>arg</I>, ...);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> search_array works like map_array, only it returns the index of the first call that returned true instead or returning an array of the returned values. If no call returns true, -1 is returned. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array.html>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Array.sum_arrays.html>Array.sum_arrays</a> and <a href=#Array.filter_array>Array.filter_array</a> <p> </dl> @@ -5596,14 +5596,14 @@ returned values. If no call returns true, -1 is returned. <hr noshade size=1> <a name=Array.sum_arrays> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Array.sum_arrays</tt> - map any number of arrays over a function. <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *sum_arrays(function <I>fun</I>,mixed *<I>arr1</I>,...);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Works like this: <p>mixed *sum_arrays(function fun,mixed *arr1,...)<br> {<br> @@ -5618,10 +5618,10 @@ return res;<br> <p>Simple ehh? <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array.html>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Array.map_array>Array.map</a>, <a href=#Array.filter>Array.filter</a> and <a href=#Array.search_array>Array.search_array</a> </dl> </a> @@ -5629,24 +5629,24 @@ return res;<br> <hr noshade size=1> <a name=Array.sort_array> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Array.sort_array</tt> - sort an array <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *sort_array(mixed *<I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sorts an array after a compare-function 'fun' which takes two arguments and should return 1 if the first argument is larger then the second. The rest of the arguments 'args' will be sent as 3rd, 4th etc. argument to fun. If fun is omitted, `< is unsed instead. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array.html>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Array.map>Array.map</a> and <a href=#sort>sort</a> </dl> </a> @@ -5654,18 +5654,18 @@ instead. <hr noshade size=1> <a name=Array.uniq> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Array.uniq</tt> - return one of each element <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array uniq(array <I>a</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns an copy of the array a with all duplicate values removed. The order of the values in the result is undefined. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array.html>array</a> <p> </dl> @@ -5692,20 +5692,20 @@ need to <tt>import System</tt> to use these functions. <hr noshade size=1> <a name=chroot> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>chroot</tt> - change the root directory <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int chroot(string <I>newroot</I>);<br> or<br> int chroot(object(File) <I>obj</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Changes the root directory for this process to the indicated directory. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> Since this function modifies the directory structure as seen from Pike, you have to modify the environment variables PIKE_MODULE_PATH and PIKE_INCLUDE_PATH to compensate for the new root-directory. @@ -5721,20 +5721,20 @@ the fchroot(2) system call. <hr noshade size=1> <a name=getegid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getegid</tt> - get the effective group ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int getegid();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Get the effective group ID. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#setuid>setuid</a>, <a href=#getuid>getuid</a>, <a href=#setgid>setgid</a>, <a href=#getgid>getgid</a>, <a href=#seteuid>seteuid</a>, <a href=#geteuid>geteuid</a> and <a href=#setegid>setegid</a> <p> </dl> @@ -5743,20 +5743,20 @@ Usersecurity <hr noshade size=1> <a name=geteuid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>geteuid</tt> - get the effective user ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int geteuid();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Get the effective user ID. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#setuid>setuid</a>, <a href=#getuid>getuid</a>, <a href=#setgid>setgid</a>, <a href=#getgid>getgid</a>, <a href=#seteuid>seteuid</a>, <a href=#setegid>setegid</a> and <a href=#getegid>getegid</a> <p> </dl> @@ -5765,20 +5765,20 @@ Usersecurity <hr noshade size=1> <a name=getgid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getgid</tt> - get the group ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int getgid();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Get the real group ID. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#setuid>setuid</a>, <a href=#getuid>getuid</a>, <a href=#setgid>setgid</a>, <a href=#seteuid>seteuid</a>, <a href=#geteuid>geteuid</a>, <a href=#setegid>setegid</a> and <a href=#getegid>getegid</a> <p> </dl> @@ -5787,23 +5787,23 @@ Usersecurity <hr noshade size=1> <a name=gethostbyaddr> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>gethostbyaddr</tt> - gets information about a host given it's address <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array gethostbyaddr(string <I>addr</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns an array with information about the specified IP address. <p>The returned array contains the same information as that returned by gethostbyname(). <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function only exists on systems that have the gethostbyaddr(2) or similar system call. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#gethostbyname>gethostbyname</a> <p> </dl> @@ -5812,25 +5812,25 @@ or similar system call. <hr noshade size=1> <a name=gethostbyname> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>gethostbyname</tt> - gets information about a host given it's name <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array gethostbyname(string <I>hostname</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns an array with information about the specified host. <p>The array contains three elements: <p>The first element is the hostname. <p>The second element is an array(string) of IP numbers for the host. <p>The third element is an array(string) of aliases for the host. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function only exists on systems that have the gethostbyname(2) or similar system call. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#gethostbyaddr>gethostbyaddr</a> <p> </dl> @@ -5839,17 +5839,17 @@ or similar system call. <hr noshade size=1> <a name=gethostname> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>gethostname</tt> - get the name of this host <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string gethostname();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns a string with the name of the host. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function only exists on systems that have the gethostname(2) or uname(2) system calls. @@ -5860,24 +5860,24 @@ or uname(2) system calls. <hr noshade size=1> <a name=getpgrp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getpgrp</tt> - get the process group ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int getpgrp();<br> or<br> int getpgrp(int <I>pid</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> With no argguments or with 'pid' equal to zero, returns the process group ID of this process. <p>If 'pid' is specified, returns the process group ID of that process. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Processes <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#getpid>getpid</a> and <a href=#getppid>getppid</a> <p> </dl> @@ -5886,20 +5886,20 @@ Processes <hr noshade size=1> <a name=getpid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getpid</tt> - get the process ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int getpid();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns the process ID of this process. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Processes <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#getppid>getppid</a> and <a href=#getpgrp>getpgrp</a> <p> </dl> @@ -5908,20 +5908,20 @@ Processes <hr noshade size=1> <a name=getppid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getppid</tt> - get the parent process ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int getppid();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns the process ID of the parent process. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Processes <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#getpid>getpid</a> and <a href=#getpgrp>getpgrp</a> <p> </dl> @@ -5930,20 +5930,20 @@ Processes <hr noshade size=1> <a name=getuid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getuid</tt> - get the user ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int getuid();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Get the real user ID. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#setuid>setuid</a>, <a href=#setgid>setgid</a>, <a href=#getgid>getgid</a>, <a href=#seteuid>seteuid</a>, <a href=#geteuid>geteuid</a>, <a href=#setegid>setegid</a> and <a href=#getegid>getegid</a> <p> </dl> @@ -5952,20 +5952,20 @@ Usersecurity <hr noshade size=1> <a name=hardlink> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>hardlink</tt> - create a hardlink <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void hardlink(string <I>from</I>, string <I>to</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Creates a hardlink named 'to' from the file 'from'. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#symlink>symlink</a>, <a href=files_mv>mv</a> and <a href=files_rm>rm</a> <p> </dl> @@ -5974,22 +5974,22 @@ Creates a hardlink named 'to' from the file 'from'. <hr noshade size=1> <a name=initgroups> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>initgroups</tt> - initialize the group access list <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void initgroups(string <I>username</I>, int <I>base_gid</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Initializes the group access list according to the system group database. 'base_gid' is also added to the group access list. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#setuid>setuid</a>, <a href=#getuid>getuid</a>, <a href=#setgid>setgid</a>, <a href=#getgid>getgid</a>, <a href=#seteuid>seteuid</a>, <a href=#geteuid>geteuid</a>, <a href=#setegid>setegid</a>, <a href=#getegid>getegid</a>, system/getgroups and system/setgroups <p> </dl> @@ -5998,14 +5998,14 @@ Usersecurity <hr noshade size=1> <a name=openlog> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>openlog</tt> - initializes the connection to syslogd <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void openlog(string <I>ident</I>, int <I>options</I>, <I>facility</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Initializes the connection to syslogd. <p>The 'ident' argument specifies an identifier to tag all logentries with. @@ -6037,13 +6037,13 @@ facilities are: </table> </dl> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> Only available on systems with syslog(3). BUGS LOG_NOWAIT should probably always be specified. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> syslog, closelog and setlogmask <p> </dl> @@ -6052,20 +6052,20 @@ syslog, closelog and setlogmask <hr noshade size=1> <a name=readlink> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>readlink</tt> - read a symbolic link <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string readlink(string <I>linkname</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns what the symbolic link 'linkname' points to. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#symlink>symlink</a> <p> </dl> @@ -6074,20 +6074,20 @@ Returns what the symbolic link 'linkname' points to. <hr noshade size=1> <a name=setegid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>setegid</tt> - set the effective group ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setegid(int <I>uid</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Sets the effective group ID to 'gid'. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#setuid>setuid</a>, <a href=#getuid>getuid</a>, <a href=#setgid>setgid</a>, <a href=#getgid>getgid</a>, <a href=#seteuid>seteuid</a>, <a href=#geteuid>geteuid</a> and <a href=#getegid>getegid</a> <p> </dl> @@ -6096,20 +6096,20 @@ Usersecurity <hr noshade size=1> <a name=seteuid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>seteuid</tt> - set the effective user ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void seteuid(int <I>uid</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Sets the effective user ID to 'uid'. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#setuid>setuid</a>, <a href=#getuid>getuid</a>, <a href=#setgid>setgid</a>, <a href=#getgid>getgid</a>, <a href=#geteuid>geteuid</a>, <a href=#setegid>setegid</a> and <a href=#getegid>getegid</a> <p> </dl> @@ -6118,20 +6118,20 @@ Usersecurity <hr noshade size=1> <a name=setgid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>setgid</tt> - set the group ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setgid(int <I>gid</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Sets the real group ID, effective group ID and saved group ID to 'gid'. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#setuid>setuid</a>, <a href=#getuid>getuid</a>, <a href=#getgid>getgid</a>, <a href=#seteuid>seteuid</a>, <a href=#geteuid>geteuid</a>, <a href=#setegid>setegid</a> and <a href=#getegid>getegid</a> <p> </dl> @@ -6140,20 +6140,20 @@ Usersecurity <hr noshade size=1> <a name=setuid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>setuid</tt> - set the user ID <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setuid(int <I>uid</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Sets the real user ID, effective user ID and saved user ID to 'uid'. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> Usersecurity <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#getuid>getuid</a>, <a href=#setgid>setgid</a>, <a href=#getgid>getgid</a>, <a href=#seteuid>seteuid</a>, <a href=#geteuid>geteuid</a>, <a href=#setegid>setegid</a> and <a href=#getegid>getegid</a> <p> </dl> @@ -6162,20 +6162,20 @@ Usersecurity <hr noshade size=1> <a name=symlink> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>symlink</tt> - create a symbolic link <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void symlink(string <I>from</I>, string <I>to</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Creates a symbolic link named 'to' pointing to 'from'. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#hardlink>hardlink</a>, <a href=#readlink>readlink</a>, <a href=files_mv>mv</a> and <a href=files_rm>rm</a> <p> </dl> @@ -6184,14 +6184,14 @@ Creates a symbolic link named 'to' pointing to 'from'. <hr noshade size=1> <a name=uname> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>uname</tt> - get operating system information <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping(string:string) <I>uname</I>();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns a mapping describing the operating system. <p>The mapping contains the following fields: <p><table border=0 cellpadding=0 cellspacing=0> @@ -6200,7 +6200,7 @@ Returns a mapping describing the operating system. </table> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function only exists on systems that have the uname(2) system call. <p> @@ -6216,14 +6216,14 @@ The Process module contains functions to start and control other programs from P <hr noshade size=1> <a name=Process.popen> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Process.popen</tt> - pipe open <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string popen(string <I>cmd</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function runs the command cmd as in a shell and returns the output. See your unix/C manual for details on popen. <p> @@ -6233,19 +6233,19 @@ output. See your unix/C manual for details on popen. <hr noshade size=1> <a name=Process.system> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Process.system</tt> - run an external program <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void system(string <I>cmd</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function runs the external program cmd and waits until it is finished. Standard /bin/sh completions/redirections/etc. can be used. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Process.popen>Process.popen</a>, <a href=#Process.exec>Process.exec</a> and <a href=#Process.spawn>Process.spawn</a> <p> </dl> @@ -6254,10 +6254,10 @@ be used. <hr noshade size=1> <a name=Process.spawn> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Process.spawn</tt> - spawn a process <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int spawn(string <I>cmd</I>);<br> or<br> int spawn(string <I>cmd</I>, object <I>stdin</I>);<br> @@ -6267,13 +6267,13 @@ or<br> int spawn(string <I>cmd</I>, object <I>stdin</I>, object <I>stdout</I>, object <I>stderr</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function spawns a process but does not wait for it to finish. Optionally, clones of Stdio.File can be sent to it to specify where stdin, stdout and stderr of the spawned processes should go. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Process.popen>Process.popen</a>, <a href=#fork>fork</a>, <a href=#Process.exec>Process.exec</a>, <a href=#Stdio.File.pipe>Stdio.File->pipe</a> and <a href=#Stdio.File.dup2>Stdio.File->dup2</a> <p> </dl> @@ -6282,16 +6282,16 @@ should go. <hr noshade size=1> <a name=exece> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>exece</tt> - execute a program <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int exece(string <I>file</I>, string *<I>args</I>);<br> or<br> int exece(string <I>file</I>, string *<I>args</I>, mapping(string:string) <I>env</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function transforms the Pike process into a process running the program specified in the argument 'file' with the argument 'args'. If the mapping 'env' is present, it will completely replace all @@ -6299,17 +6299,17 @@ environment variables before the new program is executed. This function only returns if something went wrong during exece(), and in that case it returns zero. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> The Pike driver _dies_ when this function is called. You must use fork() if you wish to execute a program and still run the Pike driver. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>exece("/bin/ls", ({"-l"}));<br> exece("/bin/sh", ({"-c", "echo $HOME"}), (["HOME":"/not/home"]));<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#fork>fork</a> and <a href=#Stdio.File.pipe>Stdio.File->pipe</a> <p> </dl> @@ -6318,21 +6318,21 @@ exece("/bin/sh", ({"-c", "echo $HOME"}), (["HOME":"/not/home"]));<br> <hr noshade size=1> <a name=Process.exec> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Process.exec</tt> - simple way to use exece() <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int exec(string <I>file</I>, string ... <I>args</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function destroys the Pike parser and runs the program 'file' instead with the arguments. If no there are no '/' in the filename, the variable PATH will be consulted when looking for the program. This function does not return except when the exec fails for some reason. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>exec("/bin/echo","hello","world");<br> <br> </tt> @@ -6396,10 +6396,10 @@ when you read about the following functions: <hr noshade size=1> <a name=Regexp.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Regexp.create</tt> - compile regexp <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void create();<br> or<br> void create(string <i>regexp</i>);<br> @@ -6409,7 +6409,7 @@ or<br> object(Regexp) Regexp(string <I>regexp</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> When create is called, the current regexp bound to this object is cleared. If a string is sent to create(), this string will be compiled to an internal representation of the regexp and bound to this object @@ -6417,7 +6417,7 @@ for laters calls to match or split. Calling create() without an argument can be used to free up a little memory after the regexp has been used. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#clone>clone</a> and <a href=#Yp.regexp.match>Yp.regexp->match</a> <p> </dl> @@ -6426,18 +6426,18 @@ been used. <hr noshade size=1> <a name=Regexp.match> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Regexp.match</tt> - match a regexp <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int match(string s)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return 1 if s matches the regexp bound to the object regexp, zero otherwise. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Regexp.create>Regexp->create</a> and <a href=#Yp.regexp.split>regexp->split</a> <p> </dl> @@ -6446,23 +6446,23 @@ zero otherwise. <hr noshade size=1> <a name=split> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Regexp.split</tt> - split a string according to a pattern <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string *split(string s)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Works as regexp->match, but returns an array of the strings that matched the subregexps. Subregexps are those contained in ( ) in the regexp. Subregexps that were not matched will contain zero. If the total regexp didn't match, zero is returned. <p> -<dt><b> <font size=+1>B</font><font size=-1>UGS</font></b><dd> +<dt><encaps>BUGS</encaps><dd> You can only have 40 subregexps. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Regexp.create>Regexp->create</a> and <a href=#Regexp.match>Regexp->match</a> <p> </dl> @@ -6488,17 +6488,17 @@ from Gmp.Mpz. <a name=Gmp.mpz> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz</tt> - bignum program <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Gmp.mpz is a builtin program written in C. It implements large, very large integers. In fact, the only limitation on these integers is the available memory. <p>The mpz object implements all the normal integer operations. (except xor) There are also some extra operators: <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This module is only available if libgmp.a was available and found when Pike was compiled. </dl> @@ -6507,10 +6507,10 @@ found when Pike was compiled. <hr noshade size=1> <a name=Gmp.mpz.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz.create</tt> - initialize a bignum <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object Mpz();<br> or<br> object Mpz(int|object|float <I>i</I>);<br> @@ -6519,7 +6519,7 @@ object Mpz(string <I>digits</I>, int <I>base</I>);<br> <br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> When cloning an mpz it is by default initalized to zero. However, you can give a second argument to clone to initialize the new object to that value. The argument can be an int, float another @@ -6527,7 +6527,7 @@ mpz object, or a string containing an ascii number. You can also give the number in the string in another base by specifying the base as a second argument. Valid bases are 2-36 and 256. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#clone>clone</a> <p> </dl> @@ -6536,14 +6536,14 @@ base as a second argument. Valid bases are 2-36 and 256. <hr noshade size=1> <a name=Gmp.mpz.powm> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz.powm</tt> - raise and modulo <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object powm(int|string|float|object <I>a</I>,int|string|float|object <I>b</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns ( mpz ** a ) % b </dl> @@ -6551,14 +6551,14 @@ This function returns ( mpz ** a ) % b <hr noshade size=1> <a name=Gmp.mpz.sqrt> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz.sqrt</tt> - square root <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object sqrt();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function return the the truncated integer part of the square root of the value of mpz. </dl> @@ -6567,14 +6567,14 @@ root of the value of mpz. <hr noshade size=1> <a name=Gmp.mpz.probably_prime_p> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz.probably_prime_p</tt> - is this number a prime? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int probably_prime_p();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns 1 if mpz is a prime, and 0 most of the time if it is not. </dl> @@ -6583,14 +6583,14 @@ if it is not. <hr noshade size=1> <a name=Gmp.mpz.gcd> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz.gcd</tt> - greatest common divisor <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object gcd(object|int|float|string arg)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the greatest common divisor for arg and mpz. </dl> @@ -6598,10 +6598,10 @@ This function returns the greatest common divisor for arg and mpz. <hr noshade size=1> <a name=Gmp.mpz.cast> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz.cast</tt> - cast to other type <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object cast( "string" | "int" | "float" );<br> or<br> (string) mpz<br> @@ -6616,7 +6616,7 @@ nessesary when you want to view, store or use the result of an mpz<br> calculation.<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#cast>cast</a> <p> </dl> @@ -6625,21 +6625,21 @@ calculation.<br> <hr noshade size=1> <a name=Gmp.mpz.digits> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz.digits</tt> - convert mpz to a string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string digits();<br> or<br> string digits(int|void <I>base</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function converts an mpz to a string. If a base is given the number will be represented in that base. Valid bases are 2-36 and 256. The default base is 10. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Gmp.mpz.cast>Gmp.mpz->cast</a> <p> </dl> @@ -6648,20 +6648,20 @@ number will be represented in that base. Valid bases are 2-36 and <hr noshade size=1> <a name=Gmp.mpz.size> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gmp.mpz.size</tt> - how long is a number <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string size();<br> or<br> string size(int|void <I>base</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns how long the mpz would be represented in the specified base. The default base is 2. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Gmp.mpz.digits>Gmp.mpz->digits</a> <p> </dl> @@ -6689,10 +6689,10 @@ was available on your system when Pike was compiled. <hr noshade size=1> <a name=Gdbm.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gdbm.create</tt> - open database <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int create();<br> or<br> int create(string <I>file</I>);<br> @@ -6706,7 +6706,7 @@ or<br> object(Gdbm) Gdbm(string <i>file</i>, string <i>mode</i>); </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Without arguments, this function does nothing. With one argument it opens the given file as a gdbm database, if this fails for some reason, an error will be generated. If a second argument is present, @@ -6731,14 +6731,14 @@ can be left in an unusable state if Pike is terminated abnormally. <hr noshade size=1> <a name=Gdbm.close> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gdbm.close</tt> - close database <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void close();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This closes the database. <p> </dl> @@ -6747,14 +6747,14 @@ This closes the database. <hr noshade size=1> <a name=Gdbm.store> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gdbm.store</tt> - store a value in the database <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int Gdbm.store(string <I>key</I>, string <I>data</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Associate the contents of 'data' with the key 'key'. If the key 'key' already exists in the database the data for that key will be replaced. If it does not exist it will be added. An error will be generated if @@ -6766,14 +6766,14 @@ the database was not open for writing. <hr noshade size=1> <a name=Gdbm.fetch> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gdbm.fetch</tt> - fetch a value from the databse <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string fetch(string <I>key</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the data associated with the key 'key' in the database. If there was no such key in the database, zero is returned. <p> @@ -6783,14 +6783,14 @@ If there was no such key in the database, zero is returned. <hr noshade size=1> <a name=Gdbm.delete> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gdbm.delete</tt> - delete a value from the database <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int delete(string <I>key</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Remove a key from the database. Note that no error will be generated if the key does not exist. <p> @@ -6800,14 +6800,14 @@ if the key does not exist. <hr noshade size=1> <a name=Gdbm.firstkey> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gdbm.firstkey</tt> - get first key in database <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string firstkey();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the first key in the database, this can be any key in the database. <p> @@ -6817,18 +6817,18 @@ database. <hr noshade size=1> <a name=Gdbm.nextkey> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>nextkey</tt> - get next key in database <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string nextkey(string <I>key</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This returns the key in database that follows the key 'key' key. This is of course used to iterate over all keys in the database. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>/* Write the contents of the database */<br> for(key=gdbm->firstkey(); k; k=gdbm->nextkey(k))<br> <dl><dt><dd>write(k+":"+gdbm->fetch(k)+"\n");<br> @@ -6841,14 +6841,14 @@ for(key=gdbm->firstkey(); k; k=gdbm->nextkey(k))<br> <hr noshade size=1> <a name=Gdbm.reorganize> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gdbm.reorganize</tt> - reorganize database <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int reorganize();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Deletions and insertions into the database can cause fragmentation which will make the database bigger. This routine reorganizes the contents to get rid of fragmentation. Note however that this function @@ -6860,14 +6860,14 @@ can take a LOT of time to run. <hr noshade size=1> <a name=Gdbm.sync> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>sync</tt> - synchronize database <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void sync();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> When opening the database with the 'f' flag writings to the database can be cached in memory for a long time. Calling sync will write all such caches to disk and not return until everything is stored @@ -6893,10 +6893,10 @@ with an argument you write <tt>-t <i>argument</i></tt> or <tt>-t<i>argument</i>< <hr noshade size=1> <a name=Getopt.find_option> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Getopt.find_option</tt> - find command line options <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt><p>mixed find_option(string *argv,<br> <dl><dt><dd>string shortform,<br> string longform,<br> @@ -6904,7 +6904,7 @@ string envvar,<br> mixed def);<br> </dl></tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This is a generic function to parse command line options of the type '-f', '--foo' or '--foo=bar'. The first argument should be the array of strings that is sent as second argument to your @@ -6923,12 +6923,12 @@ argument find_option will print an error message and exit the program. arrays, in which case either of the options in the array will be accpted. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> find_option modifies argv.<br> This function reads options even if they are written after the first non-option on the line. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>int main(int argc, string *argv)<br> {<br> <dl><dt><dd>if(find_option(argv,"f","foo"))<br> @@ -6940,7 +6940,7 @@ find_option(argv,"b","bar","BAR_OPTION","default")+<br> </dl>}<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Getopt.get_args>Getopt.get_args</a> <p> </dl> @@ -6948,14 +6948,14 @@ find_option(argv,"b","bar","BAR_OPTION","default")+<br> <hr noshade size=1> <a name=Getopt.find_all_options> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Getopt.find_all_options</tt> - find command line options <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt><p>mixed * find_all_options(string *argv, mixed *option, int|void posix_me_harder);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function does the job of serveral calls to <tt>find_option</tt>. The main advantage of this is that it allows it to handle the POSIX_ME_HARDER environment variable better. When the either @@ -7016,10 +7016,10 @@ The <i>name</i> is the identifer from the input and <i>value</i> is the value given to it from the argument, environment variable or <i>default</i>. If no default is given, <i>value</i> will be 1. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> find_option modifies argv.<br> <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> First let's take a look at input and output: <pre> > Getopt.find_all_options(({"test","-dd"}), @@ -7056,7 +7056,7 @@ int main(int argc, string *argv } </pre> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Getopt.get_args>Getopt.get_args</a> <p> </dl> @@ -7064,14 +7064,14 @@ int main(int argc, string *argv <hr noshade size=1> <a name=Getopt.get_args> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Getopt.get_args</tt> - get the non-option arguments <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string *get_args(string *<I>argv</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the remaining command line arguments after you have run find_options to find all the options in the argument list. If there are any options left not handled by @@ -7079,7 +7079,7 @@ find_options an error message will be written and the program will exit. Otherwise a new 'argv' array without the parsed options is returned. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>int main(int argc, string *argv)<br> {<br> <dl><dt><dd>if(find_option(argv,"f","foo"))<br> @@ -7090,7 +7090,7 @@ werror("The arguments are: "+(argv*" ")+".\n");<br> </dl>}<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Getopt.find_option>Getopt.find_option</a> <p> </dl> @@ -7114,18 +7114,18 @@ files with these routines. Support for this will be added in the future. <p> <a name=Gz.deflate> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gz.deflate</tt> - string packer <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Gz.inflate is a builtin program written in C. It interfaces the packing routines in the libz library. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This program is only available if libz was available and found when Pike was compiled. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=Gz.inflate>Gz.inflate</a> <p> </dl> @@ -7134,16 +7134,16 @@ Pike was compiled. <hr noshade size=1> <a name=Gz.deflate.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gz.deflate->create</tt> - initialize packer <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void create(int X)<br> or<br> object(Gz.deflate) Gz.deflate(int X)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This functionion is called when a new Gz.deflate is created. If given, X should be a number from 0 to 9 indicating the packing / cpu ratio. Zero means no packing, 2-3 is considered 'fast', 6 is @@ -7156,14 +7156,14 @@ so it can be re-used. <hr noshade size=1> <a name=Gz.deflate.deflate> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gz.deflate->deflate</tt> - pack data <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string deflate(string <I>data</I>, int <I>flush</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function performs gzip style compression on a string and returns the packed data. Streaming can be done by calling this functon several time and concatenating the returned data. @@ -7193,7 +7193,7 @@ The optional 'flush' argument should be one f the following: used until the end of the data when FINISH should be used. For interactive data PARTIAL_FLUSH should be used. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Gz.inflate.inflate>Gz.inflate->inflate</a> <p> </dl> @@ -7202,18 +7202,18 @@ interactive data PARTIAL_FLUSH should be used. <hr noshade size=1> <a name=Gz.inflate> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gz.inflate</tt> - string unpacker <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Gz.inflate is a builtin program written in C. It interfaces the packing routines in the libz library. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This program is only available if libz was available and found when Pike was compiled. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Gz.deflate>Gz.deflate</a> <p> </dl> @@ -7222,16 +7222,16 @@ Pike was compiled. <hr noshade size=1> <a name=Gz.inflate.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gz.inflate->create</tt> - initialize unpacker <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void create()<br> or<br> object(Gz.inflate) Gz.inflate()<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This functionion is called when a new Gz.inflate is created. It can also be called after the object has been used to re-initialize it. @@ -7242,18 +7242,18 @@ it. <hr noshade size=1> <a name=Gz.inflate.inflate> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Gz.inflate->inflate</tt> - unpack data <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string inflate(string <I>data</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function performs gzip style decompression. It can inflate a whole file at once or in blocks. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>import Stdio;<br> // whole file<br> write(Gz.inflate()->inflate(stdin->read());<br> @@ -7264,7 +7264,7 @@ while(string s=stdin->read(8192))<br> <dl><dt><dd>write(inflate(s));<br> </dl></tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Gz.deflate.deflate>Gz.deflate->deflate</a> <p> </dl> @@ -7283,14 +7283,14 @@ distribute passwords and similar information within a network. <hr noshade size=1> <a name=Yp.default_yp_domain> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.default_yp_domain</tt> - get the default Yp domain <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string default_yp_domain()<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns the default yp-domain. <p> </dl> @@ -7300,14 +7300,14 @@ Returns the default yp-domain. <a name=Yp.YpDomain> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpDomain</tt> - class representing an Yp domain </p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object(Yp.YpDomain) Yp.YpDomain(string|void <i>domain</i>); </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This creates a new YpDomain object. <p> If there is no YP server available for the domain, this @@ -7323,13 +7323,13 @@ by Yp.default_yp_domain) <hr noshade size=1> <a name=Yp.YpDomain.bind> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpDomain->bind</tt> - bind this object to another domain <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void bind(string|void <i>domain</i>)</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Re-bind the object to another (or the same) domain. If no domain is given, the default domain will be used. <p> @@ -7339,13 +7339,13 @@ the default domain will be used. <hr noshade size=1> <a name=Yp.YpDomain.match> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.Ypdomain->match</tt> - match a key in a map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string match(string <i>map</i>, string <i>key</i>)</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> If 'map' does not exist, an error will be generated. Otherwise the string matching the key will be returned. If there is no such key in the map, 0 will be returned. @@ -7355,7 +7355,7 @@ the default domain will be used. just <tt>passwd</tt>. <i>key</i> is the key to search for. The key must match exactly, no pattern matching of any kind is done. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <pre> object dom = Yp.YpDomain(); write(dom->match("passwd.byname", "root")); @@ -7367,14 +7367,14 @@ write(dom->match("passwd.byname", "root")); <a name=Yp.YpDomain.all> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpDomain->all</tt> - return the whole map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping(string:string) all(string <i>map</i>)</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the whole map as a mapping. <i>map</i> is the YP-map to search in. This must be the full map name, you have to use <tt>passwd.byname</tt> instead of just <tt>passwd</tt>. @@ -7385,13 +7385,13 @@ write(dom->match("passwd.byname", "root")); <a name=Yp.YpDomain.map> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpDomain->map</tt> - call a function for each entry in an Yp map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void map(string <i>map</i>, function(string,string:void) <i>over</i>)</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> For each entry in 'map', call the function(s) specified by 'over'. Over will get two arguments, the first beeing the key, and the second the value. <i>map</i> is the YP-map to search in. @@ -7404,13 +7404,13 @@ write(dom->match("passwd.byname", "root")); <hr noshade size=1> <a name=Yp.YpDomain.server> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpDomain->server</tt> - find an Yp server <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string server(string <i>map</i>)</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the hostname of the server serving the map 'map'. <i>map</i> is the YP-map to search in. This must be the full map name, as an example, passwd.byname instead of just passwd. @@ -7421,13 +7421,13 @@ write(dom->match("passwd.byname", "root")); <a name=Yp.YpDomain.order> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpDomain->order</tt> - get the'order' for specified map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int order(string <i>map</i>)</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the 'order' number for the map map. This is usually a time_t (see the efun time()). When the map is changed, this number will change as well. <i>map</i> is @@ -7439,12 +7439,12 @@ write(dom->match("passwd.byname", "root")); <a name=Yp.YpMap> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpMap</tt> - class representing one Yp map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object(Yp.YpMap) Yp.Ypmap(string <i>map</i>, string|void <i>domain</i>)</tt> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This creates a new YpMap object. <p> If there is no YP server available for the domain, this @@ -7462,15 +7462,15 @@ write(dom->match("passwd.byname", "root")); <a name=Yp.YpMap.match> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpMap->match</tt> - find key in map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string match(string <i>key</i>)</tt><br> or<br> <tt>string <i>Yp.YpMap</i>[string <i>key</i>]</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Search for the key 'key'. If there is no 'key' in the map, 0 will be returned, otherwise the string matching the key will be returned. <i>key</i> is the key to search for. @@ -7483,15 +7483,15 @@ or<br> <a name=Yp.YpMap.all> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpMap->all</tt> - return the whole map as a mapping <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping(string:string) all();</tt><br> or<br> <tt>(mapping) <i>Yp.YpMap</i></tt><br> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the whole map as a mapping. </dl> </a> @@ -7499,13 +7499,13 @@ or<br> <p> <a name=Yp.YpMap.map> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpMap->map</tt> - call a function for each entry in the map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void map(function(string,string:void) <i>over</i>)</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> For each entry in the map, call the function(s) specified by 'over'. The function will be called like 'void over(string key, string value)' </dl> @@ -7514,13 +7514,13 @@ or<br> <a name=Yp.YpMap.server> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpMap->server</tt> - find what server servers this map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string server()</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the hostname of the server serving this map. </dl> </a> @@ -7528,13 +7528,13 @@ or<br> <p> <a name=Yp.YpMap.order> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpMap->order()</tt> - find the 'order' of this map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int order()</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the 'order' number for this map. This is usually a time_t (see the efun time()) </dl> @@ -7543,13 +7543,13 @@ or<br> <p> <a name=Yp.YpMap._sizeof> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpMap._sizeof</tt> - return the number of entries in the map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int sizeof(<i>Yp.YpMap</i>)</tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns the number of entries in the map. This is equivalent to <tt>sizeof((mapping)map);</tt> </dl> @@ -7559,15 +7559,15 @@ or<br> <a name=Yp.YpMap._indices> <a name=Yp.YpMap._values> <dl> -<dt><b><font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Yp.YpMap._indices</tt> - return the indices from the map<br> <tt>Yp.YpMap._values</tt> - return the values from the map <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> array(string) indices(<i>Yp.YpMap</i>)</br> array(string) values(<i>Yp.Ypmap</i>) <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the indices of the map. If indices is called first, values must be called immediately after. If values is called first, it is the other way around. @@ -7672,14 +7672,14 @@ containing raw uninterpreted data: <a name=MIME.decode> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.decode</tt> - Remove transfer encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string decode(string <i>data</i>, string <i>encoding</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Extract raw data from an encoded string suitable for transport between systems. The encoding can be any of <tt><ul> @@ -7692,7 +7692,7 @@ The encoding can be any of </ul></tt> The encoding string is not case sensitive. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.encode>MIME.encode</a> <p> </dl> @@ -7701,17 +7701,17 @@ The encoding string is not case sensitive. <hr newpage> <a name=MIME.decode_base64> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.decode_base64</tt> - Decode <tt>base64</tt> transfer encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string decode_base64(string <i>encoded_data</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function decodes data encoded using the <tt>base64</tt> transfer encoding. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.encode_base64>MIME.encode_base64</a> <p> </dl> @@ -7720,18 +7720,18 @@ This function decodes data encoded using the <tt>base64</tt> transfer encoding. <hr newpage> <a name=MIME.decode_qp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.decode_qp</tt> - Decode <tt>quoted-printable</tt> transfer encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string decode_qp(string <i>encoded_data</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function decodes data encoded using the <tt>quoted-printable</tt> (a.k.a. quoted-unreadable) transfer encoding. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.encode_qp>MIME.encode_qp</a> <p> </dl> @@ -7740,18 +7740,18 @@ This function decodes data encoded using the <tt>quoted-printable</tt> <hr newpage> <a name=MIME.decode_uue> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.decode_uue</tt> - Decode <tt>x-uue</tt> transfer encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string decode_uue(string <i>encoded_data</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function decodes data encoded using the <tt>x-uue</tt> transfer encoding. It can also be used to decode generic UUEncoded files. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.encode_uue>MIME.encode_uue</a> <p> </dl> @@ -7760,14 +7760,14 @@ It can also be used to decode generic UUEncoded files. <hr newpage> <a name=MIME.decode_word> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.decode_word</tt> - Descramble RFC1522 encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array(string) decode_word(string <i>word</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Extracts the textual content and character set from an <i>encoded word</i> as specified by RFC1522. The result is an array where the first element is the raw text, and the second element the name of the character set. @@ -7775,7 +7775,7 @@ If the input string is not an encoded word, the result is still an array, but the charset element will be set to 0. Note that this function can only be applied to individual encoded words. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <pre> > Array.map("=?iso-8859-1?b?S2lscm95?= was =?us-ascii?q?h=65re?="/" ", MIME.decode_word); @@ -7795,7 +7795,7 @@ Result: ({ /* 3 elements */ }) </pre> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.encode_word>MIME.encode_word</a> <p> </dl> @@ -7804,15 +7804,15 @@ Result: ({ /* 3 elements */ <hr newpage> <a name=MIME.encode> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.encode</tt> - Apply transfer encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string encode(string <i>data</i>, string <i>encoding</i>, void|string <i>filename</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Encode raw data into something suitable for transport to other systems. The encoding can be any of <tt><ul> @@ -7826,7 +7826,7 @@ The encoding can be any of The encoding string is not case sensitive. For the <tt>x-uue</tt> encoding, an optional filename string may be supplied. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.decode>MIME.decode</a> <p> </dl> @@ -7835,17 +7835,17 @@ an optional filename string may be supplied. <hr newpage> <a name=MIME.encode_base64> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.encode_base64</tt> - Encode string using <tt>base64</tt> transfer encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string encode_base64(string <i>data</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function encodes data using the <tt>base64</tt> transfer encoding. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.decode_base64>MIME.decode_base64</a> <p> </dl> @@ -7854,19 +7854,19 @@ This function encodes data using the <tt>base64</tt> transfer encoding. <hr newpage> <a name=MIME.encode_qp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.encode_qp</tt> - Encode string using <tt>quoted-printable</tt> transfer encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string encode_qp(string <i>data</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function encodes data using the <tt>quoted-printable</tt> (a.k.a. quoted-unreadable) transfer encoding. <strong>Please do not use this function. QP is evil, and there's no excuse for using it.</strong> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.decode_qp>MIME.decode_qp</a> <p> </dl> @@ -7875,21 +7875,21 @@ this function. QP is evil, and there's no excuse for using it.</strong> <hr newpage> <a name=MIME.encode_uue> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.encode_uue</tt> - Encode string using <tt>x-uue</tt> transfer encoding <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string encode_uue(string <i>encoded_data</i>, void|string <i>filename</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function encodes data using the <tt>x-uue</tt> transfer encoding. The optional argument filename specifies an advisory filename to include in the encoded data, for extraction purposes. This function can also be used to produce generic UUEncoded files. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.decode_uue>MIME.decode_uue</a> <p> </dl> @@ -7898,14 +7898,14 @@ This function can also be used to produce generic UUEncoded files. <hr newpage> <a name=MIME.encode_word> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.encode_word</tt> - Encode word according to RFC1522 <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string encode_word(array(string) <i>word</i>, string <i>encoding</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Create an <i>encoded word</i> as specified in RFC1522 from an array containing a raw text string and a charset name. The text will be transfer encoded according to the encoding argument, which can be either <tt>"base64"</tt> or @@ -7913,7 +7913,7 @@ according to the encoding argument, which can be either <tt>"base64"</tt> or short). If either the second element of the array (the charset name), or the encoding argument is 0, the raw text is returned as is. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <pre> > MIME.encode_word( ({ "Quetzalcoatl", "iso-8859-1" }), "base64" ); Result: =?iso-8859-1?b?UXVldHphbGNvYXRs?= @@ -7921,7 +7921,7 @@ Result: =?iso-8859-1?b?UXVldHphbGNvYXRs?= Result: Foo </pre> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.decode_word>MIME.decode_word</a> <p> </dl> @@ -7930,14 +7930,14 @@ Result: Foo <hr newpage> <a name=MIME.generate_boundary> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.generate_boundary</tt> - Create a suitable boundary string for multiparts <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string generate_boundary();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function will create a string that can be used as a separator string for multipart messages. The generated string is guaranteed not to appear in <tt>base64</tt>, <tt>quoted-printable</tt>, or <tt>x-uue</tt> encoded data. @@ -7951,14 +7951,14 @@ specified. <hr newpage> <a name=MIME.guess_subtype> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.guess_subtype</tt> - Provide a reasonable default for the subtype field <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string guess_subtype(string <i>type</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Some pre-RFC1521 mailers provide only a type and no subtype in the Content-Type header field. This function can be used to obtain a reasonable default subtype given type type of a message. Currently, @@ -7977,31 +7977,31 @@ the function uses the following guesses: <hr newpage> <a name=MIME.quote> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.quote</tt> - Create an RFC822 header field from lexical elements <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string quote(array(string|int) <i>lexical_elements</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is the inverse of the <a href=#tokenize>tokenize</a> function. A header field value is constructed from a sequence of lexical elements. Characters (<tt>int</tt>s) are taken to be special-characters, whereas strings are encoded as atoms or quoted-strings, depending on whether they contain any special characters. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <pre> > MIME.quote( ({ "attachment", ';', "filename", '=', "/usr/dict/words" }) ); Result: attachment;filename="/usr/dict/words" </pre> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> There is no way to constuct a domain-literal using this function. Neither can it be used to produce comments. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.tokenize>MIME.tokenize</a> <p> </dl> @@ -8010,14 +8010,14 @@ Neither can it be used to produce comments. <hr newpage> <a name=MIME.tokenize> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.tokenize</tt> - Separate an RFC822 header field into lexical elements <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array(string|int) tokenize(string <i>header</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> A structured header field, as specified by RFC822, is constructed from a sequence of lexical elements. These are: <ul> @@ -8033,7 +8033,7 @@ will be returned as characters (i.e. <tt>int</tt>s). Quoted-strings, domain-literals and atoms will be decoded and returned as strings. Comments are not returned in the array at all. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <pre> > MIME.tokenize("multipart/mixed; boundary=\"foo/bar\" (Kilroy was here)"); Result: ({ /* 7 elements */ @@ -8047,7 +8047,7 @@ Result: ({ /* 7 elements */ }) </pre> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> As domain-literals are returned as strings, there is no way to tell the domain-literal <tt>[127.0.0.1]</tt> from the quoted-string <tt>"[127.0.0.1]"</tt>. Hopefully this won't cause any problems. @@ -8057,7 +8057,7 @@ The set of special-characters is the one specified in RFC1521 (i.e. <tt>"<", ">", "@", ",", ";", ":", "\", "/", "?", "="</tt>), and not the one specified in RFC822. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.quote>MIME.quote</a> <p> </dl> @@ -8073,19 +8073,19 @@ specified in RFC822. <hr newpage> <a name=MIME.Message.body_parts> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->body_parts</tt> - Multipart submessages <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array(object) msg->body_parts;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> If the message is of type <tt>multipart</tt>, this is an array containing one Message object for each part of the message. If the message is not a multipart, this field is <tt>0</tt>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.type>MIME.Message.type</a>, <a href=#MIME.Message.boundary>MIME.Message.boundary</a> <p> @@ -8095,20 +8095,20 @@ multipart, this field is <tt>0</tt>. <hr newpage> <a name=MIME.Message.boundary> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.mesage->boundary</tt> - Boundary string for multipart messages <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string msg->boundary;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> For multipart messages, this <tt>Content-Type</tt> parameter gives a delimiter string for separating the individual messages. As multiparts are handled internally by the module, you should not need to access this field. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.setboundary>MIME.Message.setboundary</a> <p> </dl> @@ -8117,20 +8117,20 @@ field. <hr newpage> <a name=MIME.Message.charset> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->charset</tt> - Character encoding for text bodies <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string msg->charset;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> One of the possible parameters of the <tt>Content-Type</tt> header is the charset attribute. It determines the character encoding used in bodies of type text. If there is no <tt>Content-Type</tt> header, the value of this field is <tt>"us-ascii"</tt>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.type>MIME.Message->type</a> <p> </dl> @@ -8139,14 +8139,14 @@ field is <tt>"us-ascii"</tt>. <hr newpage> <a name=MIME.Message.disposition> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->disposition</tt> - Multipart subpart disposition <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string msg->disposition;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> The first part of the <tt>Content-Disposition</tt> header, hinting on how this part of a multipart message should be presented in an interactive application. If there is no <tt>Content-Disposition</tt> header, this @@ -8158,18 +8158,18 @@ field is <tt>0</tt>. <hr newpage> <a name=MIME.Message.disp_params> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->disp_params</tt> - Content-Disposition parameters <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array(string:string) msg->disp_params;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> A mapping containing all the additional parameters to the <tt>Content-Disposition</tt> header. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.setdisp_param>MIME.Message->setdisp_param</a>, <a href=#MIME.Message.get_filename>MIME.Message->get_filename</a> <p> @@ -8179,14 +8179,14 @@ A mapping containing all the additional parameters to the <hr newpage> <a name=MIME.Message.headers> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->headers</tt> - All header fields of the message <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt> mapping(string:string) msg->headers;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This mapping contains all the headers of the message. The key is the header name (in lower case) and the value is the header value. Although the mapping contains all headers, some particular headers get @@ -8201,7 +8201,7 @@ this mapping. These fields are currently: The contents of these fields can be accessed and/or modified through a set of variables and methods available for this purpose. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.type>MIME.Message->type</a>, <a href=#MIME.Message.subtype>MIME.Message->subtype</a>, <a href=#MIME.Message.charset>MIME.Message->charset</a>, @@ -8222,19 +8222,19 @@ of variables and methods available for this purpose. <hr newpage> <a name=MIME.Message.params> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->params</tt> - Content-Type parameters <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping(string:string) msg->params;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> A mapping containing all the additional parameters to the <tt>Content-Type</tt> header. Some of these parameters have fields of their own, which should be accessed instead of this mapping wherever applicable. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.charset>MIME.Message->charset</a>, <a href=#MIME.Message.boundary>MIME.Message->boundary</a>, <a href=#MIME.Message.setparam>MIME.Message->setparam</a> @@ -8245,20 +8245,20 @@ own, which should be accessed instead of this mapping wherever applicable. <hr newpage> <a name=MIME.Message.subtype> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->subtype</tt> - The subtype attribute of the Content-Type header <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string msg->subtype;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> The <tt>Content-Type</tt> header contains a type, a subtype, and optionally some parameters. This field contains the subtype attribute extracted from the header. If there is no <tt>Content-Type</tt> header, the value of this field is <tt>"plain"</tt>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.type>MIME.Message->type</a>, <a href=#MIME.Message.params>MIME.Message->params</a> <p> @@ -8268,21 +8268,21 @@ is <tt>"plain"</tt>. <hr newpage> <a name=MIME.Message.transfer_encoding> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->transfer_encoding</tt> - Body encoding method <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string msg->transfer_encoding;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> The contents of the <tt>Content-Transfer-Encoding</tt> header. If no <tt>Content-Transfer-Encoding</tt> header is given, this field is <tt>0</tt>. Transfer encoding and decoding is done transparantly by the module, so this field should be intrerresting only to applications wishing to do autoconversion of certain transfer encodings. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.setencoding>MIME.Message->setencoding</a> <p> </dl> @@ -8291,20 +8291,20 @@ of certain transfer encodings. <hr newpage> <a name=MIME.Message.type> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->type</tt> - The type attribute of the Content-Type header <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string msg->type;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> The <tt>Content-Type</tt> header contains a type, a subtype, and optionally some parameters. This field contains the type attribute extracted from the header. If there is no <tt>Content-Type</tt> header, the value of this field is <tt>"text"</tt>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.subtype>MIME.Message->subtype</a>, <a href=#MIME.Message.params>MIME.Message->params</a> <p> @@ -8319,14 +8319,14 @@ is <tt>"text"</tt>. <hr newpage> <a name=MIME.Message.cast> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->cast</tt> - Encode message into byte stream <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string (string )<i>MIME.Message</i>;<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Casting the message object to a string will yield a byte stream suitable for transmitting the message over protocols such as ESMTP and NNTP. The body will be encoded using the current transfer encoding, and subparts @@ -8334,7 +8334,7 @@ of a multipart will be collected recursively. If the message is a multipart and no boundary string has been set, one is generated using <a href=#generate_boundary>generate_boundary</a>. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <pre> > object msg = MIME.Message( "Hello, world!", ([ "MIME-Version" : "1.0", @@ -8350,7 +8350,7 @@ MIME-Version: 1.0 SGVsbG8sIHdvcmxkIQ== </pre> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.create>MIME.Message->create</a> <p> </dl> @@ -8359,10 +8359,10 @@ SGVsbG8sIHdvcmxkIQ== <hr newpage> <a name=MIME.Message.create> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->create</tt> - Create a Message object <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object MIME.Message(void | string <i>message</i>,<br> @@ -8372,7 +8372,7 @@ void | mapping(string:string) <i>headers</i>,<br> void | array(object) <i>parts</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> There are several ways to call the constructor of the Message class; <ul> <li>With zero arguments, you will get a dummy message without either headers @@ -8387,7 +8387,7 @@ message should be of type multipart, an array of Message objects constituting the subparts should be given as a third argument. </ul> <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <pre> > object msg = MIME.Message( "Hello, world!", ([ "MIME-Version" : "1.0", @@ -8397,7 +8397,7 @@ Result: object Result: iso-8859-1 </pre> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Messag.cast>MIME.Message->cast</a> <p> </dl> @@ -8406,19 +8406,19 @@ Result: iso-8859-1 <hr newpage> <a name=MIME.Message.getdata> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->getdata</tt> - Obtain raw body data <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string getdata();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This method returns the raw data of the message body entity. The <a href=#MIME.Message.type>type</a> and <a href=#MIME.Message.subtype>subtype</a> attributes indicate how this data should be interpreted. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.getencoded>MIME.Message->getencoded</a> <p> </dl> @@ -8427,18 +8427,18 @@ indicate how this data should be interpreted. <hr newpage> <a name=MIME.Message.getencoded> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->getencoded</tt> - Obtain encoded body data <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string getencoded();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This method returns the data of the message body entity, encoded using the current transfer encoding. You should never have to call this function. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.getdata>MIME.Message->getdata</a> <p> </dl> @@ -8447,21 +8447,21 @@ current transfer encoding. You should never have to call this function. <hr newpage> <a name=MIME.Message.get_filename> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->get_filename</tt> - Get supplied filename for body data <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string get_filename();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This method tries to find a suitable filename should you want to save the body data to disk. It will examine the <tt>filename</tt> attribute of the <tt>Content-Disposition</tt> header, and failing that the <tt>name</tt> attribute of the <tt>Content-Type</tt> header. If neither attribute is set, the method returns 0. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> An interactive application should always query the user for the actual filename to use. This method may provide a reasonable default though. <p> @@ -8471,19 +8471,19 @@ filename to use. This method may provide a reasonable default though. <hr newpage> <a name=MIME.Message.setboundary> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->setboundary</tt> - Set boundary parameter <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setboundary(string <i>boundary</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Sets the <tt>boundary</tt> parameter of the <tt>Content-Type</tt> header. This is equivalent of calling <tt>msg->setparam("boundary", <i>boundary</i>)</tt>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.setparam>MIME.Message->setparam</a> <p> </dl> @@ -8492,19 +8492,19 @@ This is equivalent of calling <hr newpage> <a name=MIME.Message.setcharset> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->setcharset</tt> - Set charset parameter <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setcharset(string <i>charset</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Sets the <tt>charset</tt> parameter of the <tt>Content-Type</tt> header. This is equivalent of calling <tt>msg->setparam("charset", <i>charset</i>)</tt>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.setparam>MIME.Message->setparam</a> <p> </dl> @@ -8513,20 +8513,20 @@ This is equivalent of calling <hr newpage> <a name=MIME.Message.setdata> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->setdata</tt> - Replace body data <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setdata(string <i>data</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Replaces the body entity of the data with a new piece of raw data. The new data should comply to the format indicated by the <a href=#type>type</a> and <a href=#subtype>subtype</a> attributes. Do not use this method unless you know what you are doing. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#></a> <p> </dl> @@ -8535,20 +8535,20 @@ Do not use this method unless you know what you are doing. <hr newpage> <a name=MIME.Message.setdisp_param> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->setdisp_param</tt> - Set Content-Disposition parameters <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setdisp_param(string <i>param</i>, string <i>value</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Set or modify the named parameter of the <tt>Content-Disposition</tt> header. A common parameters is e.g. <tt>filename</tt>. It is not allowed to modify the <tt>Content-Disposition</tt> header directly, please use this function instead. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.setparam>MIME.Message->setparam</a>, <a href=#MIME.Message.get_filename>MIME.Message->get_filename</a> <p> @@ -8558,21 +8558,21 @@ function instead. <hr newpage> <a name=MIME.Message.setencoding> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->setencoding</tt> - Set transfer encoding for message body <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setencoding(string <i>encoding</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Select a new transfer encoding for this message. The <tt>Content-Transfer-Encoding</tt> header will be modified accordningly, and subsequent calls to <tt>getencoded</tt> will produce data encoded using the new encoding. See <a href=#MIME.Message.encode>encode</a> for a list of valid encodings. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.getencoded>MIME.Message->getencoded</a> <p> </dl> @@ -8581,20 +8581,20 @@ encodings. <hr newpage> <a name=MIME.Message.setparam> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>MIME.Message->setparam</tt> - Set Content-Type parameters <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void setparam(string <i>param</i>, string <i>value</i>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Set or modify the named parameter of the <tt>Content-Type</tt> header. Common parameters include <tt>charset</tt> for text messages, and <tt>boundary</tt> for multipart messages. It is not allowed to modify the <tt>Content-Type</tt> header directly, please use this function instead. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#MIME.Message.setcharset>MIME.Message->setcharset</a>, <a href=#MIME.Message.setboundary>MIME.Message->setboundary</a>, <a href=#MIME.Message.setdisp_param>MIME.Message->setdisp_param</a> @@ -8624,14 +8624,14 @@ modules. In addition, these functions are available: <a name=Simulate.member_array> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.member_array</tt> - find first occurance of a value in an array <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int member_array(mixed <I>item</I>, mixed *<I>arr</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns the index of the first occurence of item in array arr. If not found, then -1 is returned. This is the same as <tt>search(<i>arr</i>, <i>item</i>)</tt>. @@ -8643,18 +8643,18 @@ If not found, then -1 is returned. This is the same as <a name=Simulate.previous_object> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.previous_object</tt> - return the calling object <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object previous_object();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns an object pointer to the object that called current function, if any. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#backtrace>bactrace</a> <p> </dl> @@ -8665,21 +8665,21 @@ if any. <a name=Simulate.this_function> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.this_function</tt> - return a functionpointer to the current function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>function this_function();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns a functionpointer to the current function, useful for making recursive lambda-functions. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_function.html>function</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#backtrace>backtrace</a> <p> </dl> @@ -8689,14 +8689,14 @@ making recursive lambda-functions. <a name=Simulate.get_function> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.get_function</tt> - fetch a function from an object <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>function get_function(object <I>o</I>, string <I>name</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Defined as: return o[name]; <p> </dl> @@ -8705,17 +8705,17 @@ Defined as: return o[name]; <hr newpage> <a name=Simulate.map_regexp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.map_regexp</tt> - filter an array through a regexp <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string *regexp(string *<I>arr</I>, string <I>reg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return those strings in arr that matches the regexp in reg. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Regexp>Regexp</a> <p> </dl> @@ -8725,18 +8725,18 @@ Return those strings in arr that matches the regexp in reg. <a name=Simulate.PI> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.PI</tt> - pi <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>PI<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This is not a function, it is a constant roughly equal to the mathimatical constant Pi. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float.html>float</a> <p> </dl> @@ -8746,17 +8746,17 @@ constant Pi. <a name=Simulate.all_efuns> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>all_efuns</tt> - return all 'efuns' <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping all_efuns();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is the same as all_constants. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#all_constants>all_constants</a> <p> </dl> @@ -8767,10 +8767,10 @@ This function is the same as all_constants. <a name=Simulate.filter_array> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.filter_array</tt> - filter an array through a function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt> <p>mixed *filter_array(mixed *<I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br> or<br> @@ -8779,13 +8779,13 @@ or<br> mixed *filter_array(function *<I>arr</I>,-<I>1</I>,mixed ... <I>args</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Filter array is the same function as Array.filter. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array.html>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Array.filter>Array.filter</a> <p> </dl> @@ -8794,10 +8794,10 @@ Filter array is the same function as Array.filter. <a name=Simulate.map_array> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.map_array</tt> - map an array over a function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *map_array(mixed *<I>arr</I>,function <I>fun</I>,mixed ... <I>args</I>);<br> or<br> mixed *map_array(object *<I>arr</I>,string <I>fun</I>,mixed ... <I>args</I>);<br> @@ -8805,13 +8805,13 @@ or<br> mixed *map_array(function *<I>arr</I>,-<I>1</I>,mixed ... <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is the same as Array.map. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array.html>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Array.map>Array.map</a> <p> </dl> @@ -8821,19 +8821,19 @@ This function is the same as Array.map. <a name=Simulate.implode> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.implode</tt> - implode an array of strings <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string implode(string *<I>a</I>, string <I>delimeter</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is the inverse of explode. It contatenates all the strings in a with a delimeter in between each. <p>This function is the same as multiplication. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>> implode( ({ "foo","bar","gazonk"}), "-" );<br> Result: foo-bar-gazonk<br> > ({ "a","b","c" })*" and ";<br> @@ -8841,10 +8841,10 @@ Result: a and b and c<br> > <br> </tt> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string.html>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Simulate.simulated_explode.html>Simulate.explode</a> <p> </dl> @@ -8855,20 +8855,20 @@ Result: a and b and c<br> <a name=Simulate.m_indices> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.m_indices</tt> - return all indices from a mapping <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *m_indices(mapping <I>m</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is equal to indices <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping.html>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=builtin_indices.html>indices</a> <p> </dl> @@ -8877,20 +8877,20 @@ This function is equal to indices <hr newpage> <a name=Simulate.m_sizeof> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.m_sizeof</tt> - Return the size of a mapping <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int m_sizeof(mapping <I>m</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is equal to sizeof. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping.html>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sizeof>sizeof</a> <p> </dl> @@ -8900,20 +8900,20 @@ This function is equal to sizeof. <hr newpage> <a name=Simulate.m_values> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.m_values</tt> - return all values from a mapping <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *m_values(mapping <I>m</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is equal to values <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping.html>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#values>values</a> <p> </dl> @@ -8923,21 +8923,21 @@ This function is equal to values <hr newpage> <a name=Simulate.strstr> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.strstr</tt> - find a string inside a string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int strstr(string <I>str1</I>,string <I>str2</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the position of str2 in str1, if str2 can't be found in str1 -1 is returned. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string.html>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sscanf>sscanf</a> and <a href=#Simulate.explode>Simulate.explode</a> <p> </dl> @@ -8947,10 +8947,10 @@ Return the position of str2 in str1, if str2 can't be found in str1 <hr newpage> <a name=Simulate.sum> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.sum</tt> - add values together <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt> <p>int sum(int ... <I>i</I>);<br> or<br> @@ -8965,7 +8965,7 @@ or<br> list sum(multiset ... <I>l</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function does exactly the same thing as adding all the arguments together with +. It's just here so you can get a function-pointer to the summation operator. @@ -8977,19 +8977,19 @@ the summation operator. <hr newpage> <a name=Simulate.add_efun> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.add_efun</tt> - add an efun or constant <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void add_efun(string func_name, mixed function)<br> or<br> void add_efun(string func_name)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is the same as add_constant. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#add_constant>Simulate.add_constant</a> <p> </dl> @@ -8998,17 +8998,17 @@ This function is the same as add_constant. <hr newpage> <a name=Simulate.l_sizeof> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.l_sizeof</tt> - Return the size of a multiset <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int l_sizeof(multiset <I>m</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is equal to sizeof. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sizeof>sizeof</a> <p> </dl> @@ -9017,17 +9017,17 @@ This function is equal to sizeof. <hr newpage> <a name=Simulate.listp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.listp</tt> - is the argument a list? (multiset) <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int listp(mixed l)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is the same as multisetp. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#multisetp>Simulate.multisetp</a> <p> </dl> @@ -9037,17 +9037,17 @@ This function is the same as multisetp. <hr newpage> <a name=Simulate.mklist> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.mklist</tt> - make a multiset <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>multiset mklist(mixed *a)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function creates a multiset from an array. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>> mklist( ({1,2,3}) );<br> Result: (< /* 3 elements */<br> <dl><dt><dd>1,<br> @@ -9056,7 +9056,7 @@ Result: (< /* 3 elements */<br> </dl>>)<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#aggregage_multiset>aggregate_multiset</a> <p> </dl> @@ -9066,17 +9066,17 @@ Result: (< /* 3 elements */<br> <hr newpage> <a name=Simulate.aggregage_list> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.aggregage_list</tt> - aggregate a multiset <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>multiset aggregage_list(mixed ... <I>args</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is exactly the same as aggregate_multiset. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#aggregage_multiset>aggregate_multiset</a> <p> </dl> @@ -9086,14 +9086,14 @@ This function is exactly the same as aggregate_multiset. <hr newpage> <a name=Simulate.query_host_name> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>Simulate.query_host_name</tt> - return the name of the host we are running on <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string query_host_name();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the name of the machine the interpreter is running on. This is the same thing that the command 'hostname' prints. @@ -9133,11 +9133,11 @@ what it can do: <hr noshade size=1> <dl> -<dt><b> <font size=+1>D</font><font size=-1>IRECTIVE</font></b><dd> +<dt><encaps>DIRECTIVE</encaps><dd> <tt>#!<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This directive is in effect a comment statement, since the preprocessor will ignore everything to the end of the line. This is used to write unix type scripts in Pike by starting @@ -9150,11 +9150,11 @@ the script with <hr noshade size=1> <a name=define> <dl> -<dt><b> <font size=+1>D</font><font size=-1>IRECTIVE</font></b><dd> +<dt><encaps>DIRECTIVE</encaps><dd> <tt>#define<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> The simplest way to use define is to write <p><dl><dt><dd>#define <identifier> <replacement string><br> </dl> @@ -9168,13 +9168,13 @@ replaced with the replacement string. the replacement string. And in the replacement string, arg1 and arg2 will be replaced with something1 and something2. <p> -<dt><b> <font size=+1>B</font><font size=-1>UGS</font></b><dd> +<dt><encaps>BUGS</encaps><dd> Note that it is not a good idea to do something like this: <p>#define foo bar // a comment <p>The comment will be included in the define, and thus inserted in the code. This will have the effect that the rest of the line will be ignored when the word foo is used. Not exactly what you might expect. -<dt><b><font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <pre> #define A "test" #define B 17 @@ -9193,17 +9193,17 @@ int main() <hr noshade size=1> <a name=undef> <dl> -<dt><b> <font size=+1>D</font><font size=-1>IRECTIVE</font></b><dd> +<dt><encaps>DIRECTIVE</encaps><dd> <tt>#undef<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This removes the effect of a #define, all subsequent occurances of the undefined identifier will not be replaced by anything. Note that when undefining a macro, you just give the identifer, not the arguments. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>#define foo bar<br> #undef foo<br> #define foo(bar) gazonk bar<br> @@ -9220,7 +9220,7 @@ arguments. <a name=else> <a name=endif> <dl> -<dt><b> <font size=+1>D</font><font size=-1>IRECTIVE</font></b><dd> +<dt><encaps>DIRECTIVE</encaps><dd> <tt>#if<br> #elif<br> #elseif<br> @@ -9228,7 +9228,7 @@ arguments. #endif<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> The #if directive causes conditional compiling of code depending on the expression after the #if directive. That is, if the expression is true, the code up to the next #else, #elif, #elseif or #endif is @@ -9246,7 +9246,7 @@ defined(<identifer>) expands to '1' if the identifier is defined, '0' otherwise. constant(<identifier>) expands to '1' if identifer is an predefined constant (with add_constant), '0' otherwise. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>#if 1<br> <dl><dt><dd>write("foo");<br> </dl>#else<br> @@ -9276,15 +9276,15 @@ inherit "simulate.pike"<br> <hr noshade size=1> <a name=error> <dl> -<dt><b> <font size=+1>D</font><font size=-1>IRECTIVE</font></b><dd> +<dt><encaps>DIRECTIVE</encaps><dd> <tt>#error<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This directive causes a compiler error, it can be used to notify the user that certain functions are missing and similar things. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>#if !constant(write_file)<br> #error write_file efun is missing<br> #endif<br> @@ -9297,16 +9297,16 @@ the user that certain functions are missing and similar things. <hr noshade size=1> <a name=include> <dl> -<dt><b> <font size=+1>D</font><font size=-1>IRECTIVE</font></b><dd> +<dt><encaps>DIRECTIVE</encaps><dd> <tt>#include<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This directive should be given a file as argument, it will then be compiled as if all those lines were written at the #include line. The compiler then continues to compile this file. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>#include "foo.h"<br> <br> </tt> @@ -9317,11 +9317,11 @@ The compiler then continues to compile this file. <hr noshade size=1> <a name=line> <dl> -<dt><b> <font size=+1>D</font><font size=-1>IRECTIVE</font></b><dd> +<dt><encaps>DIRECTIVE</encaps><dd> <tt>#line<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This directive tells the compiler what line and file we are compiling. This is for instance used by the #include directive to tell the compiler that we are compiling another file. The directive takes @@ -9329,7 +9329,7 @@ the line number first, and optionally, the file afterwards. <p>This can also be used when generating pike from something else, to tell teh compiler where the code originally originated from. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>#line 4 "foo.cf" /* The next line was generated from 4 in foo.cf */<br> <br> </tt> @@ -9340,11 +9340,11 @@ tell teh compiler where the code originally originated from. <hr noshade size=1> <a name=pragma> <dl> -<dt><b> <font size=+1>D</font><font size=-1>IRECTIVE</font></b><dd> +<dt><encaps>DIRECTIVE</encaps><dd> <tt>#pragma<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This is a generic directive for flags to the compiler. Currently, the only flag available is 'all_inline' which is the same as adding the modifier 'inline' to all functions that follows. @@ -9358,7 +9358,7 @@ modifier 'inline' to all functions that follows. </chapter> -<chapter title="All the builtin functions"> +<chapter title="All the builtin functions" alias=functions> This chapter is a reference for all the builtin functions in pike. They are listed in alphabetical order. @@ -9366,20 +9366,20 @@ They are listed in alphabetical order. <HR NEWPAGE> <a name=_memory_usage> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>_memory_usage</tt> - check memory usage <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping(string:int) <I>_memory_usage</I>();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is mostly intended for debugging. It delivers a mapping with information about how many arrays/mappings/strings etc. there are currently allocated and how much memory they use. Try evaluating the function in hilfe to see precisly what it returns. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#_verify_internals>_verify_internals</a> <p> </dl> @@ -9389,19 +9389,19 @@ the function in hilfe to see precisly what it returns. <HR NEWPAGE> <a name=_next> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>_next</tt> - find the next object/array/whatever <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed _next(mixed <I>p</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the 'next' object/array/mapping/string/etc in the linked list. It is mainly meant for debugging Pike but can also be used to control memory usage. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#next_object>next_object</a> and <a href=#_prev>_prev</a> <p> </dl> @@ -9410,20 +9410,20 @@ can also be used to control memory usage. <HR NEWPAGE> <a name=_prev> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>_prev</tt> - find the previous object/array/whatever <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed _next(mixed <I>p</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the 'previous' object/array/mapping/etc in the linked list. It is mainly meant for debugging Pike but can also be used to control memory usage. Note that this function does not work on strings. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#_next>_next</a> <p> </dl> @@ -9432,21 +9432,21 @@ does not work on strings. <HR NEWPAGE> <a name=_refs> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>_refs</tt> - find out how many references a pointer type value has <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int _refs(string|array|mapping|multiset|function|object|program <I>o</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function checks how many references the value <i>o</i> has. Note that the number of references will always be at least one since it the value is located on the stack when this function is executed. _refs() is mainly meant for debugging Pike but can also be used to control memory usage. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#_next>_next</a> and <a href=#_prev>_prev</a> <p> </dl> @@ -9455,19 +9455,19 @@ can also be used to control memory usage. <HR NEWPAGE> <a name=_verify_internals> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>_verify_internals</tt> - check Pike internals <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void _verify_internals();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function goes through most of the internal Pike structures and generates a fatal error if one of them is found to be out of order. It is only used for debugging. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> debugging <p> </dl> @@ -9476,20 +9476,20 @@ debugging <HR NEWPAGE> <a name=acos> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>acos</tt> - Trigonometrical inverse cosine <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float acos(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the arcus cosinus value for f. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_cos>cos</a> and <a href=math_asin>asin</a> <p> </dl> @@ -9498,16 +9498,16 @@ Return the arcus cosinus value for f. <HR NEWPAGE> <a name=add_constant> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>add_constant</tt> - add new predefined functions or constants <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void add_constant(string <I>name</I>, mixed <I>value</I>);<br> or<br> void add_constant(string <I>name</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function adds a new constant to Pike, it is often used to add builin functions (efuns). All programs compiled after add_constant function is called can access 'value' by the name given by 'name'. @@ -9521,7 +9521,7 @@ by the new definition. This will not affect already compiled programs. </dl>programs.<br> <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>add_constant("true",1);<br> add_constant("false",0);<br> add_constant("PI",4.0);<br> @@ -9529,7 +9529,7 @@ add_constant("sqr",lambda(mixed x) { return x * x; });<br> add_constant("add_constant");<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#all_constants>all_constants</a> <p> </dl> @@ -9538,20 +9538,20 @@ add_constant("add_constant");<br> <HR NEWPAGE> <a name=add_include_path> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>add_include_path</tt> - add a directory to search for include files <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void add_include_path(string <I>path</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function adds another directory to the search for include files. This is the same as the command line option <tt>-I</tt>. Note that the added directory will only be searched when using < > to quote the included file. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#remove_include_path>remove_include_path</a> and <a href=#include>#include</a> <p> </dl> @@ -9560,19 +9560,19 @@ quote the included file. <HR NEWPAGE> <a name=add_module_path> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>add_module_path</tt> - add a directory to search for modules <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void add_module_path(string <I>path</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function adds another directory to the search for modules. This is the same as the command line option <tt>-M</tt>. For more -more information about modules, see chapter XXXXX. <!--- FIXME ---> +more information about modules, see <link to=modules>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#remove_module_path>remove_module_path</a> <p> </dl> @@ -9581,19 +9581,19 @@ more information about modules, see chapter XXXXX. <!--- FIXME ---> <HR NEWPAGE> <a name=add_program_path> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>add_program_path</tt> - add a directory to search for modules <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void add_program_path(string <I>path</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function adds another directory to the search for programs. This is the same as the command line option <tt>-P</tt>. For more -more information about modules, see chapter XXXXX. <!--- FIXME ---> +more information about programs, see <link to=programs>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#remove_program_path>remove_program_path</a> <p> </dl> @@ -9602,29 +9602,29 @@ more information about modules, see chapter XXXXX. <!--- FIXME ---> <HR NEWPAGE> <a name=aggregate> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>aggregate</tt> - construct an array <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *aggregate(mixed ... <I>elems</I>);<br> or<br> ({ elem1, elem2, ... })<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Construct an array with the arguments as indices. This function could be written in Pike as: <p>mixed *aggregate(mixed ... elems) { return elems; } <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> Arrays are dynamically allocated there is no need to declare them like int a[10]=allocate(10); (and it isn't possible either) like in C, just int *a=allocate(10); will do. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sizeof>sizeof</a>, <a href=#arrayp>arrayp</a> and <a href=#allocate>allocate</a> <p> </dl> @@ -9633,24 +9633,24 @@ in C, just int *a=allocate(10); will do. <HR NEWPAGE> <a name=aggregate_mapping> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>aggregate_mapping</tt> - construct a mapping <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping aggregate_mapping(mixed ... <I>elems</I>);<br> or<br> ([ key1:val1, key2:val2, ... ])<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Groups the arguments together two and two to key-index pairs and creates a mapping of those pairs. The second syntax is always preferable. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sizeof>sizeof</a>, <a href=#mappingp>mappingp</a> and <a href=#mkmapping>mkmapping</a> <p> </dl> @@ -9659,26 +9659,26 @@ preferable. <HR NEWPAGE> <a name=aggregate_multiset> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>aggregate_multiset</tt> - construct a multiset <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>multiset aggregate_multiset(mixed ... <I>elems</I>);<br> or<br> (< elem1, elem2, ... >)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Construct an multiset with the arguments as indexes. This function could be written in Pike as: <p>multiset aggregate(mixed ... elems) { return mkmultiset(elems); } <p>The only problem is that mkmultiset is implemented using aggregage_multiset... <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_multiset>multiset</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sizeof>sizeof</a>, <a href=#multisetp>multisetp</a> and <a href=simulated_mkmultiset>mkmultiset</a> <p> </dl> @@ -9687,25 +9687,25 @@ aggregage_multiset... <HR NEWPAGE> <a name=alarm> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>alarm</tt> - set an alarm clock for delivery of a signal <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int alarm(int <I>seconds</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> alarm arranges for a SIGALRM signal to be delivered to the process in seconds seconds. <p>If seconds is zero, no new alarm is scheduled. <p>In any event any previously set alarm is cancelled. <p> -<dt><b> <font size=+1>R</font><font size=-1>ETURN</font> <font size=+1>V</font><font size=-1>ALUE</font></b><dd> +<dt><encaps>RETURN VALUE</encaps><dd> alarm returns the number of seconds remaining until any previously scheduled alarm was due to be delivered, or zero if there was no previously scheduled alarm. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#signal>signal</a> <p> </dl> @@ -9714,18 +9714,18 @@ zero if there was no previously scheduled alarm. <HR NEWPAGE> <a name=all_constants> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>all_constants</tt> - return all predefined constants <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping (string:mixed) <I>all_constant</I>();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return a mapping containing all constants, indexed on the names of the constant, and with the value of the efun as argument. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#add_constant>add_constant</a> <p> </dl> @@ -9734,29 +9734,29 @@ constant, and with the value of the efun as argument. <HR NEWPAGE> <a name=allocate> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>allocate</tt> - allocate an array <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *allocate(int <I>size</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Allocate an array of size elements and initialize them to zero. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>mixed *a=allocate(17);<br> </tt> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> Arrays are dynamically allocated there is no need to declare them like int a[10]=allocate(10); (and it isn't possible either) like in C, just int *a=allocate(10); will do. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sizeof>sizeof</a>, <a href=#aggregate>aggregate</a> and <a href=#arrayp>arrayp</a> <p> </dl> @@ -9765,20 +9765,20 @@ in C, just int *a=allocate(10); will do. <HR NEWPAGE> <a name=arrayp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>arrayp</tt> - is the argument an array? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int arrayp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is an array, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#allocate>allocate</a>, <a href=#intp>intp</a>, <a href=#programp>programp</a>, <a href=#floatp>floatp</a>, <a href=#stringp>stringp</a>, <a href=#objectp>objectp</a>, <a href=#mappingp>mappingp</a>, <a href=#multisetp>multisetp</a> and <a href=#functionp>functionp</a> <p> </dl> @@ -9787,20 +9787,20 @@ Returns 1 if arg is an array, zero otherwise. <HR NEWPAGE> <a name=asin> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>asin</tt> - Trigonometrical inverse sine <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float asin(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the arcus sinus value for f. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_sin>sin</a> and <a href=math_acos>acos</a> <p> </dl> @@ -9809,20 +9809,20 @@ Return the arcus sinus value for f. <HR NEWPAGE> <a name=atan> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>atan</tt> - Trigonometrical inverse tangent <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float atan(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the arcus tangent value for f. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_tan>tan</a>, <a href=math_asin>asin</a> and <a href=math_acos>acos</a> <p> </dl> @@ -9831,14 +9831,14 @@ Return the arcus tangent value for f. <HR NEWPAGE> <a name=backtrace> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>backtrace</tt> - get a description of the call stack <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *backtrace();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns a description of the call stack at this moment. The description is returned in an array with one entry for each call in the stack. Each entry has this format: @@ -9854,7 +9854,7 @@ in the stack. Each entry has this format: <p>The current call frame will be last in the array, and the one above that the last but one and so on. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=pike_control_structures_catch>catch</a> and <a href=#throw>throw</a> <p> </dl> @@ -9863,25 +9863,25 @@ that the last but one and so on. <HR NEWPAGE> <a name=call_function> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>call_function</tt> - call a function with arguments <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed call_function(function <I>fun</I>,mixed ... <I>args</I>);<br> or<br> mixed fun ( mixed ... <I>args</I> );<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function takes a a function pointer as first argument and calls this function with the rest of the arguments as arguments. Normally, you will never have to write call_function(), because you will use the second syntax instead. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_function>function</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#backtrace>backtrace</a> and <a href=simulated_get_function>get_function</a> <p> </dl> @@ -9890,20 +9890,20 @@ second syntax instead. <HR NEWPAGE> <a name=call_out> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>call_out</tt> - make a delayed call to a function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed call_out(function <I>f</I>, int <I>delay</I>, mixed ... <I>args</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Call_out places a call to the function f with the argument args in a queue to be called in about delay seconds. The return value identifies this call out. The return value can be sent to find_call_out or remove_call_out to remove the call out again. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=call_out_remove_call_out>remove_call_out</a>, <a href=call_out_find_call_out>find_call_out</a> and <a href=call_out_call_out_info>call_out_info</a> <p> </dl> @@ -9912,14 +9912,14 @@ find_call_out or remove_call_out to remove the call out again. <HR NEWPAGE> <a name=call_out_info> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>call_out_info</tt> - get info about all call outs <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed **call_out_info();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns an array with one entry for each entry in the call out queue. The first in the queue will be in index 0. Each index contains an array that looks like this: @@ -9935,7 +9935,7 @@ contains an array that looks like this: </dl>})<br> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=call_out_call_out>call_out</a>, <a href=call_out_find_call_out>find_call_out</a> and <a href=call_out_remove_call_out>remove_call_out</a> <p> </dl> @@ -9944,13 +9944,13 @@ contains an array that looks like this: <HR NEWPAGE> <a name=_do_call_outs> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>_do_call_outs</tt> - do all pending call_outs. -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void _do_call_out();</tt> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> <dd> This function runs all pending call_outs that should have been run if pike returned to the backend. It should not be used in normal operation. @@ -9958,7 +9958,7 @@ contains an array that looks like this: As a side-effect, this function sets the value returned by <tt>time(1)</tt> to the current time. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=call_out_call_out>call_out</a>, <a href=call_out_find_call_out>find_call_out</a> and <a href=call_out_remove_call_out>remove_call_out</a> <p> </dl> @@ -9967,24 +9967,24 @@ contains an array that looks like this: <HR NEWPAGE> <a name=catch> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>catch</tt> - catch errors <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>catch { commands }<br> or<br> catch ( expression )<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> catch traps exceptions such as run time errors or calls to throw() and returns the argument given to throw. For a run time error, this value is ({ "error message", backtrace }) <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#control>control</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#throw>throw</a> <p> </dl> @@ -9993,21 +9993,21 @@ is ({ "error message", backtrace }) <HR NEWPAGE> <a name=cd> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>cd</tt> - change directory <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int cd(string <I>s</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Change the current directory for the whole Pike process, return 1 for success, 0 otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_getcwd>getcwd</a> <p> </dl> @@ -10016,21 +10016,21 @@ Change the current directory for the whole Pike process, return <HR NEWPAGE> <a name=ceil> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>ceil</tt> - Truncate a number upward <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float ceil(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the closest integral value higher or equal to x. Note that ceil() does _not_ return an int, merely an integral value. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_floor>floor</a> <p> </dl> @@ -10040,25 +10040,25 @@ Note that ceil() does _not_ return an int, merely an integral value. <a name=clone> <a name=new> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>clone</tt> - clone an object from a program <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object clone(program <I>p</I>,mixed ... <I>args</I>);</tt><br> or<br> <tt>object new(program <I>p</I>,mixed ... <I>args</I>);</tt><br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> new() or clone() creates an object from the program p. Or in C++ terms: It creates an instance of the class p. This clone will first have all global variables initalized, and then create() will be called with args as arguments. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_object>object</a> and <a href=types_program>program</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#destruct>destruct</a>, <a href=#compile_string>compile_string</a> and <a href=#compile_file>compile_file</a> <p> </dl> @@ -10068,24 +10068,24 @@ with args as arguments. <HR NEWPAGE> <a name=column> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>column</tt> - extract a column <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array column(mixed *data,mixed index)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is exactly equivialent to: <p>map_array(index,lambda(mixed x,mixed y) { return x[y]; },data) <p>Except of course it is a lot shorter and faster. That is, it indexes every index in the array data on the value of the argument index and returns an array with the results. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#rows>rows</a> <p> </dl> @@ -10094,19 +10094,19 @@ the argument index and returns an array with the results. <HR NEWPAGE> <a name=combine_path> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>combine_path</tt> - concatenate paths <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string combine_path(string <I>absolute</I>, string <I>relative</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Concatenate a relative path to an absolute path and remove any "//", "/.." or "/." to produce a straightforward absolute path as a result. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>> combine_path("/foo/bar/","..");<br> Result: /foo<br> > combine_path("/foo/bar/","../apa.c");<br> @@ -10115,10 +10115,10 @@ Result: /foo/apa.c<br> Result: /foo/bar/sune.c<br> </tt> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_getcwd>getcwd</a> <p> </dl> @@ -10127,21 +10127,21 @@ Result: /foo/bar/sune.c<br> <HR NEWPAGE> <a name=compile_file> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>compile_file</tt> - compile a file to a program <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>program compile_file(string <I>filename</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function will compile the filename to an Pike program that can later be used for cloning. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_program>program</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#clone>clone</a> and <a href=#compile_string>compile_string</a> <p> </dl> @@ -10150,23 +10150,23 @@ later be used for cloning. <HR NEWPAGE> <a name=compile_string> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>compile_string</tt> - compile a string to a program <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>program compile_string(string <I>prog</I>, string <I>name</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Compile_string takes a complete Pike program as an argument in a the string prog and compiles it to clonable program. The second argument will be used as the file name of the program and will be used for error messages and such. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_program>program</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#compile_string>compile_string</a> and <a href=#clone>clone</a> <p> </dl> @@ -10175,21 +10175,21 @@ error messages and such. <HR NEWPAGE> <a name=copy_value> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>copy_value</tt> - copy a value recursively <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed copy_value(mixed <I>value</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Copy value will copy the value given to it recursively. If the result value is changed destructively (only possible for multisets, arrays and mappings) the copied value will not be changed. The resulting value will always be equal to the copied (tested with the efun equal), but they may not the the same value. (tested with ==) <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#equal>equal</a> <p> </dl> @@ -10198,20 +10198,20 @@ they may not the the same value. (tested with ==) <HR NEWPAGE> <a name=cos> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>cos</tt> - Trigonometrical cosine <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float cos(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the cosinus value for f. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_acos>acos</a> and <a href=math_sin>sin</a> <p> </dl> @@ -10220,16 +10220,16 @@ Return the cosinus value for f. <HR NEWPAGE> <a name=crypt> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>crypt</tt> - crypt a password <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string crypt(string <I>password</I>);<br> or<br> int crypt(string <I>typed_password</I>, string <I>crypted_password</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function crypts and verifies a short string. (normally only the first 8 characters are significant) The first syntax crypts the string password into something that is hopefully hard to decrypt, @@ -10237,14 +10237,14 @@ and the second function crypts the first string and verifies that the crypted result matches the second argument and returns 1 if they matched, 0 otherwise. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>To crypt a password use:<br> <dl><dt><dd>crypted_password = crypt(typed_password);<br> </dl>To see if the same password was used again use:<br> <dl><dt><dd>matched = crypt(typed_password, crypted_password);<br> </dl> </tt> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a> <p> </dl> @@ -10253,23 +10253,23 @@ matched, 0 otherwise. <HR NEWPAGE> <a name=ctime> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>ctime</tt> - convert time int to readable date string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string ctime(int <I>current_time</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Convert the output from a previous call to time() into a readable string containing the currnent year, month, day and time. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>> ctime(time());<br> Result: Wed Jan 14 03:36:08 1970<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#time>time</a> <p> </dl> @@ -10278,18 +10278,18 @@ Result: Wed Jan 14 03:36:08 1970<br> <HR NEWPAGE> <a name=decode_value> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>decode_value</tt> - code a value into a string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed denode_value(mixed <I>value</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function takes a string created with encode_value() and converts it back to the value that was coded. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#encode_value>encode_value</a> <p> </dl> @@ -10298,19 +10298,19 @@ it back to the value that was coded. <HR NEWPAGE> <a name=describe_backtrace> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>describe_backtrace</tt> - make a backtrace readable <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string describe_backtrace(mixed **<I>backtrace</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Describe backtrace returns a string containing a readable message that describes where the backtrace was made. The argument 'backtrace' should normally be the return value from a call to backtrace() <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#backtrace>backtrace</a> <p> </dl> @@ -10319,23 +10319,23 @@ should normally be the return value from a call to backtrace() <HR NEWPAGE> <a name=destruct> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>destruct</tt> - destruct an object <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void destruct(object <I>o</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Destruct marks an object as destructed, all pointers and function pointers to this object will become zero. The destructed object will be freed from memory as soon as possible. This will also call o->destroy. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_object>object</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#clone>clone</a> <p> </dl> @@ -10344,14 +10344,14 @@ o->destroy. <HR NEWPAGE> <a name=encode_value> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>encode_value</tt> - code a value into a string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string encode_value(mixed <I>value</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function takes a value, and converts it to a string. This string can then be saved, sent to another Pike process, packed or used in any way you like. When you want your value back you simply send this @@ -10361,7 +10361,7 @@ Almost any value can be coded, mappings, floats, arrays, circular structures etc. At present, objects, programs and functions cannot be saved in this way. This is being worked on. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#encode_value>decode_value</a> and <a href=#sprintf>sprintf</a> <p> </dl> @@ -10370,21 +10370,21 @@ saved in this way. This is being worked on. <HR NEWPAGE> <a name=equal> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>equal</tt> - check if two values are equal or not <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int equal(mixed <I>a</I>, mixed <I>b</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function checks if the values a and b are equal. For all types but arrays, multisets and mappings, this operation is the same as doing a == b. For arrays, mappings and multisets however, their contents are checked recursively, and if all their contents are the same and in the same place, they are considered equal. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>> ({ 1 }) == ({ 1 });<br> Result: 0<br> > equal( ({ 1 }), ({ 1 }) );<br> @@ -10392,7 +10392,7 @@ Result: 1<br> > <br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#copy_value>copy_value</a> <p> </dl> @@ -10401,19 +10401,19 @@ Result: 1<br> <HR NEWPAGE> <a name=errno> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>errno</tt> - return system error number <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int errno();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the system error from the last file operation. Note that you should normally use the function errno in the file object instead. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_errno>errno</a> <p> </dl> @@ -10422,16 +10422,16 @@ object instead. <HR NEWPAGE> <a name=exece> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>exece</tt> - execute a program <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int exece(string <I>file</I>, string *<I>args</I>);<br> or<br> int exece(string <I>file</I>, string *<I>args</I>, mapping(string:string) <I>env</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function transforms the Pike process into a process running the program specified in the argument 'file' with the argument 'args'. If the mapping 'env' is present, it will completely replace all @@ -10439,17 +10439,17 @@ environment variables before the new program is executed. This function only returns if something went wrong during exece(), and in that case it returns zero. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> The Pike driver _dies_ when this function is called. You must use fork() if you wish to execute a program and still run the Pike driver. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>exece("/bin/ls", ({"-l"}));<br> exece("/bin/sh", ({"-c", "echo $HOME"}), (["HOME":"/not/home"]));<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_fork>fork</a> and <a href=files_file#pipe>file->pipe</a> <p> </dl> @@ -10458,14 +10458,14 @@ exece("/bin/sh", ({"-c", "echo $HOME"}), (["HOME":"/not/home"]));<br> <HR NEWPAGE> <a name=exit> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>exit</tt> - exit Pike interpreter <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void exit(int <I>returncode</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function exits the whole 'pike' program with the return code given. Using exit() with any other value than 0 indicates that something went wrong during execution. See your system manuals for @@ -10478,21 +10478,21 @@ more information about return codes. <HR NEWPAGE> <a name=exp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>exp</tt> - Natural exponent <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float exp(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the natural exponent of f. log( exp( x ) ) == x as long as exp(x) doesn't overflow an int. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_pow>pow</a> and <a href=math_log>log</a> <p> </dl> @@ -10501,10 +10501,10 @@ log( exp( x ) ) == x as long as exp(x) doesn't overflow an int. <HR NEWPAGE> <a name=file_stat> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>file_stat</tt> - stat a file <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int *file_stat(string <I>file</I>);<br> or<br> int *file_stat(string <I>file</I>, <I>1</I>);<br> @@ -10512,7 +10512,7 @@ or<br> int *file->stat();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> file_stat returns an array of integers describing some properties<br> about the file. Currently file_stat returns 7 entries:<br> ({<br> @@ -10531,10 +10531,10 @@ You can never get -3 as size if you don't give a second argument.<br> <p>If there is no such file or directory, zero is returned. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_get_dir>get_dir</a> <p> </dl> @@ -10543,16 +10543,16 @@ You can never get -3 as size if you don't give a second argument.<br> <HR NEWPAGE> <a name=find_call_out> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>find_call_out</tt> - find a call out in the queue <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int find_call_out(function <I>f</I>);<br> or<br> int find_call_out(mixed <I>id</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function searches the call out queue. If given a function as argument, it looks for the first call out scheduled to that function. The argument can also be a call out id as returned by call_out, in @@ -10561,7 +10561,7 @@ called.) find_call_out will then return how many seconds remains before that call will be executed. If no call is found, zero_type(find_call_out(f)) will return 1. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=call_out_call_out>call_out</a>, <a href=call_out_remove_call_out>remove_call_out</a> and <a href=call_out_call_out_info>call_out_info</a> <p> </dl> @@ -10570,20 +10570,20 @@ zero_type(find_call_out(f)) will return 1. <HR NEWPAGE> <a name=floatp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>floatp</tt> - is the argument an float? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int floatp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is a float, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#intp>intp</a>, <a href=#programp>programp</a>, <a href=#arrayp>arrayp</a>, <a href=#stringp>stringp</a>, <a href=#objectp>objectp</a>, <a href=#mappingp>mappingp</a>, <a href=#multisetp>multisetp</a> and <a href=#functionp>functionp</a> <p> </dl> @@ -10592,21 +10592,21 @@ Returns 1 if arg is a float, zero otherwise. <HR NEWPAGE> <a name=floor> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>floor</tt> - Truncate a number downward <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float floor(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the closest integral value lower or equal to x. Note that floor() does _not_ return an int, merely an integral value. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_ceil>ceil</a> <p> </dl> @@ -10615,21 +10615,21 @@ Note that floor() does _not_ return an int, merely an integral value. <HR NEWPAGE> <a name=fork> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>fork</tt> - fork the process in two <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int fork();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Fork splits the process in two, and for the parent it returns the pid of the child. Refer to your unix manual for further details. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function cause endless bugs if used without proper care. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=simulated_exec>exec</a> and <a href=files_file#pipe>file->pipe</a> <p> </dl> @@ -10638,21 +10638,21 @@ This function cause endless bugs if used without proper care. <HR NEWPAGE> <a name=function_name> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>function_name</tt> - return the name of a function, if known <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string function_name(function <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the name of the function f. If the function is a pre-defined function in the driver, zero will be returned. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_function>function</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#function_object>function_object</a> and <a href=simulated_get_function>get_function</a> <p> </dl> @@ -10661,22 +10661,22 @@ a pre-defined function in the driver, zero will be returned. <HR NEWPAGE> <a name=function_object> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>function_object</tt> - return what object a function is in <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object function_object(function <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Function_object will return the object the function f is in. If the function is a predefined function from the driver, zero will be returned. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_function>function</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#function_name>function_name</a> and <a href=simulated_get_function>get_function</a> <p> </dl> @@ -10685,20 +10685,20 @@ returned. <HR NEWPAGE> <a name=functionp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>functionp</tt> - is the argument an function? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int functionp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is a function, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_function>function</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#intp>intp</a>, <a href=#programp>programp</a>, <a href=#arrayp>arrayp</a>, <a href=#stringp>stringp</a>, <a href=#objectp>objectp</a>, <a href=#mappingp>mappingp</a>, <a href=#multisetp>multisetp</a> and <a href=#floatp>floatp</a> <p> </dl> @@ -10707,14 +10707,14 @@ Returns 1 if arg is a function, zero otherwise. <HR NEWPAGE> <a name=gc> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>gc</tt> - do garbage collection <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int gc();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function checks all the memory for cyclic structures such as arrays containing themselves and frees them if approperiate. It also frees up destructed objects. It then returns how many @@ -10731,21 +10731,21 @@ and call this routine then.) <HR NEWPAGE> <a name=get_dir> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>get_dir</tt> - read a directory <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string *get_dir(string <I>dirname</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return an array of all filenames in the directory dir, or zero if no such directory exists. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_mkdir>mkdir</a> and <a href=files_cd>cd</a> <p> </dl> @@ -10754,20 +10754,20 @@ no such directory exists. <HR NEWPAGE> <a name=getcwd> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getcwd</tt> - return current working directory <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string getcwd();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> getcwd returns the current working directory. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_cd>cd</a> <p> </dl> @@ -10776,18 +10776,18 @@ getcwd returns the current working directory. <HR NEWPAGE> <a name=getenv> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getenv</tt> - get an environment variable <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string getenv(string <I>varname</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Reurns the value of the environment variable with the name varname, if no such environment variable exists, zero is returned. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function is provided by master.c <p> </dl> @@ -10796,18 +10796,18 @@ This function is provided by master.c <HR NEWPAGE> <a name=getpid> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>getpid</tt> - get the process id of this process <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int getpid();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This returns the pid of this process. Useful for sending signals to yourself. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#kill>kill</a>, <a href=files_fork>fork</a> and <a href=#signal>signal</a> <p> </dl> @@ -10816,23 +10816,23 @@ signals to yourself. <HR NEWPAGE> <a name=glob> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>glob</tt> - match strings against globs <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int glob(string <I>glob</I>, string <I>str</I>);<br> or<br> string *glob(string <I>glob</I>, string *<I>arr</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function matches "globs". A in the glob string a question sign matches any character and an asterisk matches any string. When given two strings as argument a true/false value is returned which reflects if the 'str' matches 'glob'. When given an array as second argument, an array containing all matching strings is returned. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=pike_sscanf>sscanf</a> and <a href=simulated_regexp>regexp</a> <p> </dl> @@ -10841,21 +10841,21 @@ second argument, an array containing all matching strings is returned. <HR NEWPAGE> <a name=hash> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>hash</tt> - hash a string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int hash(string <I>s</I>);<br> or<br> int hash(string <I>s</I>, int <I>max</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function will return an int derived from the string s. The same string will always hash to the same value. If a second argument is given, the result will be >= 0 and lesser than that argument. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a> <p> </dl> @@ -10864,23 +10864,23 @@ is given, the result will be >= 0 and lesser than that argument. <HR NEWPAGE> <a name=indices> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>indices</tt> - return an array of all index possible for a value <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *indices(string|array|mapping|multiset|object <I>foo</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Indices returns an array of all values you can use as index when indexing foo. For strings and arrays this is simply an array of the ascending numbers. For mappings and multisets, the array may contain any kind of value. For objects, the result is an array of strings. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping>mapping</a> and <a href=types_multiset>multiset</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#values>values</a> <p> </dl> @@ -10889,20 +10889,20 @@ kind of value. For objects, the result is an array of strings. <HR NEWPAGE> <a name=intp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>intp</tt> - is the argument an int? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array intp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is an int, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_int>int</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#arrayp>arrayp</a>, <a href=#programp>programp</a>, <a href=#floatp>floatp</a>, <a href=#stringp>stringp</a>, <a href=#objectp>objectp</a>, <a href=#mappingp>mappingp</a>, <a href=#multisetp>multisetp</a> and <a href=#functionp>functionp</a> <p> </dl> @@ -10911,14 +10911,14 @@ Returns 1 if arg is an int, zero otherwise. <HR NEWPAGE> <a name=kill> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>kill</tt> - send signal to other process <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int kill(int pid, int signal)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Kill sends a signal to another process. If something goes wrong -1 is returned, 0 otherwise. <p>Some signals and their supposed purpose: @@ -10953,7 +10953,7 @@ Kill sends a signal to another process. If something goes wrong <p>Note that you have to use signame to translate the name of a signal to it's number. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#signal>signal</a>, <a href=#signum>signum</a>, <a href=#signame>signame</a> and <a href=files_fork>fork</a> <p> </dl> @@ -10962,14 +10962,14 @@ to it's number. <HR NEWPAGE> <a name=load_module> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>load_module</tt> - load a binary module <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int load_module(string <I>module_name</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function loads a module written in C or some other language into Pike. The module is initialized and any programs or constants defined will immediately be available. @@ -10981,7 +10981,7 @@ functions _must_ be available in the module. ftp://www.infovav.se/pub/pike for more information on how to write modules for Pike in C. <p> -<dt><b> <font size=+1>B</font><font size=-1>UGS</font></b><dd> +<dt><encaps>BUGS</encaps><dd> Please use "./name.so" instead of just "foo.so" for the module name. If you use just "foo.se" the module will not be found. @@ -10992,14 +10992,14 @@ name. If you use just "foo.se" the module will not be found. <HR NEWPAGE> <a name=localtime> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>localtime</tt> - break down time() into intelligible components <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping(string:int) localtime(int <I>time</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Given a time represented as second since 1970, as returned by the function time(), this function returns a mapping with the following components: @@ -11018,10 +11018,10 @@ components: </table> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> The 'timezone' might not be available on all platforms. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#time>time</a> <p> </dl> @@ -11030,21 +11030,21 @@ The 'timezone' might not be available on all platforms. <HR NEWPAGE> <a name=log> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>log</tt> - Natural logarithm <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float log(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the natural logarithm of f. exp( log(x) ) == x for x > 0. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_pow>pow</a> and <a href=math_exp>exp</a> <p> </dl> @@ -11053,20 +11053,20 @@ exp( log(x) ) == x for x > 0. <HR NEWPAGE> <a name=lower_case> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>lower_case</tt> - convert a string to lower case <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string lower_case(string <I>s</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return a string with all capital letters converted to lower case. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#upper_case>upper_case</a> <p> </dl> @@ -11075,24 +11075,24 @@ Return a string with all capital letters converted to lower case. <HR NEWPAGE> <a name=m_delete> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>m_delete</tt> - remove an index from a mapping <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping m_delete(mapping <I>map</I>, mixed <I>index</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Remove the entry with index 'index' from mapping 'map' destructively. Return the changed mapping. If the mapping does not have an entry with index 'index', nothing is done. Note that m_delete changes map destructively and only returns the mapping for compatibility reasons. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#mappingp>mappingp</a> <p> </dl> @@ -11101,20 +11101,20 @@ the mapping for compatibility reasons. <HR NEWPAGE> <a name=mappingp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>mappingp</tt> - is the argument an mapping? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int mappingp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is a mapping, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#intp>intp</a>, <a href=#programp>programp</a>, <a href=#arrayp>arrayp</a>, <a href=#stringp>stringp</a>, <a href=#objectp>objectp</a>, <a href=#multisetp>multisetp</a>, <a href=#floatp>floatp</a> and <a href=#functionp>functionp</a> <p> </dl> @@ -11123,17 +11123,17 @@ Returns 1 if arg is a mapping, zero otherwise. <HR NEWPAGE> <a name=master> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>master</tt> - return the master object <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object master();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Master is added by the master object to make it easier to access it. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_object>object</a> <p> </dl> @@ -11142,20 +11142,20 @@ Master is added by the master object to make it easier to access it. <HR NEWPAGE> <a name=mkdir> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>mkdir</tt> - make directory <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int mkdir(string <I>dirname</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Create a directory, return zero if it fails and nonzero if it successful. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_rm>rm</a> and <a href=files_cd>cd</a> <p> </dl> @@ -11165,22 +11165,22 @@ Create a directory, return zero if it fails and nonzero if it successful. <HR NEWPAGE> <a name=mkmapping> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>mkmapping</tt> - make a mapping from two arrays <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mapping mkmapping(mixed *<I>ind</I>, mixed *<I>val</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Makes a mapping ind[x]:val[x], 0<=x<sizeof(ind). Ind and val must have the same size. This is the inverse operation of indices and values. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#indices>indices</a> and <a href=#values>values</a> <p> </dl> @@ -11189,17 +11189,17 @@ This is the inverse operation of indices and values. <HR NEWPAGE> <a name=mkmultiset> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>mkmultiset</tt> - make a multiset <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>multiset mkmultiset(mixed *a)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function creates a multiset from an array. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>> mkmultiset( ({1,2,3}) );<br> Result: (< /* 3 elements */<br> <dl><dt><dd>1,<br> @@ -11208,10 +11208,10 @@ Result: (< /* 3 elements */<br> </dl>>)<br> </tt> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_multiset>multiset</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#aggregage_multiset>aggregate_multiset</a> <p> </dl> @@ -11221,15 +11221,15 @@ Result: (< /* 3 elements */<br> <HR NEWPAGE> <a name=mktime> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>mktime</tt> - convert date and time to seconds <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int mktime(mapping tm)</tt><br> or<br> <tt>int mktime(int sec, int min, int hour, int mday, int mon, int year, int isdst, int tz)</tt><br> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function converts information about date and time into an integer which contains the number of seconds since the beginning of 1970. You can either call this function with a mapping containing the following elements: @@ -11249,7 +11249,7 @@ call this function with a mapping containing the following elements: <p> Or you can just send them all on one line as the second syntax suggests. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#time>time</a> <p> </dl> @@ -11258,20 +11258,20 @@ Or you can just send them all on one line as the second syntax suggests. <HR NEWPAGE> <a name=multisetp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>multisetp</tt> - is the argument a multiset? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int multisetp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is a multiset, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_multiset>multiset</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#intp>intp</a>, <a href=#programp>programp</a>, <a href=#arrayp>arrayp</a>, <a href=#stringp>stringp</a>, <a href=#objectp>objectp</a>, <a href=#mappingp>mappingp</a>, <a href=#floatp>floatp</a> and <a href=#functionp>functionp</a> <p> </dl> @@ -11280,22 +11280,22 @@ Returns 1 if arg is a multiset, zero otherwise. <HR NEWPAGE> <a name=mv> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>mv</tt> - move a file (may handle directiories as well) <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int mv(string <I>from</I>,string <I>to</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Rename or move a file between directories. If the destination file already exists, it will be overwritten. Returns 1 on sucess, 0 otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_rm>rm</a> <p> </dl> @@ -11304,31 +11304,31 @@ file already exists, it will be overwritten. Returns 1 on sucess, <HR NEWPAGE> <a name=next_object> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>next_object</tt> - get next object <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object next_object(object <I>o</I>);<br> or<br> object next_object();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> All objects are stored in a linked list, next_object() returns the first object in this list, and next_object(o) the next object in the list after o. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>/* This example calls shutting_down() in all cloned objects */<br> object o;<br> for(o=next_object();o;o=next_object(o))<br> <dl><dt><dd>o->shutting_down();<br> </dl></tt> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_object>object</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#clone>clone</a> and <a href=#destruct>destruct</a> <p> </dl> @@ -11337,21 +11337,21 @@ for(o=next_object();o;o=next_object(o))<br> <HR NEWPAGE> <a name=object_program> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>object_program</tt> - get the program asociated with the object <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>program object_program(object <I>o</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the program from which o was cloned. If o is not an object, or o was destructed zero is returned. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_object>object</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#clone>clone</a> <p> </dl> @@ -11360,20 +11360,20 @@ If o is not an object, or o was destructed zero is returned. <HR NEWPAGE> <a name=objectp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>objectp</tt> - is the argument an object? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int objectp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is an object, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_object>object</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#intp>intp</a>, <a href=#programp>programp</a>, <a href=#floatp>floatp</a>, <a href=#stringp>stringp</a>, <a href=#arrayp>arrayp</a>, <a href=#mappingp>mappingp</a>, <a href=#multisetp>multisetp</a> and <a href=#functionp>functionp</a> <p> </dl> @@ -11383,20 +11383,20 @@ Returns 1 if arg is an object, zero otherwise. <HR NEWPAGE> <a name=pow> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>pow</tt> - Raise a number to the power of another. <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float pow(float <I>n</I>, float <I>x</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return n raised to the power of x. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_exp>exp</a> and <a href=math_log>log</a> <p> </dl> @@ -11405,20 +11405,20 @@ Return n raised to the power of x. <HR NEWPAGE> <a name=programp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>programp</tt> - is the argument an program? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int programp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is a program, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_program>program</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#intp>intp</a>, <a href=#multisetp>multisetp</a>, <a href=#arrayp>arrayp</a>, <a href=#stringp>stringp</a>, <a href=#objectp>objectp</a>, <a href=#mappingp>mappingp</a>, <a href=#floatp>floatp</a> and <a href=#functionp>functionp</a> <p> </dl> @@ -11427,17 +11427,17 @@ Returns 1 if arg is a program, zero otherwise. <HR NEWPAGE> <a name=putenv> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>putenv</tt> - put environment variable <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void putenv(string <I>varname</I>, string <I>value</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets the environment variable 'varname' to 'value'. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=simulated_getenv>getenv</a> and <a href=files_exece>exece</a> <p> </dl> @@ -11446,14 +11446,14 @@ This function sets the environment variable 'varname' to 'value'. <HR NEWPAGE> <a name=query_host_name> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>query_host_name</tt> - return the name of the host we are running on <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string query_host_name();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the name of the machine the interpreter is running on. This is the same thing that the command 'hostname' prints. @@ -11465,18 +11465,18 @@ prints. <HR NEWPAGE> <a name=query_num_arg> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>query_num_arg</tt> - find out how many arguments were given <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int query_num_arg();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Query_num_arg returns the number of arguments given when this function was called. This is only useful for varargs functions. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#call_function>call_function</a> <p> </dl> @@ -11485,20 +11485,20 @@ function was called. This is only useful for varargs functions. <HR NEWPAGE> <a name=random> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>random</tt> - return a random number <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int random(int <I>max</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns a random number in the range 0 - max-1. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_int>int</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#random_seed>random_seed</a> <p> </dl> @@ -11507,17 +11507,17 @@ This function returns a random number in the range 0 - max-1. <HR NEWPAGE> <a name=random_seed> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>random_seed</tt> - seed random generator <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void random_seed(int <I>seed</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sets the initial value for the random generator. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>Pike v1.0E-13 Running Hilfe v1.2 (Hubbe's Incremental Pike FrontEnd)<br> > random_seed(17);<br> Result: 0<br> @@ -11538,10 +11538,10 @@ Result: 94<br> ><br> </tt> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_int>int</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#random>random</a> <p> </dl> @@ -11550,23 +11550,23 @@ Result: 94<br> <HR NEWPAGE> <a name=remove_call_out> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>remove_call_out</tt> - remove a call out from the call out queue <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int remove_call_out(function <I>f</I>);<br> or<br> int remove_call_out(function <I>id</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function finds the first call to the function f in the call out queue and removes it. The time left to that call out will be returned. If no call out was found, zero_type(remove_call_out(f)) will return 1. You can also give a call out id as argument. (as returned by call_out) <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=call_out_call_out_info>call_out_info</a>, <a href=call_out_call_out>call_out</a> and <a href=call_out_find_call_out>find_call_out</a> <p> </dl> @@ -11575,18 +11575,18 @@ returned by call_out) <HR NEWPAGE> <a name=remove_include_path> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>remove_include_path</tt> - remove a directory to search for include files <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void remove_include_path(string <I>path</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function removes a directory from the list of directories to search for include files. It is the opposite of add_include_path. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#add_include_path>add_include_path</a> and <a href=#include>#include</a> <p> </dl> @@ -11595,19 +11595,19 @@ for include files. It is the opposite of add_include_path. <HR NEWPAGE> <a name=remove_module_path> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>remove_module_path</tt> - remove a directory to search for modules <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void remove_module_path(string <I>path</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function removes a directory from the list of directories to search for modules. It is the opposite of add_module_path. For more information -about modules, see chapter XXXXXX. <!--- FIXME ---> +about modules, see <link to=modules>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#add_module_path>add_module_path</a> <p> </dl> @@ -11616,19 +11616,19 @@ about modules, see chapter XXXXXX. <!--- FIXME ---> <HR NEWPAGE> <a name=remove_program_path> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>remove_program_path</tt> - remove a directory to search for modules <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void remove_program_path(string <I>path</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function removes a directory from the list of directories to search for program. It is the opposite of add_program_path. For more information -about modules, see chapter XXXXXX. <!--- FIXME ---> +about programs, see <link to=programs>. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#add_program_path>add_program_path</a> <p> </dl> @@ -11637,10 +11637,10 @@ about modules, see chapter XXXXXX. <!--- FIXME ---> <HR NEWPAGE> <a name=replace> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>replace</tt> - generic replace function <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string replace(string <I>s</I>, string <I>from</I>, string <I>to</I>);<br> or<br> string replace(string <I>s</I>, string *<I>from</I>, string *<I>to</I>);<br> @@ -11650,7 +11650,7 @@ or<br> mapping replace(mapping <I>a</I>, mixed <I>from</I>, mixed <I>to</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function can do several kinds replacement operations, the different syntaxes do different things as follow: <p>string replace(string s, string from, string to); @@ -11672,7 +11672,7 @@ a are searched for values equal to from, which are replaced by<br> to destructively.<br> </dl> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a>, <a href=types_array>array</a> and <a href=types_mapping>mapping</a> <p> </dl> @@ -11681,14 +11681,14 @@ to destructively.<br> <HR NEWPAGE> <a name=replace_master> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>replace_master</tt> - replace the master object <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void replace_master(object <I>o</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function replaces the master object with the argument you specify. This will let you control many aspects of how pike works, but beware that master.pike may be required to fill certain functions, so it is probably @@ -11701,10 +11701,10 @@ re-define certain functions. <HR NEWPAGE> <a name=reverse> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>reverse</tt> - reverse a string, array or int <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string reverse(string <I>s</I>);<br> or<br> array reverse(arary <I>a</I>);<br> @@ -11712,16 +11712,16 @@ or<br> int reverse(int <I>i</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function reverseses a string, char by char, an array, value by value or an int, bit by bit and returns the result. Reversing strings can be particularly useful for parsing difficult syntaxes which require scanning backwards. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a>, <a href=types_array>array</a> and <a href=types_int>int</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=pike_sscanf>sscanf</a> <p> </dl> @@ -11731,20 +11731,20 @@ which require scanning backwards. <HR NEWPAGE> <a name=rm> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>rm</tt> - remove file or directory <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int rm(string <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Remove a file or directory, return 0 if it fails. Nonzero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=files_mkdir>mkdir</a> <p> </dl> @@ -11753,24 +11753,24 @@ Remove a file or directory, return 0 if it fails. Nonzero otherwise. <HR NEWPAGE> <a name=rows> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>rows</tt> - select a set of rows from an array <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>array rows(mixed data, mixed *index)<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is exactly equivialent to: <p>map_array(index,lambda(mixed x,mixed y) { return y[x]; },data) <p>Except of course it is a lot shorter and faster. That is, it indexes data on every index in the array index and returns an array with the results. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#column>column</a> <p> </dl> @@ -11779,14 +11779,14 @@ returns an array with the results. <HR NEWPAGE> <a name=rusage> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>rusage</tt> - return resource usage <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int *rusage();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns an array of ints describing how much resources the intepreter process has used so far. This array will have at least 29 elements, of which those values not available on this system will @@ -11823,7 +11823,7 @@ be zero. The elements are as follows: <p>Don't ask me to explain these values, read your system manuals for more information. (Note that all values may not be present though) <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#time>time</a> <p> </dl> @@ -11832,10 +11832,10 @@ more information. (Note that all values may not be present though) <HR NEWPAGE> <a name=search> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>search</tt> - search for a value in a string or array <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int search(string <I>haystack</I>, string <I>needle</I>, [ int <I>start</I> ]);<br> or<br> int search(mixed *<I>haystack</I>, mixed <I>needle</I>, [ int <I>start</I> ]);<br> @@ -11843,7 +11843,7 @@ or<br> mixed search(mapping <I>haystack</I>, mixed <I>needle</I>, [ mixed <I>start</I> ]);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Search for needle in haystack. Return the position of needle in haystack or -1 if not found. If the optional argument start is present search is started at this position. Note that when haystack is a string @@ -11855,13 +11855,13 @@ connected to the data needle. That is, it tries to lookup the mapping backwards. If needle isn't present in the mapping, zero is returned, and zero_type() will return 1 for this zero. <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function replaces strstr and member_array from Pike4. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a>, <a href=types_array>array</a> and <a href=types_mapping>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#indices>indices</a>, <a href=#values>values</a> and <a href=#zero_type>zero_type</a> <p> </dl> @@ -11870,16 +11870,16 @@ This function replaces strstr and member_array from Pike4. <HR NEWPAGE> <a name=signal> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>signal</tt> - trap signals <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void signal(int <I>sig</I>, function(int:void) <I>callback</I>);<br> or<br> void signal(int <I>sig</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function allows you to trap a signal and have a function called when the process receives a signal. Although it IS possible to trap SIGBUS, SIGSEGV etc. I advice you not to. Pike should not receive any @@ -11891,7 +11891,7 @@ See the document for the function 'kill' for a list of signals. is restored to the default handler. <p>If the second argument is zero, the signal will be completely ignored. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#kill>kill</a>, <a href=#signame>signame</a> and <a href=#signum>signum</a> <p> </dl> @@ -11900,22 +11900,22 @@ is restored to the default handler. <HR NEWPAGE> <a name=signame> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>signame</tt> - get the name of a signal <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string signame(int <I>sig</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return a string describing the signal. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>> signame(9);<br> Result: SIGKILL<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#kill>kill</a>, <a href=#signum>signum</a> and <a href=#signal>signal</a> <p> </dl> @@ -11924,22 +11924,22 @@ Result: SIGKILL<br> <HR NEWPAGE> <a name=signum> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>signum</tt> - get a signal number given a desctiptive string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int signum(string <I>sig</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is the opposite of signame. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>> signum("SIGKILL");<br> Result: 9<br> </tt> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#signame>signame</a>, <a href=#kill>kill</a> and <a href=#signal>signal</a> <p> </dl> @@ -11948,20 +11948,20 @@ Result: 9<br> <HR NEWPAGE> <a name=sin> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>sin</tt> - Trigonometrical sine <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float sin(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the sinus value for f. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_asin>asin</a> and <a href=math_cos>cos</a> <p> </dl> @@ -11970,19 +11970,19 @@ Return the sinus value for f. <HR NEWPAGE> <a name=sizeof> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>sizeof</tt> - return the size of an array, string, multiset or mapping <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int sizeof(string|multiset|mapping|array|object <I>a</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the number of indexes available in the argument given to it. It replaces older functions like strlen, m_sizeof and size. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a>, <a href=types_multiset>multiset</a>, <a href=types_mapping>mapping</a> and <a href=types_array>array</a> <p> </dl> @@ -11991,19 +11991,19 @@ size. <HR NEWPAGE> <a name=sleep> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>sleep</tt> - let interpreter doze off for a while <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void sleep(int <I>s</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function makes the program stop for s seconds. Only signal handlers can interrupt the sleep. Other callbacks are not called during sleep. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#signal>signal</a> <p> </dl> @@ -12012,14 +12012,14 @@ during sleep. <HR NEWPAGE> <a name=sort> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>sort</tt> - sort an array destructively <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *sort(array(mixed) <I>index</I>, array(mixed) ... <I>data</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function sorts the array 'index' destructively. That means that the array itself is changed and returned, no copy is created. If extra arguments are given, they are supposed to be arrays of the @@ -12030,10 +12030,10 @@ will be moved to position 0 in all the other arrays as well. Arrays will be sorted first on the first element of each array. <p>Sort returns it's first argument. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_array>array</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#reverse>reverse</a> <p> </dl> @@ -12042,14 +12042,14 @@ Arrays will be sorted first on the first element of each array. <HR NEWPAGE> <a name=sprintf> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>sprintf</tt> - print the result from sprintf <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string sprintf(string <I>format</I>,mixed <I>arg</I>,....);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> The format string is a string containing a description of how to output the data in the rest of the arguments. This string should generally speaking have one %<modifiers><operator> (examples: @@ -12100,7 +12100,7 @@ generally speaking have one %<modifiers><operator> (examples: </table> <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLES</font></b><dd> +<dt><encaps>EXAMPLES</encaps><dd> <tt>Pike v0.1 Running Hilfe v1.2 (Incremental Pike Frontend)<br> > int screen_width=70;<br> Result: 70<br> @@ -12221,10 +12221,10 @@ Result: 0<br> Exiting.<br> </tt> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=pike_sscanf>sscanf</a> <p> </dl> @@ -12233,23 +12233,23 @@ Exiting.<br> <HR NEWPAGE> <a name=sqrt> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>sqrt</tt> - Square root <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float sqrt(float <I>f</I>);<br> or<br> int sqrt(int <I>i</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the square root of f, or in the second case, the square root truncated to the closest lower integer. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> and <a href=types_int>int</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_pow>pow</a>, <a href=math_log>log</a>, <a href=math_exp>exp</a> and <a href=math_floor>floor</a> <p> </dl> @@ -12258,21 +12258,21 @@ truncated to the closest lower integer. <HR NEWPAGE> <a name=strerror> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>strerror</tt> - return a string describing an error <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string strerror(int <I>errno</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns a description of an error code. The error code is usually obtained from the file->errno() call. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#file>file</a> <p> -<dt><b> <font size=+1>N</font><font size=-1>OTA</font> <font size=+1>B</font><font size=-1>ENE</font></b><dd> +<dt><encaps>NOTA BENE</encaps><dd> This function may not be available on all platforms. <p> </dl> @@ -12281,20 +12281,20 @@ This function may not be available on all platforms. <HR NEWPAGE> <a name=stringp> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>stringp</tt> - is the argument an string? <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int stringp(mixed <I>arg</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Returns 1 if arg is a string, zero otherwise. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#intp>intp</a>, <a href=#multisetp>multisetp</a>, <a href=#arrayp>arrayp</a>, <a href=#programp>programp</a>, <a href=#objectp>objectp</a>, <a href=#mappingp>mappingp</a>, <a href=#floatp>floatp</a> and <a href=#functionp>functionp</a> <p> </dl> @@ -12303,20 +12303,20 @@ Returns 1 if arg is a string, zero otherwise. <HR NEWPAGE> <a name=strlen> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>strlen</tt> - Return the length of a string <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int strlen(string <I>s</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function is equal to sizeof. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#sizeof>sizeof</a> <p> </dl> @@ -12326,20 +12326,20 @@ This function is equal to sizeof. <HR NEWPAGE> <a name=tan> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>tan</tt> - Trigonometrical tangent <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>float tan(float <I>f</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return the tangent value for f. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_float>float</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=math_atan>atan</a>, <a href=math_sin>sin</a> and <a href=math_cos>cos</a> <p> </dl> @@ -12348,17 +12348,17 @@ Return the tangent value for f. <HR NEWPAGE> <a name=this_object> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>this_object</tt> - return the object we are evaluating in currently <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>object this_object();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the object we are curently evaluating in. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_object>object</a> <p> </dl> @@ -12367,14 +12367,14 @@ This function returns the object we are curently evaluating in. <HR NEWPAGE> <a name=throw> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>throw</tt> - throw a value to catch or global error handling <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>void throw(mixed <I>value</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function throws a value to a waiting catch. If no catch is waiting global error handling will send the value to handle_error in the master object. If you throw an array with where the first @@ -12382,7 +12382,7 @@ index contains an error message and the second index is a backtrace, (the output from backtrace() that is) then it will be treated exactly like a real error by overlying functions. <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=pike_control_structures_catch>catch</a> <p> </dl> @@ -12391,22 +12391,22 @@ like a real error by overlying functions. <HR NEWPAGE> <a name=time> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>time</tt> - return the current time <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int time();<br> or<br> int time(1);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns the number of secons since 1 Jan 1970. The function ctime() converts this integer to a readable string. <p>The second syntax does not call the system call time() as often, but is only updated in the backed. (when pike code isn't running) <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#time>time</a> <p> </dl> @@ -12415,14 +12415,14 @@ but is only updated in the backed. (when pike code isn't running) <HR NEWPAGE> <a name=trace> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>trace</tt> - change debug trace level <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int trace(int <I>t</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function affects the debug trace level. (also set by the -t command line option) The old level is returned. Trace level 1 or higher means that calls to pike functions are printed to stderr, @@ -12437,20 +12437,20 @@ for more information <HR NEWPAGE> <a name=typeof> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>typeof</tt> - check return type of expression <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>typeof ( expression )<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This is a not really a function even if it looks like it, it returns a human readable (almost) representation of the type that the expression would return without actually evaluating it. The representation is in the form of a string. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>> typeof(`sizeof);<br> Result: function(object | mapping | array | multiset | string : int)<br> > typeof(sizeof(({})));<br> @@ -12458,7 +12458,7 @@ Result: int<br> > <br> </tt> <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=index#pike>pike</a> <p> </dl> @@ -12467,26 +12467,26 @@ Result: int<br> <HR NEWPAGE> <a name=ualarm> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>ualarm</tt> - set an alarm clock for delivery of a signal <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int ualarm(int <I>useconds</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> ualarm arranges for a SIGALRM signal to be delivered to the process in useconds micro seconds. <p>If useconds is zero, no new alarm is scheduled. <p>In any event any previously set alarm is cancelled. <p> -<dt><b> <font size=+1>R</font><font size=-1>ETURN</font> <font size=+1>V</font><font size=-1>ALUE</font></b><dd> +<dt><encaps>RETURN VALUE</encaps><dd> ualarm returns the number of microseconds seconds remaining<br> <dl><dt><dd>until any previously scheduled alarm was due to be delivered, or<br> </dl>zero if there was no previously scheduled alarm.<br> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#signal>signal</a> <p> </dl> @@ -12495,21 +12495,21 @@ ualarm returns the number of microseconds seconds remaining<br> <HR NEWPAGE> <a name=upper_case> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>upper_case</tt> - convert a string to upper case <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string upper_case(string <I>s</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Return a copy of the string s with all lower case character converted to upper case character. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_string>string</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#lower_case>lower_case</a> <p> </dl> @@ -12518,24 +12518,24 @@ to upper case character. <HR NEWPAGE> <a name=values> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>values</tt> - return an array of all possible values from indexing <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>mixed *values(string|multiset|mapping|array|object <I>foo</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Values return an array of all values you can get when indexing the value foo. For strings, an array of int with the ascii values of the characters in the string is returned. For a multiset, an array filled with ones is return. For mappings, objects and arrays, the returned array may contain any kind of value. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_mapping>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#indices>indices</a> <p> </dl> @@ -12544,17 +12544,17 @@ may contain any kind of value. <HR NEWPAGE> <a name=version> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>version</tt> - return version info <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>string version();<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> This function returns a brief information about the Pike version. <p> -<dt><b> <font size=+1>E</font><font size=-1>XAMPLE</font></b><dd> +<dt><encaps>EXAMPLE</encaps><dd> <tt>> version();<br> Result: Pike v0.3<br> <br> @@ -12566,18 +12566,18 @@ Result: Pike v0.3<br> <HR NEWPAGE> <a name=write> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>write</tt> - write text to stdout <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int write(string <I>text</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> Added by the master, it directly calls write in a clone of /precompiled/file <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=#Stdio.werror>Stdio.werror</a> <p> </dl> @@ -12586,14 +12586,14 @@ Added by the master, it directly calls write in a clone of <HR NEWPAGE> <a name=zero_type> <dl> -<dt><b> <font size=+1>N</font><font size=-1>AME</font></b><dd> +<dt><encaps>NAME</encaps><dd> <tt>zero_type</tt> - return the type of zero <p> -<dt><b> <font size=+1>S</font><font size=-1>YNTAX</font></b><dd> +<dt><encaps>SYNTAX</encaps><dd> <tt>int zero_type(mixed <I>a</I>);<br> </tt> <p> -<dt><b> <font size=+1>D</font><font size=-1>ESCRIPTION</font></b><dd> +<dt><encaps>DESCRIPTION</encaps><dd> There are many types of zeros out there, or at least there are two. One is returned by normal functions, and one returned by mapping lookups and find_call_out() when what you looked for wasn't there. @@ -12605,10 +12605,10 @@ destructed object or a function in a destructed object, 2 will be returned. Otherwize zero_type will return zero. <p>If the argument is not an int, zero will be returned. <p> -<dt><b> <font size=+1>K</font><font size=-1>EYWORDS</font></b><dd> +<dt><encaps>KEYWORDS</encaps><dd> <a href=types_int>int</a> and <a href=types_mapping>mapping</a> <p> -<dt><b> <font size=+1>S</font><font size=-1>EE</font> <font size=+1>A</font><font size=-1>LSO</font></b><dd> +<dt><encaps>SEE ALSO</encaps><dd> <a href=call_out_find_call_out>find_call_out</a> <p> </dl> @@ -12822,7 +12822,7 @@ instead of writing them to stderr. </dl> </appendix> -<appendix title="Register program"> +<appendix title="Register program" alias=register_program> Here is a complete listing of the example program from chapter 2. @@ -13103,7 +13103,7 @@ This is the BNF for Pike: </appendix> -<appendix title="How to install Pike"> +<appendix title="How to install Pike" alias=install> To install pike, you need a C compiler, a couple of Mb of disk space, the source for Pike, and a bit of patience. The latest version of Pike is always available from <a href=http://pike.infovav.se>the Pike home page</a>. @@ -13161,7 +13161,7 @@ earlier. You are now ready to use Pike. </appendix> -</appendixes +</appendixes> <h1> Index </h1> diff --git a/tutorial/wmml_to_html b/tutorial/wmml_to_html index f22796d09ccfee6d0c7dc740224e949cc9fed1ca..7c42c1f0cebb4aa2773803425e58100b6eb6d338 100755 --- a/tutorial/wmml_to_html +++ b/tutorial/wmml_to_html @@ -8,19 +8,13 @@ mapping(int:mapping) links=([]); string p1(string data); - - +/* Note: destructive ! */ string *srt(string *foo) { - return sort_array(foo, - lambda(string a,string b) - { - return lower_case(a) > lower_case(b); - }); + sort(map(foo,lower_case),foo); + return foo; } - - string code_params(mapping s) { string ret=""; @@ -29,11 +23,6 @@ string code_params(mapping s) return ret; } -string leavetag(string x, mapping y, string data) -{ - return "<"+x+code_params(y)+">"+data+"</"+x+">"; -} - /* Index handling */ void _add_to(mapping foo, string bar, string full) @@ -67,7 +56,6 @@ string anchor(mixed a, mixed b, mixed c) { if(b->name) { -// werror("Anchor: "+b->name+".\n"); if(c[strlen(c)-10..]=="<!--END-->") werror("Warning: Anchor not ended "+b->name+".\n"); @@ -76,8 +64,7 @@ string anchor(mixed a, mixed b, mixed c) for(int e=1;e<sizeof(foo);e++) add_to(foo[e], foo[..e]*"."); } -// return leavetag(a,b,parse_html(c,([]),(["a":anchor]))); -// return leavetag(a,b,c); + return 0; } @@ -123,11 +110,14 @@ string appendixes(string tag, mapping params, string data); (["chapter":chapter,"section":section,\ "appendix":appendix,"appendixes":appendixes]) +mapping aliases=([]); + string rtag(string name, string title, string outtitle, string xlink, string sectionname, + mapping params, string data) { if(data[strlen(data)-10..]=="<!--END-->") @@ -142,6 +132,17 @@ string rtag(string name, prefix=save_prefix; tod=save+({prefix+xlink,sectionname||(prefix+xlink),title,tod}); + if(params->alias) + { + aliases[params->alias]= + ({ + prefix+xlink, + sectionname || ( name + " " + prefix+xlink ) + }) + ; + } + + if(data[strlen(data)-10..]=="<!--END-->") data=data[..strlen(data)-11]; @@ -165,32 +166,35 @@ string rtag(string name, string section(string tag, mapping params, string data) { int c = sizeof(tod)/4 +1; - return rtag("Section", + return rtag("section", params->title, prefix+c+" "+params->title, (string)c, 0, + params, data); } string chapter(string tag, mapping params, string data) { int c = sizeof(tod)/4+1; - return rtag("Chapter", + return rtag("chapter", params->title, "Chapter "+prefix+c+", "+params->title, (string)c, 0, + params, data); } string appendixes(string tag, mapping params, string data) { - return rtag("Appendixes", + return rtag("appendixes", "", "Appendixes", "Appendix", "Appendixes", + params, data); } @@ -200,11 +204,12 @@ int appnum = 'A'; string appendix(string tag, mapping params, string data) { string c=sprintf("%c",appnum++); - return rtag("Appendix", + return rtag("appendix", params->title, "Appendix "+c+", "+params->title, c, "Appendix "+c, + params, data); } @@ -233,23 +238,48 @@ string do_replace(string what) return replacements[lower_case(what)]; } +string encaps1(string word) +{ + return "<font size=+1>"+word[0..0]+"</font><font size=-1>"+word[1..]+"</font>"; +} + +string encaps(string tag, mapping params, string data) +{ + return "<b>"+map((data/" ")-({""}),encaps1)*" "+"</b>"; +} + +string link(string tag, mapping params, string data) +{ + mixed tmp=aliases[params->to]; + if(!tmp) + { + werror("Unlinked <link> :"+params->to+"\n"); + return 0; + } + + return "<a href=#"+tmp[0]+">"+tmp[1]+"</a>"; +} + +string box(string tag, mapping params, string data) +{ + return "<center><table border=1>\n"+ + data+ + "</table></center>\n"; +} + int main() { string data=stdin->read(0x7fffffff); data+="\n<!--END-->"; - string data=parse_html(data, - ([]) , - ([ - "a":anchor - ])); + /* Pass 1, find links for the index */ + string data=parse_html(data, ([]) , (["a":anchor])); + /* Pass 2, parse chapters and sections */ + string data=parse_html(data, ([]) , TAGS); - string data=parse_html(data, - ([]) , - TAGS); - + /* Build index */ string index="<dl>\n"; foreach(sort(indices(links)), int letter) { @@ -261,14 +291,21 @@ int main() replacements->index=index; + /* Build table of contents */ replacements["table-of-contents"]=gencontents(tod); + + /* Pass 3, insert generated data */ write(parse_html(data, ([ "index":do_replace, "table-of-contents":do_replace, + "link":link, ]), - ([]))); + ([ + "box":box, + "encaps":encaps, + ]))); }