You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by rb...@apache.org on 2001/02/11 03:55:02 UTC

cvs commit: apr-site/docs APR_File_handling.html APR_I18N_translation_library.html APR_MD5_Library.html APR_MMAP_library.html APR_Network_library.html APR_Process_library.html APR_Random_Functions.html APR_Table_library.html APR_Thread_library.html APR_Time_library.html APR_UUID_Handling.html APR_command_arguments.html APR_general-purpose_library.html APR_lock_library.html APR_memory_allocation.html APR_portability_Routines.html APR_strings_library.html Dynamic_Object_Handling.html Error_Codes.html Fnmatch_functions.html General.html Hash_Tables.html Shared_Memory_library.html master.html packages.html to-do.html

rbb         01/02/10 18:55:02

  Modified:    docs     APR_File_handling.html
                        APR_I18N_translation_library.html
                        APR_MD5_Library.html APR_MMAP_library.html
                        APR_Network_library.html APR_Process_library.html
                        APR_Random_Functions.html APR_Table_library.html
                        APR_Thread_library.html APR_Time_library.html
                        APR_UUID_Handling.html APR_command_arguments.html
                        APR_general-purpose_library.html
                        APR_lock_library.html APR_memory_allocation.html
                        APR_portability_Routines.html
                        APR_strings_library.html
                        Dynamic_Object_Handling.html Error_Codes.html
                        Fnmatch_functions.html General.html
                        Hash_Tables.html Shared_Memory_library.html
                        master.html packages.html to-do.html
  Log:
  Update the APR docs on the APR web site.
  
  Revision  Changes    Path
  1.4       +396 -595  apr-site/docs/APR_File_handling.html
  
  Index: APR_File_handling.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_File_handling.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_File_handling.html	2000/12/04 18:13:58	1.3
  +++ APR_File_handling.html	2001/02/11 02:54:57	1.4
  @@ -14,15 +14,25 @@
     <a href="APR_File_handling.html#apr_finfo_t">struct apr_finfo_t</h3></a>
     <ul>
   <li><a href="APR_File_handling.html#apr_finfo_t-atime">atime</a>
  +<li><a href="APR_File_handling.html#apr_finfo_t-cntxt">cntxt</a>
  +<li><a href="APR_File_handling.html#apr_finfo_t-csize">csize</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-ctime">ctime</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-device">device</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-filetype">filetype</a>
  +<li><a href="APR_File_handling.html#apr_finfo_t-fname">fname</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-group">group</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-inode">inode</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-mtime">mtime</a>
  +<li><a href="APR_File_handling.html#apr_finfo_t-name">name</a>
  +<li><a href="APR_File_handling.html#apr_finfo_t-nlink">nlink</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-protection">protection</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-size">size</a>
   <li><a href="APR_File_handling.html#apr_finfo_t-user">user</a>
  +<li><a href="APR_File_handling.html#apr_finfo_t-valid">valid</a>
  +</ul>
  +<h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
  +  <a href="APR_File_handling.html#apr_finfo_t-apr_file_t">struct apr_file_t</h3></a>
  +  <ul>
   </ul>
   
   </b>
  @@ -34,21 +44,27 @@
         <th align=center colspan=2>
         </th>
       </tr>
  - <tr><th width=20% align=right>Source:</th><td>./include/apr_file_io.h</td></tr></tr>
  + <tr><th width=20% align=right>Source:</th><td>./include/apr_file_info.h</td></tr></tr>
   </table>
   <p>
   The file information structure.  This is analogous to the POSIX
   stat structure.<h2>Member Index</h2>
   <ul><li><a href="APR_File_handling.html#apr_finfo_t-atime">    apr_time_t atime</a>
  +	<li><a href="APR_File_handling.html#apr_finfo_t-cntxt">    apr_pool_t *cntxt</a>
  +	<li><a href="APR_File_handling.html#apr_finfo_t-csize">    apr_off_t csize</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-ctime">    apr_time_t ctime</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-device">    apr_dev_t device</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-filetype">    apr_filetype_e filetype</a>
  +	<li><a href="APR_File_handling.html#apr_finfo_t-fname">    const char *fname</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-group">    apr_gid_t group</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-inode">    apr_ino_t inode</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-mtime">    apr_time_t mtime</a>
  +	<li><a href="APR_File_handling.html#apr_finfo_t-name">    const char *name</a>
  +	<li><a href="APR_File_handling.html#apr_finfo_t-nlink">    apr_int32_t nlink</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-protection">    apr_fileperms_t protection</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-size">    apr_off_t size</a>
   	<li><a href="APR_File_handling.html#apr_finfo_t-user">    apr_uid_t user</a>
  +	<li><a href="APR_File_handling.html#apr_finfo_t-valid">    apr_int32_t valid</a>
   	</ul><h2>Class Variables</h2>
   <blockquote>
   
  @@ -60,6 +76,22 @@
   <p><dl>
   </dl></dl>
   
  +  <a name="cntxt"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_pool_t *cntxt;</b>
  +<dd>
  +Allocates memory and closes lingering handles in the specified pool
  +<p><dl>
  +</dl></dl>
  +
  +  <a name="csize"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_off_t csize;</b>
  +<dd>
  +The storage size consumed by the file
  +<p><dl>
  +</dl></dl>
  +
     <a name="ctime"></a>
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_time_t ctime;</b>
  @@ -72,7 +104,7 @@
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_dev_t device;</b>
   <dd>
  -The id of the device the file is on.  (Not portable?)
  +The id of the device the file is on.
   <p><dl>
   </dl></dl>
   
  @@ -85,6 +117,14 @@
   <p><dl>
   </dl></dl>
   
  +  <a name="fname"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    const char *fname;</b>
  +<dd>
  +The full pathname of the file
  +<p><dl>
  +</dl></dl>
  +
     <a name="group"></a>
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_gid_t group;</b>
  @@ -97,7 +137,7 @@
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_ino_t inode;</b>
   <dd>
  -The inode of the file.  (Not portable?)
  +The inode of the file.
   <p><dl>
   </dl></dl>
   
  @@ -109,12 +149,27 @@
   <p><dl>
   </dl></dl>
   
  +  <a name="name"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    const char *name;</b>
  +<dd>
  +The file's name (no path) in filesystem case
  +<p><dl>
  +</dl></dl>
  +
  +  <a name="nlink"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t nlink;</b>
  +<dd>
  +The number of hard links to the file.
  +<p><dl>
  +</dl></dl>
  +
     <a name="protection"></a>
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_fileperms_t protection;</b>
   <dd>
  -The access permissions of the file.  Currently this mimics Unix
  - access rights.
  +The access permissions of the file.  Mimics Unix access rights.
   <p><dl>
   </dl></dl>
   
  @@ -133,17 +188,29 @@
   The user id that owns the file
   <p><dl>
   </dl></dl>
  -</blockquote>
  -<h2>Global Variables</h2>
  -  <blockquote>
   
  -  <a name="apr_canon_t"></a>
  +  <a name="valid"></a>
       <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_canon_t ;</b>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t valid;</b>
   <dd>
  -Structure for determining canonical filenames.
  +The bitmask describing valid fields of this apr_finfo_t structure 
  + including all available 'wanted' fields and potentially more
   <p><dl>
   </dl></dl>
  +</blockquote>
  +<hr size="4">
  +  <a name="apr_finfo_t-apr_file_t"></a>
  +  <h1>struct apr_file_t</h1>
  +  <table bgcolor="ffffff" border="0" cellspacing="4">
  +    <tr>
  +      <th align=center colspan=2>
  +      </th>
  +    </tr>
  + <tr><th width=20% align=right>Source:</th><td>./include/apr_file_info.h</td></tr></tr>
  +</table>
  +<p>
  +The file's handle, if accessed (can be submitted to apr_duphandle)<h2>Global Variables</h2>
  +  <blockquote>
   
     <a name="apr_dev_t"></a>
       <dl><dt>
  @@ -177,14 +244,6 @@
   <p><dl>
   </dl></dl>
   
  -  <a name="apr_gid_t"></a>
  -    <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_gid_t ;</b>
  -<dd>
  -Structure for determining the group that owns the file.
  -<p><dl>
  -</dl></dl>
  -
     <a name="apr_ino_t"></a>
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_ino_t ;</b>
  @@ -192,47 +251,55 @@
   Structure for determining the inode of the file.
   <p><dl>
   </dl></dl>
  +</blockquote>
  +<h2>Global Functions</h2>
  +  <blockquote>
   
  -  <a name="apr_uid_t"></a>
  -    <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_uid_t ;</b>
  +<a name=""></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
   <dd>
  -Structure for determining file owner.
  +<p><img src="../images//tip.gif"> This function is depreciated, it's equivilant to calling apr_stat with 
  +the wanted flag value APR_FINFO_LINK
   <p><dl>
   </dl></dl>
   
  -  <a name="time"></a>
  -    <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>                                           or thread can hold a shared lock
  -                                           at any given time;</b>
  +<a name="-2"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
   <dd>
  -File lock types/flags
  +<p><img src="../images//tip.gif"> If perm is APR_OS_DEFAULT and the file is being created, appropriate 
  +     default permissions will be used.  *arg1 must point to a valid file_t, 
  +     or NULL (in which case it will be allocated)
   <p><dl>
   </dl></dl>
  -</blockquote>
  -<h2>Global Functions</h2>
  -  <blockquote>
   
  -<a name="apr_close"></a>
  +<a name="-3"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_close(apr_file_t *file);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -Close the specified file.
  +<p><img src="../images//tip.gif"> If the file is open, it won't be removed until all instances are closed.
   <p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	file</th><td>The file descriptor to close.</td></tr>
  -</table>
     </dl></dl>
   
  -<a name="apr_closedir"></a>
  +<a name="apr_pool_t"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_closedir(apr_dir_t *thedir);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_pool_t apr_file_pool_get(apr_file_t *f);</b>
     <dd>
  +Get the pool used by the file.
  +<p><dl>
  +<dt><b>Return Value</b>
  +  <dd>apr_pool_t the pool<p></dl></dl>
  +
  +<a name="apr_status_t-10"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_close(apr_dir_t *thedir);</b>
  +  <dd>
   close the specified directory.
   <p><dl>
   
  @@ -243,144 +310,136 @@
   </table>
     </dl></dl>
   
  -<a name="apr_count_canonical_elements"></a>
  +<a name="apr_status_t-11"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_count_canonical_elements(const apr_canon_t *trusted_name);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, apr_dir_t *thedir);</b>
     <dd>
  -Count the number of elements in a canonical name.
  +Read the next entry from the specified directory. 
  +<p><img src="../images//tip.gif"> All systems return . and .. as the first two files.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	trusted_name</th><td>An already canonicalized file path</td></tr>
  +	thedir</th><td>the directory descriptor to read from, and fill out.</td></tr>
   </table>
  -  <dt><b>Return Value</b>
  -  <dd>The number of elements in the name<p></dl></dl>
  +  </dl></dl>
   
  -<a name="apr_create_namedpipe"></a>
  +<a name="apr_status_t-12"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_namedpipe(const char *filename, apr_fileperms_t perm, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_rewind(apr_dir_t *thedir);</b>
     <dd>
  -Create a named pipe.
  +Rewind the directory to the first entry.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	filename</th><td>The filename of the named pipe
  -</td></tr>
   <tr valign=top><th align=right>
  -	perm</th><td>The permissions for the newly created pipe.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	cont</th><td>The pool to operate on.</td></tr>
  +	thedir</th><td>the directory descriptor to rewind.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_create_pipe"></a>
  +<a name="apr_status_t-13"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_pipe(apr_file_t **in, apr_file_t **out, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_open(apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont);</b>
     <dd>
  -Create an anonymous pipe.
  +Open the specified file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	in</th><td>The file descriptor to use as input to the pipe.
  +	new_file</th><td>The opened file descriptor.
   </td></tr>
   <tr valign=top><th align=right>
  -	out</th><td>The file descriptor to use as output from the pipe.
  +	fname</th><td>The full path to the file (using / on all systems)
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to operate on.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_dir_entry_ftype"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_entry_ftype(apr_filetype_e *type, apr_dir_t *thedir);</b>
  -  <dd>
  -Get the file type of the current directory entry.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  +	flag</th><td>Or'ed value of:
  +&lt;PRE&gt;
  +          APR_READ             open for reading
  +          APR_WRITE            open for writing
  +          APR_CREATE           create the file if not there
  +          APR_APPEND           file ptr is set to end prior to all writes
  +          APR_TRUNCATE         set length to zero if file exists
  +          APR_BINARY           not a text file (This flag is ignored on 
  +                               UNIX because it has no meaning)
  +          APR_BUFFERED         buffer the data.  Default is non-buffered
  +          APR_EXCL             return error if APR_CREATE and file exists
  +          APR_DELONCLOSE       delete the file after closing.
  +&lt;/PRE&gt;
  +</td></tr>
   <tr valign=top><th align=right>
  -	type</th><td>the file type of the directory entry.
  +	perm</th><td>Access permissions for file.
   </td></tr>
   <tr valign=top><th align=right>
  -	thedir</th><td>the currently open directory.</td></tr>
  +	cont</th><td>The pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_dir_entry_mtime"></a>
  +<a name="apr_status_t-14"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_entry_mtime(apr_time_t *mtime, apr_dir_t *thedir);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_close(apr_file_t *file);</b>
     <dd>
  -Get the last modified time of the current directory entry.
  +Close the specified file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	mtime</th><td>the last modified time of the directory entry.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	thedir</th><td>the currently open directory.</td></tr>
  +	file</th><td>The file descriptor to close.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_dir_entry_size"></a>
  +<a name="apr_status_t-15"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_entry_size(apr_size_t *size, apr_dir_t *thedir);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_remove(const char *path, apr_pool_t *cont);</b>
     <dd>
  -Get the size of the current directory entry.
  +delete the specified file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	size</th><td>the size of the directory entry.
  +	path</th><td>The full path to the file (using / on all systems)
   </td></tr>
   <tr valign=top><th align=right>
  -	thedir</th><td>the currently open directory.</td></tr>
  +	cont</th><td>The pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_dupfile"></a>
  +<a name="apr_status_t-16"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dupfile(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_rename(const char *from_path, const char *to_path, apr_pool_t *pool);</b>
     <dd>
  -duplicate the specified file descriptor.
  -<p><img src="../images//tip.gif"> *arg1 must point to a valid apr_file_t, or point to NULL
  +rename the specified file.
  +<p><img src="../images//tip.gif"> If a file exists at the new location, then it will be overwritten.  
  +     Moving files or directories across devices may not be possible.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	new_file</th><td>The structure to duplicate into.
  +	from_path</th><td>The full path to the original file (using / on all systems)
   </td></tr>
   <tr valign=top><th align=right>
  -	old_file</th><td>The file to duplicate.
  +	to_path</th><td>The full path to the new file (using / on all systems)
   </td></tr>
   <tr valign=top><th align=right>
  -	p</th><td>The pool to use for the new file.</td></tr>
  +	pool</th><td>The pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_eof"></a>
  +<a name="apr_status_t-17"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_eof(apr_file_t *fptr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_eof(apr_file_t *fptr);</b>
     <dd>
   Are we at the end of the file
   <p><img src="../images//tip.gif"> Returns APR_EOF if we are at the end of file, APR_SUCCESS otherwise.
  @@ -393,10 +452,10 @@
   </table>
     </dl></dl>
   
  -<a name="apr_ferror"></a>
  +<a name="apr_status_t-18"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ferror(apr_file_t *fptr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_error(apr_file_t *fptr);</b>
     <dd>
   Is there an error on the stream?
   <p><img src="../images//tip.gif"> Returns -1 if the error indicator is set, APR_SUCCESS otherwise.
  @@ -409,54 +468,53 @@
   </table>
     </dl></dl>
   
  -<a name="apr_fgets"></a>
  +<a name="apr_status_t-19"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_fgets(char *str, int len, apr_file_t *thefile);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *cont);</b>
     <dd>
  -Get a string from a specified file.
  +open standard error as an apr file pointer.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	str</th><td>The buffer to store the string in.
  -</td></tr>
   <tr valign=top><th align=right>
  -	len</th><td>The length of the string
  +	thefile</th><td>The apr file to use as stderr.
   </td></tr>
   <tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor to read from</td></tr>
  +	cont</th><td>The pool to allocate the file out of.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_flush"></a>
  +<a name="apr_status_t-20"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_flush(apr_file_t *thefile);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *cont);</b>
     <dd>
  -Flush the file's buffer.
  +open standard output as an apr file pointer.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor to flush</td></tr>
  +	thefile</th><td>The apr file to use as stdout.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cont</th><td>The pool to allocate the file out of.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_full_read"></a>
  +<a name="apr_status_t-21"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_full_read(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes);</b>
     <dd>
  -Read data from the specified file, ensuring that the buffer is filled
  -before returning.
  -<p><img src="../images//tip.gif"> apr_read will read up to the specified number of bytes, but never 
  -     more.  If there isn't enough data to fill that number of bytes, 
  -     then the process/thread will block until it is available or EOF 
  -     is reached.  If a char was put back into the stream via ungetc, 
  -     it will be the first character returned. 
  +Read data from the specified file.
  +<p><img src="../images//tip.gif"> apr_file_read will read up to the specified number of bytes, but never 
  +     more.  If there isn't enough data to fill that number of bytes, all 
  +     of the available data is read.  The third argument is modified to 
  +     reflect the number of bytes read.  If a char was put back into the 
  +     stream via ungetc, it will be the first character returned. 
        It is possible for both bytes to be read and an APR_EOF or other 
        error to be returned.
        APR_EINTR is never returned.
  @@ -470,25 +528,21 @@
   <tr valign=top><th align=right>
   	buf</th><td>The buffer to store the data to.
   </td></tr>
  -<tr valign=top><th align=right>
  -	nbytes</th><td>The number of bytes to read.
  -</td></tr>
   <tr valign=top><th align=right>
  -	bytes_read</th><td>If non-NULL, this will contain the number of bytes read.</td></tr>
  +	nbytes</th><td>On entry, the number of bytes to read; on exit, the number of bytes read.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_full_write"></a>
  +<a name="apr_status_t-22"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_full_write(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes);</b>
     <dd>
  -Write data to the specified file, ensuring that all of the data is
  -written before returning.
  -<p><img src="../images//tip.gif"> apr_write will write up to the specified number of bytes, but never 
  -     more.  If the OS cannot write that many bytes, the process/thread 
  -     will block until they can be written. Exceptional error such as 
  -     "out of space" or "pipe closed" will terminate with an error.
  +Write data to the specified file.
  +<p><img src="../images//tip.gif"> apr_file_write will write up to the specified number of bytes, but never 
  +     more.  If the OS cannot write that many bytes, it will write as many 
  +     as it can.  The third argument is modified to reflect the * number 
  +     of bytes written. 
        It is possible for both bytes to be written and an error to be returned.
        APR_EINTR is never returned.
   <p><dl>
  @@ -501,169 +555,148 @@
   <tr valign=top><th align=right>
   	buf</th><td>The buffer which contains the data.
   </td></tr>
  -<tr valign=top><th align=right>
  -	nbytes</th><td>The number of bytes to write.
  -</td></tr>
   <tr valign=top><th align=right>
  -	bytes_written</th><td>If non-NULL, this will contain the number of bytes written.</td></tr>
  +	nbytes</th><td>On entry, the number of bytes to write; on exit, the number 
  +              of bytes written.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_canonical_elements"></a>
  +<a name="apr_status_t-23"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_canonical_elements(char **path_elements, const apr_canon_t *trusted_name, int firstelement, int lastelement, apr_pool_t *pool);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes);</b>
     <dd>
  -Get the requested elements of a canonical name in a character string
  +Write data from iovec array to the specified file.
  +<p><img src="../images//tip.gif"> It is possible for both bytes to be written and an error to be returned.
  +     APR_EINTR is never returned.
  +     apr_file_writev is available even if the underlying operating system 
  +     doesn't provide writev().
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	path_elements</th><td>A location to store the path elements.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	trusted_name</th><td>An already canonicalized file path
  +	thefile</th><td>The file descriptor to write to.
   </td></tr>
   <tr valign=top><th align=right>
  -	firstelement</th><td>The numerical position of the element to start the 
  -       length at.
  +	vec</th><td>The array from which to get the data to write to the file.
   </td></tr>
   <tr valign=top><th align=right>
  -	lastelement</th><td>The numerical position of the element to end the
  -       length at.
  +	nvec</th><td>The number of elements in the struct iovec array. This must 
  +            be smaller than APR_MAX_IOVEC_SIZE.  If it isn't, the function 
  +            will fail with APR_EINVAL.
   </td></tr>
   <tr valign=top><th align=right>
  -	pool</th><td>The pool to allocate the path out of.</td></tr>
  +	nbytes</th><td>The number of bytes written.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_canonical_elements_length"></a>
  +<a name="apr_status_t-24"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_get_canonical_elements_length(const apr_canon_t *trusted_name, int firstelement, int lastelement);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_read_file(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read);</b>
     <dd>
  -Query the length of some elements of the canonical name
  +Read data from the specified file, ensuring that the buffer is filled
  +before returning.
  +<p><img src="../images//tip.gif"> apr_file_read will read up to the specified number of bytes, but never 
  +     more.  If there isn't enough data to fill that number of bytes, 
  +     then the process/thread will block until it is available or EOF 
  +     is reached.  If a char was put back into the stream via ungetc, 
  +     it will be the first character returned. 
  +     It is possible for both bytes to be read and an APR_EOF or other 
  +     error to be returned.
  +     APR_EINTR is never returned.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	trusted_name</th><td>An already canonicalized file path
  -</td></tr>
  -<tr valign=top><th align=right>
  -	firstelement</th><td>The numerical position of the element to start the 
  -       length at.
  +	thefile</th><td>The file descriptor to read from.
   </td></tr>
   <tr valign=top><th align=right>
  -	lastelement</th><td>The numerical position of the element to end the
  -       length at.</td></tr>
  -</table>
  -  <dt><b>Return Value</b>
  -  <dd>The length of requested elements.<p></dl></dl>
  -
  -<a name="apr_get_canonical_name"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_canonical_name(char **path, const apr_canon_t *trusted_name, apr_pool_t *pool);</b>
  -  <dd>
  -Get the canonical path in a character string
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	path</th><td>A location to store the canocical name
  +	buf</th><td>The buffer to store the data to.
   </td></tr>
   <tr valign=top><th align=right>
  -	trusted_name</th><td>An already canonicalized file path
  +	nbytes</th><td>The number of bytes to read.
   </td></tr>
   <tr valign=top><th align=right>
  -	pool</th><td>The pool to allocate the path out of.</td></tr>
  +	bytes_read</th><td>If non-NULL, this will contain the number of bytes read.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_dir_filename"></a>
  +<a name="apr_status_t-25"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_dir_filename(char **new_path, apr_dir_t *thedir);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_write_full(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written);</b>
     <dd>
  -Get the file name of the current directory entry.
  +Write data to the specified file, ensuring that all of the data is
  +written before returning.
  +<p><img src="../images//tip.gif"> apr_file_write will write up to the specified number of bytes, but never 
  +     more.  If the OS cannot write that many bytes, the process/thread 
  +     will block until they can be written. Exceptional error such as 
  +     "out of space" or "pipe closed" will terminate with an error.
  +     It is possible for both bytes to be written and an error to be returned.
  +     APR_EINTR is never returned.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	new_path</th><td>the file name of the directory entry.
  +	thefile</th><td>The file descriptor to write to.
   </td></tr>
  -<tr valign=top><th align=right>
  -	thedir</th><td>the currently open directory.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_get_filedata"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_filedata(void **data, const char *key, apr_file_t *file);</b>
  -  <dd>
  -Return the data associated with the current file.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
   <tr valign=top><th align=right>
  -	data</th><td>The user data associated with the file.
  +	buf</th><td>The buffer which contains the data.
   </td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The key to use for retreiving data associated with this file.
  +	nbytes</th><td>The number of bytes to write.
   </td></tr>
   <tr valign=top><th align=right>
  -	file</th><td>The currently open file.</td></tr>
  +	bytes_written</th><td>If non-NULL, this will contain the number of bytes written.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_filename"></a>
  +<a name="apr_status_t-26"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_filename(char **new_path, apr_file_t *thefile);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_putc(char ch, apr_file_t *thefile);</b>
     <dd>
  -return the file name of the current file.
  +put a character into the specified file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	new_path</th><td>The path of the file.
  +	ch</th><td>The character to write.
   </td></tr>
   <tr valign=top><th align=right>
  -	thefile</th><td>The currently open file.</td></tr>
  +	thefile</th><td>The file descriptor to write to</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_pipe_timeout"></a>
  +<a name="apr_status_t-27"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t *timeout);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_getc(char *ch, apr_file_t *thefile);</b>
     <dd>
  -Get the timeout value for a pipe or manipulate the blocking state.
  +get a character from the specified file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thepipe</th><td>The pipe we are getting a timeout for.
  +	ch</th><td>The character to write.
   </td></tr>
   <tr valign=top><th align=right>
  -	timeout</th><td>The current timeout value in microseconds.</td></tr>
  +	thefile</th><td>The file descriptor to write to</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_getc"></a>
  +<a name="apr_status_t-28"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getc(char *ch, apr_file_t *thefile);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_ungetc(char ch, apr_file_t *thefile);</b>
     <dd>
  -get a character from the specified file.
  +put a character back onto a specified stream.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -676,566 +709,374 @@
   </table>
     </dl></dl>
   
  -<a name="apr_getfileinfo"></a>
  +<a name="apr_status_t-29"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getfileinfo(apr_finfo_t *finfo, apr_file_t *thefile);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_gets(char *str, int len, apr_file_t *thefile);</b>
     <dd>
  -get the specified file's stats.
  +Get a string from a specified file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	finfo</th><td>Where to store the information about the file.
  +	str</th><td>The buffer to store the string in.
   </td></tr>
  -<tr valign=top><th align=right>
  -	thefile</th><td>The file to get information about.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_is_absolute"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_is_absolute(apr_canon_t **path);</b>
  -  <dd>
  -Determine if a canonical name is absolute.
  -<p><img src="../images//warning.gif" align=left> Do not trust !apr_is_absolute to determine if the path is 
  -         relative.  Also, test apr_is_virtualroot to avoid non-filesystem 
  -         pseudo roots.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
   <tr valign=top><th align=right>
  -	path</th><td>The canonical name to check</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_is_relative"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_is_relative(apr_canon_t **path);</b>
  -  <dd>
  -Determine if a canonical name is relative
  -<p><img src="../images//warning.gif" align=left> Do not trust !apr_is_relative to determine if the path is absolute
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  +	len</th><td>The length of the string
  +</td></tr>
   <tr valign=top><th align=right>
  -	path</th><td>The canonical name to check</td></tr>
  +	thefile</th><td>The file descriptor to read from</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_is_virtualroot"></a>
  +<a name="apr_status_t-30"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_is_virtualroot(apr_canon_t **path, int elements);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_puts(const char *str, apr_file_t *thefile);</b>
     <dd>
  -Determine if the elements 0..elements resolves to a platform's non-physical 
  -root, e.g. the //machine/ name that isn't an adaquately complete root for 
  -UNC paths.
  +Put the string into a specified file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	path</th><td>The canonical name to check
  +	str</th><td>The string to write.
   </td></tr>
   <tr valign=top><th align=right>
  -	elements</th><td>The number of elements to check.</td></tr>
  +	thefile</th><td>The file descriptor to write to</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_lock_file"></a>
  +<a name="apr_status_t-31"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_file(apr_file_t *thefile, int type);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_flush(apr_file_t *thefile);</b>
     <dd>
  -file (un)locking functions. Establish a lock on the specified, open file. The lock may be advisory
  -or mandatory, at the discretion of the platform. The lock applies to
  -the file as a whole, rather than a specific range. Locks are established
  -on a per-thread/process basis; a second lock by the same thread will not
  -block.
  +Flush the file's buffer.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	thefile</th><td>The file to lock.
  -</td></tr>
   <tr valign=top><th align=right>
  -	type</th><td>The type of lock to establish on the file.</td></tr>
  +	thefile</th><td>The file descriptor to flush</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_lstat"></a>
  +<a name="apr_status_t-32"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lstat(apr_finfo_t *finfo, const char *fname, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p);</b>
     <dd>
  -get the specified file's stats.  The file is specified by filename, 
  -instead of using a pre-opened file.  If the file is a symlink, this function
  -will get the stats for the symlink not the file the symlink refers to.
  +duplicate the specified file descriptor.
  +<p><img src="../images//tip.gif"> *arg1 must point to a valid apr_file_t, or point to NULL
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	finfo</th><td>Where to store the information about the file, which is
  -never touched if the call fails.
  +	new_file</th><td>The structure to duplicate into.
   </td></tr>
   <tr valign=top><th align=right>
  -	fname</th><td>The name of the file to stat.
  +	old_file</th><td>The file to duplicate.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>the pool to use to allocate the new file.</td></tr>
  +	p</th><td>The pool to use for the new file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_make_canonical_name"></a>
  +<a name="apr_status_t-33"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_make_canonical_name(apr_canon_t **new_name, const apr_canon_t *trusted_name, const char *child_name, int options, apr_pool_t *pool);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset);</b>
     <dd>
  -Canonicalize the path and name.
  -<p><img src="../images//tip.gif"> A canonical name is a name stripped of embedded backrefs "../", 
  -thisrefs "./", successive slashes (//), or any other ambigious file
  -name element.  Absolute canonical names referencing the same file must 
  -strcmp() identically, excluding symlinks or inconsistent use of the
  -APR_CANON_LOWERCASE or APR_CANON_TRUECASE options.<p>
  -If the name does not exist, or resolves to a relative name the given case
  -is preserved.  Insignificant elements are eliminated.  For example, on Win32 
  -this function removes trailing dots (which are allowed, but not stored in 
  -the file system), and "/../" under Unix is resolved to "/".  The relative 
  -canonical name may contain leading backrefs "../", but will never contain 
  -any other prohibited element.
  +Move the read/write file offset to a specified byte within a file.
  +<p><img src="../images//tip.gif"> The third argument is modified to be the offset the pointer
  +          was actually moved to.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	new_name</th><td>The newly allocated canonicalized trusted+child name
  -</td></tr>
   <tr valign=top><th align=right>
  -	trusted_name</th><td>Already canonical parent path; may be NULL.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	child_name</th><td>An absolute path or path relative to trusted_name.
  +	thefile</th><td>The file descriptor
   </td></tr>
   <tr valign=top><th align=right>
  -	options</th><td>Bit-wise of:
  -<PRE>
  -  APR_CANON_ONLY_ABSOLUTE     Require the trusted_name+child_name result is 
  -                              an absolute product or fail with error for the 
  -                              make and merge canonical name functions.
  -  APR_CANON_ALLOW_RELATIVE    Allow that the trusted_name+child_name result 
  -                              may be a relative result for the make and 
  -                              merge canonical name functions.
  -  APR_CANON_ONLY_RELATIVE     Require the trusted_name+child_name result is 
  -                              not an absolute path or fail with error for 
  -                              the make and merge canonical name functions.
  -  APR_CANON_CHILD_OF_TRUSTED  Require the trusted_name+child_name result is 
  -                              a child of trusted_name or fail with error for
  -                              the make and merge canonical name functions.
  -  APR_CANON_LOWERCASE         If file path elements exist (can stat) then 
  -                              fold the element's name to lowercase for the 
  -                              make and merge canonical name functions.
  -  APR_CANON_TRUECASE          If file path elements exist (can readdir) then
  -                              fold the element's name to the true case 
  -                              lowercase for the make and merge canonical 
  -                              name functions.
  -</PRE>
  +	where</th><td>How to move the pointer, one of:
  +&lt;PRE&gt;
  +           APR_SET  --  set the offset to offset
  +           APR_CUR  --  add the offset to the current position 
  +           APR_END  --  add the offset to the current file size
   </td></tr>
   <tr valign=top><th align=right>
  -	pool</th><td>The pool in which to allocate the new_name apr_canon_t</td></tr>
  +	offset</th><td>The offset to move the pointer to.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_make_dir"></a>
  +<a name="apr_status_t-34"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_make_dir(const char *path, apr_fileperms_t perm, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *cont);</b>
     <dd>
  -Create a new directory on the file system.
  +Create an anonymous pipe.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	path</th><td>the path for the directory to be created.  (use / on all systems)
  +	in</th><td>The file descriptor to use as input to the pipe.
   </td></tr>
   <tr valign=top><th align=right>
  -	perm</th><td>Permissions for the new direcoty.
  +	out</th><td>The file descriptor to use as output from the pipe.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>the pool to use.</td></tr>
  +	cont</th><td>The pool to operate on.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_merge_canonical_name"></a>
  +<a name="apr_status_t-35"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_merge_canonical_name(apr_canon_t **new_name, const apr_canon_t *trusted_name, const apr_canon_t *child_name, int options, apr_pool_t *pool);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *cont);</b>
     <dd>
  -Merge two canonical names into a single canonical name.
  +Create a named pipe.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	new_name</th><td>The newly allocated canonicalized trusted+child name
  -</td></tr>
   <tr valign=top><th align=right>
  -	trusted_name</th><td>Already canonical parent path; may be NULL.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	child_name</th><td>An already canonical absolute path or path relative to 
  -                  trusted_name.
  +	filename</th><td>The filename of the named pipe
   </td></tr>
   <tr valign=top><th align=right>
  -	options</th><td>See apr_make_canonical_name for options
  +	perm</th><td>The permissions for the newly created pipe.
   </td></tr>
   <tr valign=top><th align=right>
  -	pool</th><td>The pool to allocate the new_name out of.</td></tr>
  +	cont</th><td>The pool to operate on.</td></tr>
   </table>
  -  <dt><b>See Also</b><dd>
  -  <a href="#apr_make_canonical_name">apr_make_canonical_name</a><p></dl></dl>
  +  </dl></dl>
   
  -<a name="apr_open"></a>
  +<a name="apr_status_t-36"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_open(apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout);</b>
     <dd>
  -Open the specified file.
  -<p><img src="../images//tip.gif"> If perm is APR_OS_DEFAULT and the file is being created, appropriate 
  -     default permissions will be used.  *arg1 must point to a valid file_t, 
  -     or NULL (in which case it will be allocated)
  +Get the timeout value for a pipe or manipulate the blocking state.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	new_file</th><td>The opened file descriptor.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	fname</th><td>The full path to the file (using / on all systems)
  -</td></tr>
  -<tr valign=top><th align=right>
  -	flag</th><td>Or'ed value of:
  -<PRE>
  -          APR_READ             open for reading
  -          APR_WRITE            open for writing
  -          APR_CREATE           create the file if not there
  -          APR_APPEND           file ptr is set to end prior to all writes
  -          APR_TRUNCATE         set length to zero if file exists
  -          APR_BINARY           not a text file (This flag is ignored on 
  -                               UNIX because it has no meaning)
  -          APR_BUFFERED         buffer the data.  Default is non-buffered
  -          APR_EXCL             return error if APR_CREATE and file exists
  -          APR_DELONCLOSE       delete the file after closing.
  -</PRE>
  -</td></tr>
   <tr valign=top><th align=right>
  -	perm</th><td>Access permissions for file.
  +	thepipe</th><td>The pipe we are getting a timeout for.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use.</td></tr>
  +	timeout</th><td>The current timeout value in microseconds.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_open_stderr"></a>
  +<a name="apr_status_t-37"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_open_stderr(apr_file_t **thefile, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout);</b>
     <dd>
  -open standard error as an apr file pointer.
  +Set the timeout value for a pipe or manipulate the blocking state.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thefile</th><td>The apr file to use as stderr.
  +	thepipe</th><td>The pipe we are setting a timeout on.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to allocate the file out of.</td></tr>
  +	timeout</th><td>The timeout value in microseconds.  Values &lt; 0 mean wait 
  +       forever, 0 means do not wait at all.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_opendir"></a>
  +<a name="apr_status_t-38"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_opendir(apr_dir_t **new_dir, const char *dirname, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_lock(apr_file_t *thefile, int type);</b>
     <dd>
  -Open the specified directory.
  +file (un)locking functions. Establish a lock on the specified, open file. The lock may be advisory
  +or mandatory, at the discretion of the platform. The lock applies to
  +the file as a whole, rather than a specific range. Locks are established
  +on a per-thread/process basis; a second lock by the same thread will not
  +block.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	new_dir</th><td>The opened directory descriptor.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	dirname</th><td>The full path to the directory (use / on all systems)
  +	thefile</th><td>The file to lock.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use.</td></tr>
  +	type</th><td>The type of lock to establish on the file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_putc"></a>
  +<a name="apr_status_t-39"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_putc(char ch, apr_file_t *thefile);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_unlock(apr_file_t *thefile);</b>
     <dd>
  -put a character into the specified file.
  +Remove any outstanding locks on the file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	ch</th><td>The character to write.
  -</td></tr>
   <tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor to write to</td></tr>
  +	thefile</th><td>The file to unlock.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_puts"></a>
  +<a name="apr_status_t-40"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_puts(const char *str, apr_file_t *thefile);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_name_get(const char **new_path, apr_file_t *thefile);</b>
     <dd>
  -Put the string into a specified file.
  +return the file name of the current file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	str</th><td>The string to write.
  +	new_path</th><td>The path of the file.
   </td></tr>
   <tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor to write to</td></tr>
  +	thefile</th><td>The currently open file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_read"></a>
  +<a name="apr_status_t-41"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_data_get(void **data, const char *key, apr_file_t *file);</b>
     <dd>
  -Read data from the specified file.
  -<p><img src="../images//tip.gif"> apr_read will read up to the specified number of bytes, but never 
  -     more.  If there isn't enough data to fill that number of bytes, all 
  -     of the available data is read.  The third argument is modified to 
  -     reflect the number of bytes read.  If a char was put back into the 
  -     stream via ungetc, it will be the first character returned. 
  -     It is possible for both bytes to be read and an APR_EOF or other 
  -     error to be returned.
  -     APR_EINTR is never returned.
  +Return the data associated with the current file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor to read from.
  +	data</th><td>The user data associated with the file.
   </td></tr>
   <tr valign=top><th align=right>
  -	buf</th><td>The buffer to store the data to.
  +	key</th><td>The key to use for retreiving data associated with this file.
   </td></tr>
   <tr valign=top><th align=right>
  -	nbytes</th><td>On entry, the number of bytes to read; on exit, the number of bytes read.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_readdir"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_readdir(apr_dir_t *thedir);</b>
  -  <dd>
  -Read the next entry from the specified directory. 
  -<p><img src="../images//tip.gif"> All systems return . and .. as the first two files.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	thedir</th><td>the directory descriptor to read from, and fill out.</td></tr>
  +	file</th><td>The currently open file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_remove_dir"></a>
  +<a name="apr_status_t-42"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_remove_dir(const char *path, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_data_set(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup)(void *));</b>
     <dd>
  -Remove directory from the file system.
  +Set the data associated with the current file.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	path</th><td>the path for the directory to be removed.  (use / on all systems)
  +	file</th><td>The currently open file.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>the pool to use.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_remove_file"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_remove_file(const char *path, apr_pool_t *cont);</b>
  -  <dd>
  -delete the specified file.
  -<p><img src="../images//tip.gif"> If the file is open, it won't be removed until all instances are closed.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  +	data</th><td>The user data to associate with the file.
  +</td></tr>
   <tr valign=top><th align=right>
  -	path</th><td>The full path to the file (using / on all systems)
  +	key</th><td>The key to use for assocaiteing data with the file.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use.</td></tr>
  +	cleanup</th><td>The cleanup routine to use when the file is destroyed.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_rename_file"></a>
  +<a name="apr_status_t-43"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_rename_file(const char *from_path, const char *to_path, apr_pool_t *pool);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_perms_set(const char *fname, apr_fileperms_t perms);</b>
     <dd>
  -rename the specified file.
  -<p><img src="../images//tip.gif"> If a file exists at the new location, then it will be overwritten.  
  -     Moving files or directories across devices may not be possible.
  +set the specified file's permission bits.
  +<p><img src="../images//tip.gif"> Some platforms may not be able to apply all of the available 
  +     permission bits; APR_INCOMPLETE will be returned if some permissions 
  +     are specified which could not be set.
  +     Platforms which do not implement this feature will return APR_ENOTIMPL.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	from_path</th><td>The full path to the original file (using / on all systems)
  -</td></tr>
   <tr valign=top><th align=right>
  -	to_path</th><td>The full path to the new file (using / on all systems)
  +	fname</th><td>The file (name) to apply the permissions to.
   </td></tr>
   <tr valign=top><th align=right>
  -	pool</th><td>The pool to use.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_rewinddir"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_rewinddir(apr_dir_t *thedir);</b>
  -  <dd>
  -Rewind the directory to the first entry.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	thedir</th><td>the directory descriptor to rewind.</td></tr>
  +	perms</th><td>The permission bits to apply to the file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_seek"></a>
  +<a name="apr_status_t-44"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_seek(apr_file_t *thefile, apr_seek_where_t where,apr_off_t *offset);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *cont);</b>
     <dd>
  -Move the read/write file offset to a specified byte within a file.
  -<p><img src="../images//tip.gif"> The third argument is modified to be the offset the pointer
  -          was actually moved to.
  +Create a new directory on the file system.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor
  +	path</th><td>the path for the directory to be created.  (use / on all systems)
   </td></tr>
   <tr valign=top><th align=right>
  -	where</th><td>How to move the pointer, one of:
  -<PRE>
  -           APR_SET  --  set the offset to offset
  -           APR_CUR  --  add the offset to the current position 
  -           APR_END  --  add the offset to the current file size
  +	perm</th><td>Permissions for the new direcoty.
   </td></tr>
   <tr valign=top><th align=right>
  -	offset</th><td>The offset to move the pointer to.</td></tr>
  +	cont</th><td>the pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_filedata"></a>
  +<a name="apr_status_t-45"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_filedata(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup) (void *));</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_remove(const char *path, apr_pool_t *cont);</b>
     <dd>
  -Set the data associated with the current file.
  +Remove directory from the file system.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	file</th><td>The currently open file.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	data</th><td>The user data to associate with the file.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The key to use for assocaiteing data with the file.
  +	path</th><td>the path for the directory to be removed.  (use / on all systems)
   </td></tr>
   <tr valign=top><th align=right>
  -	cleanup</th><td>The cleanup routine to use when the file is destroyed.</td></tr>
  +	cont</th><td>the pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_pipe_timeout"></a>
  +<a name="apr_status_t-46"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t timeout);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *thefile);</b>
     <dd>
  -Set the timeout value for a pipe or manipulate the blocking state.
  +get the specified file's stats.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thepipe</th><td>The pipe we are setting a timeout on.
  +	finfo</th><td>Where to store the information about the file.
   </td></tr>
   <tr valign=top><th align=right>
  -	timeout</th><td>The timeout value in microseconds.  Values < 0 mean wait 
  -       forever, 0 means do not wait at all.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_setfileperms"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setfileperms(const char *fname, apr_fileperms_t perms);</b>
  -  <dd>
  -set the specified file's permission bits.
  -<p><img src="../images//tip.gif"> Some platforms may not be able to apply all of the available 
  -     permission bits; APR_INCOMPLETE will be returned if some permissions 
  -     are specified which could not be set.
  -     Platforms which do not implement this feature will return APR_ENOTIMPL.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	fname</th><td>The file (name) to apply the permissions to.
  +	wanted</th><td>The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values
   </td></tr>
   <tr valign=top><th align=right>
  -	perms</th><td>The permission bits to apply to the file.</td></tr>
  +	thefile</th><td>The file to get information about.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_stat"></a>
  +<a name="apr_status_t-7"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_stat(apr_finfo_t *finfo, const char *fname, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_stat(apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *cont);</b>
     <dd>
   get the specified file's stats.  The file is specified by filename, 
   instead of using a pre-opened file.
  @@ -1250,106 +1091,66 @@
   <tr valign=top><th align=right>
   	fname</th><td>The name of the file to stat.
   </td></tr>
  -<tr valign=top><th align=right>
  -	cont</th><td>the pool to use to allocate the new file.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_ungetc"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ungetc(char ch, apr_file_t *thefile);</b>
  -  <dd>
  -put a character back onto a specified stream.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
   <tr valign=top><th align=right>
  -	ch</th><td>The character to write.
  +	wanted</th><td>The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values
   </td></tr>
   <tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor to write to</td></tr>
  +	cont</th><td>the pool to use to allocate the new file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_unlock_file"></a>
  +<a name="apr_status_t-8"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_unlock_file(apr_file_t *thefile);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lstat(apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *cont);</b>
     <dd>
  -Remove any outstanding locks on the file.
  +get the specified file's stats.  The file is specified by filename, 
  +instead of using a pre-opened file.  If the file is a symlink, this function
  +will get the stats for the symlink not the file the symlink refers to.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thefile</th><td>The file to unlock.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_write"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes);</b>
  -  <dd>
  -Write data to the specified file.
  -<p><img src="../images//tip.gif"> apr_write will write up to the specified number of bytes, but never 
  -     more.  If the OS cannot write that many bytes, it will write as many 
  -     as it can.  The third argument is modified to reflect the * number 
  -     of bytes written. 
  -     It is possible for both bytes to be written and an error to be returned.
  -     APR_EINTR is never returned.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  +	finfo</th><td>Where to store the information about the file, which is
  +never touched if the call fails.
  +</td></tr>
   <tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor to write to.
  +	fname</th><td>The name of the file to stat.
   </td></tr>
   <tr valign=top><th align=right>
  -	buf</th><td>The buffer which contains the data.
  +	wanted</th><td>The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values
   </td></tr>
   <tr valign=top><th align=right>
  -	nbytes</th><td>On entry, the number of bytes to write; on exit, the number 
  -              of bytes written.</td></tr>
  +	cont</th><td>the pool to use to allocate the new file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_writev"></a>
  +<a name="apr_status_t-9"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_open(apr_dir_t **new_dir, const char *dirname, apr_pool_t *cont);</b>
     <dd>
  -Write data from iovec array to the specified file.
  -<p><img src="../images//tip.gif"> It is possible for both bytes to be written and an error to be returned.
  -     APR_EINTR is never returned.
  -     apr_writev is available even if the underlying operating system 
  -     doesn't provide writev().
  +Open the specified directory.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	thefile</th><td>The file descriptor to write to.
  -</td></tr>
   <tr valign=top><th align=right>
  -	vec</th><td>The array from which to get the data to write to the file.
  +	new_dir</th><td>The opened directory descriptor.
   </td></tr>
   <tr valign=top><th align=right>
  -	nvec</th><td>The number of elements in the struct iovec array. This must 
  -            be smaller than APR_MAX_IOVEC_SIZE.  If it isn't, the function 
  -            will fail with APR_EINVAL.
  +	dirname</th><td>The full path to the directory (use / on all systems)
   </td></tr>
   <tr valign=top><th align=right>
  -	nbytes</th><td>The number of bytes written.</td></tr>
  +	cont</th><td>The pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="int"></a>
  +<a name="int-2"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_fprintf(apr_file_t *fptr, const char *format, ...);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_file_printf(apr_file_t *fptr, const char *format, ...);</b>
     <dd>
   Write a string to a file using a printf format.
   <p><dl>
  @@ -1370,7 +1171,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +80 -64    apr-site/docs/APR_I18N_translation_library.html
  
  Index: APR_I18N_translation_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_I18N_translation_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_I18N_translation_library.html	2000/12/04 18:13:58	1.3
  +++ APR_I18N_translation_library.html	2001/02/11 02:54:57	1.4
  @@ -15,59 +15,86 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_xlate_close"></a>
  +<a name="-22"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_close(apr_xlate_t *convset);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -Close a codepage translation handle.
  +<p><img src="../images//tip.gif">
  +&lt;PRE&gt;
  + Specify APR_DEFAULT_CHARSET for one of the charset
  + names to indicate the charset of the source code at
  + compile time.  This is useful if there are literal
  + strings in the source code which must be translated
  + according to the charset of the source code.
  + APR_DEFAULT_CHARSET is not useful if the source code
  + of the caller was not encoded in the same charset as
  + APR at compile time.
  + Specify APR_LOCALE_CHARSET for one of the charset
  + names to indicate the charset of the current locale.
  +&lt;/PRE&gt;
   <p><dl>
  +</dl></dl>
  +
  +<a name="-23"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_int32_t);</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> This only works when converting between single-byte character sets.
  +     -1 will be returned if the conversion can't be performed.
  +<p><dl>
  +</dl></dl>
   
  +<a name="apr_int32_t"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_int32_t apr_xlate_conv_byte(apr_xlate_t *convset, unsigned char inchar);</b>
  +  <dd>
  +Convert a single-byte character from one charset to another.
  +<p><dl>
  +
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	convset</th><td>The codepage translation handle to close</td></tr>
  +	convset</th><td>The handle allocated by apr_xlate_open, specifying the 
  +               parameters of conversion
  +</td></tr>
  +<tr valign=top><th align=right>
  +	inchar</th><td>The single-byte character to convert.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_xlate_conv_buffer"></a>
  +<a name="apr_status_t-175"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_conv_buffer(apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_open(apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool);</b>
     <dd>
  -Convert a buffer of text from one codepage to another.
  +Set up for converting text from one charset to another.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	convset</th><td>The handle allocated by apr_xlate_open, specifying 
  -               the parameters of conversion
  -</td></tr>
  -<tr valign=top><th align=right>
  -	inbuf</th><td>The address of the source buffer
  +	convset</th><td>The handle to be filled in by this function
   </td></tr>
   <tr valign=top><th align=right>
  -	inbytes_left</th><td>Input: the amount of input data to be translated
  -                    Output: the amount of input data not yet translated
  +	topage</th><td>The name of the target charset
   </td></tr>
   <tr valign=top><th align=right>
  -	outbuf</th><td>The address of the destination buffer
  +	frompage</th><td>The name of the source charset
   </td></tr>
   <tr valign=top><th align=right>
  -	outbytes_left</th><td>Input: the size of the output buffer
  -                     Output: the amount of the output buffer not yet used</td></tr>
  +	pool</th><td>The pool to use</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_xlate_conv_byte"></a>
  +<a name="apr_status_t-176"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_int32_t apr_xlate_conv_byte(apr_xlate_t *convset, unsigned char inchar);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_get_sb(apr_xlate_t *convset, int *onoff);</b>
     <dd>
  -Convert a single-byte character from one charset to another.
  -<p><img src="../images//tip.gif"> This only works when converting between single-byte character sets.
  -     -1 will be returned if the conversion can't be performed.
  +Find out whether or not the specified conversion is single-byte-only.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -77,40 +104,48 @@
                  parameters of conversion
   </td></tr>
   <tr valign=top><th align=right>
  -	inchar</th><td>The single-byte character to convert.</td></tr>
  +	onoff</th><td>Output: whether or not the conversion is single-byte-only</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_xlate_conv_char"></a>
  +<a name="apr_status_t-177"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_conv_char(apr_xlate_t *convset, char inchar, char outchar);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_conv_buffer(apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left);</b>
     <dd>
  -The purpose of apr_xlate_conv_char is to translate one character
  -at a time.  This needs to be written carefully so that it works
  -with double-byte character sets.
  +Convert a buffer of text from one codepage to another.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	convset</th><td>The handle allocated by apr_xlate_open, specifying the
  -               parameters of conversion
  +	convset</th><td>The handle allocated by apr_xlate_open, specifying 
  +               the parameters of conversion
   </td></tr>
   <tr valign=top><th align=right>
  -	inchar</th><td>The character to convert
  +	inbuf</th><td>The address of the source buffer
   </td></tr>
   <tr valign=top><th align=right>
  -	outchar</th><td>The converted character</td></tr>
  +	inbytes_left</th><td>Input: the amount of input data to be translated
  +                    Output: the amount of input data not yet translated
  +</td></tr>
  +<tr valign=top><th align=right>
  +	outbuf</th><td>The address of the destination buffer
  +</td></tr>
  +<tr valign=top><th align=right>
  +	outbytes_left</th><td>Input: the size of the output buffer
  +                     Output: the amount of the output buffer not yet used</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_xlate_get_sb"></a>
  +<a name="apr_status_t-178"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_get_sb(apr_xlate_t *convset, int *onoff);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_conv_char(apr_xlate_t *convset, char inchar, char outchar);</b>
     <dd>
  -Find out whether or not the specified conversion is single-byte-only.
  +The purpose of apr_xlate_conv_char is to translate one character
  +at a time.  This needs to be written carefully so that it works
  +with double-byte character sets.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -120,44 +155,25 @@
                  parameters of conversion
   </td></tr>
   <tr valign=top><th align=right>
  -	onoff</th><td>Output: whether or not the conversion is single-byte-only</td></tr>
  +	inchar</th><td>The character to convert
  +</td></tr>
  +<tr valign=top><th align=right>
  +	outchar</th><td>The converted character</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_xlate_open"></a>
  +<a name="apr_status_t-179"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_open(apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_close(apr_xlate_t *convset);</b>
     <dd>
  -Set up for converting text from one charset to another.
  -<p><img src="../images//tip.gif">
  -<PRE>
  - Specify APR_DEFAULT_CHARSET for one of the charset
  - names to indicate the charset of the source code at
  - compile time.  This is useful if there are literal
  - strings in the source code which must be translated
  - according to the charset of the source code.
  - APR_DEFAULT_CHARSET is not useful if the source code
  - of the caller was not encoded in the same charset as
  - APR at compile time.
  - Specify APR_LOCALE_CHARSET for one of the charset
  - names to indicate the charset of the current locale.
  -</PRE>
  +Close a codepage translation handle.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	convset</th><td>The handle to be filled in by this function
  -</td></tr>
  -<tr valign=top><th align=right>
  -	topage</th><td>The name of the target charset
  -</td></tr>
  -<tr valign=top><th align=right>
  -	frompage</th><td>The name of the source charset
  -</td></tr>
  -<tr valign=top><th align=right>
  -	pool</th><td>The pool to use</td></tr>
  +	convset</th><td>The codepage translation handle to close</td></tr>
   </table>
     </dl></dl>
   </blockquote>
  @@ -165,7 +181,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +37 -37    apr-site/docs/APR_MD5_Library.html
  
  Index: APR_MD5_Library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_MD5_Library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_MD5_Library.html	2000/12/04 18:13:59	1.3
  +++ APR_MD5_Library.html	2001/02/11 02:54:57	1.4
  @@ -74,102 +74,102 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_status_t-10"></a>
  +<a name="apr_status_t-63"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5Final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_init(apr_md5_ctx_t *context);</b>
     <dd>
  -MD5 finalization.  Ends an MD5 message-digest operation, writing the 
  -message digest and zeroing the context
  +MD5 Initialize.  Begins an MD5 operation, writing a new context.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	digest</th><td>The final MD5 digest
  -</td></tr>
   <tr valign=top><th align=right>
  -	context</th><td>The MD5 content we are finalizing.</td></tr>
  +	context</th><td>The MD5 context to initialize.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_status_t-11"></a>
  +<a name="apr_status_t-64"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5Encode(const char *password, const char *salt, char *result, size_t nbytes);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_set_xlate(apr_md5_ctx_t *context, apr_xlate_t *xlate);</b>
     <dd>
  -Encode a password using an MD5 algorithm
  +MD5 translation setup.  Provides the APR translation handle to be used 
  +for translating the content before calculating the digest.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	password</th><td>The password to encode
  -</td></tr>
  -<tr valign=top><th align=right>
  -	salt</th><td>The salt to use for the encoding
  -</td></tr>
  -<tr valign=top><th align=right>
  -	result</th><td>The string to store the encoded password in
  +	context</th><td>The MD5 content to set the translation for.
   </td></tr>
   <tr valign=top><th align=right>
  -	nbytes</th><td>The length of the string</td></tr>
  +	xlate</th><td>The translation handle to use for this MD5 context</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_status_t-7"></a>
  +<a name="apr_status_t-65"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5Init(apr_md5_ctx_t *context);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen);</b>
     <dd>
  -MD5 Initialize.  Begins an MD5 operation, writing a new context.
  +MD5 block update operation.  Continue an MD5 message-digest operation, 
  +processing another message block, and updating the context.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	context</th><td>The MD5 context to initialize.</td></tr>
  +	context</th><td>The MD5 content to update.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	input</th><td>next message block to update
  +</td></tr>
  +<tr valign=top><th align=right>
  +	inputLen</th><td>The length of the next message block</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_status_t-8"></a>
  +<a name="apr_status_t-66"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5SetXlate(apr_md5_ctx_t *context, apr_xlate_t *xlate);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context);</b>
     <dd>
  -MD5 translation setup.  Provides the APR translation handle to be used 
  -for translating the content before calculating the digest.
  +MD5 finalization.  Ends an MD5 message-digest operation, writing the 
  +message digest and zeroing the context
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	context</th><td>The MD5 content to set the translation for.
  +	digest</th><td>The final MD5 digest
   </td></tr>
   <tr valign=top><th align=right>
  -	xlate</th><td>The translation handle to use for this MD5 context</td></tr>
  +	context</th><td>The MD5 content we are finalizing.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_status_t-9"></a>
  +<a name="apr_status_t-67"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5Update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_encode(const char *password, const char *salt, char *result, size_t nbytes);</b>
     <dd>
  -MD5 block update operation.  Continue an MD5 message-digest operation, 
  -processing another message block, and updating the context.
  +Encode a password using an MD5 algorithm
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	context</th><td>The MD5 content to update.
  +	password</th><td>The password to encode
   </td></tr>
   <tr valign=top><th align=right>
  -	input</th><td>next message block to update
  +	salt</th><td>The salt to use for the encoding
   </td></tr>
   <tr valign=top><th align=right>
  -	inputLen</th><td>The length of the next message block</td></tr>
  +	result</th><td>The string to store the encoded password in
  +</td></tr>
  +<tr valign=top><th align=right>
  +	nbytes</th><td>The length of the string</td></tr>
   </table>
     </dl></dl>
   </blockquote>
  @@ -177,7 +177,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +42 -5     apr-site/docs/APR_MMAP_library.html
  
  Index: APR_MMAP_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_MMAP_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_MMAP_library.html	2000/12/04 18:13:59	1.3
  +++ APR_MMAP_library.html	2001/02/11 02:54:57	1.4
  @@ -15,7 +15,10 @@
     <ul>
   <li><a href="APR_MMAP_library.html#apr_mmap_t-area">area</a>
   <li><a href="APR_MMAP_library.html#apr_mmap_t-cntxt">cntxt</a>
  +<li><a href="APR_MMAP_library.html#apr_mmap_t-mhandle">mhandle</a>
   <li><a href="APR_MMAP_library.html#apr_mmap_t-mm">mm</a>
  +<li><a href="APR_MMAP_library.html#apr_mmap_t-mv">mv</a>
  +<li><a href="APR_MMAP_library.html#apr_mmap_t-pstart">pstart</a>
   <li><a href="APR_MMAP_library.html#apr_mmap_t-size">size</a>
   </ul>
   
  @@ -34,7 +37,10 @@
   The MMAP structure<h2>Member Index</h2>
   <ul><li><a href="APR_MMAP_library.html#apr_mmap_t-area">    area_id area</a>
   	<li><a href="APR_MMAP_library.html#apr_mmap_t-cntxt">    apr_pool_t *cntxt</a>
  +	<li><a href="APR_MMAP_library.html#apr_mmap_t-mhandle">    HANDLE mhandle</a>
   	<li><a href="APR_MMAP_library.html#apr_mmap_t-mm">    void *mm</a>
  +	<li><a href="APR_MMAP_library.html#apr_mmap_t-mv">    void *mv</a>
  +	<li><a href="APR_MMAP_library.html#apr_mmap_t-pstart">    size_t pstart</a>
   	<li><a href="APR_MMAP_library.html#apr_mmap_t-size">    size_t size</a>
   	</ul><h2>Class Variables</h2>
   <blockquote>
  @@ -55,6 +61,14 @@
   <p><dl>
   </dl></dl>
   
  +  <a name="mhandle"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    HANDLE mhandle;</b>
  +<dd>
  +The handle of the file mapping
  +<p><dl>
  +</dl></dl>
  +
     <a name="mm"></a>
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    void *mm;</b>
  @@ -63,6 +77,22 @@
   <p><dl>
   </dl></dl>
   
  +  <a name="mv"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    void *mv;</b>
  +<dd>
  +The start of the real memory page area (mapped view)
  +<p><dl>
  +</dl></dl>
  +
  +  <a name="pstart"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    size_t pstart;</b>
  +<dd>
  +The physical start, size and offset
  +<p><dl>
  +</dl></dl>
  +
     <a name="size"></a>
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    size_t size;</b>
  @@ -74,10 +104,10 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_mmap_create"></a>
  +<a name="apr_status_t-68"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mmap_create(apr_mmap_t ** newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_pool_t *cntxt);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mmap_create(apr_mmap_t **newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_int32_t flag, apr_pool_t *cntxt);</b>
     <dd>
   Create a new mmap'ed file out of an existing APR file.
   <p><dl>
  @@ -97,11 +127,18 @@
   	size</th><td>The size of the file
   </td></tr>
   <tr valign=top><th align=right>
  +	flag</th><td>bit-wise or of:
  +&lt;PRE&gt;
  +         APR_MMAP_READ       MMap opened for reading
  +         APR_MMAP_WRITE      MMap opened for writing
  +&lt;/PRE&gt;
  +</td></tr>
  +<tr valign=top><th align=right>
   	cntxt</th><td>The pool to use when creating the mmap.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_mmap_delete"></a>
  +<a name="apr_status_t-69"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mmap_delete(apr_mmap_t *mmap);</b>
  @@ -116,7 +153,7 @@
   </table>
     </dl></dl>
   
  -<a name="apr_mmap_offset"></a>
  +<a name="apr_status_t-70"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mmap_offset(void **addr, apr_mmap_t *mmap, apr_off_t offset);</b>
  @@ -141,7 +178,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +419 -335  apr-site/docs/APR_Network_library.html
  
  Index: APR_Network_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_Network_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_Network_library.html	2000/12/04 18:13:59	1.3
  +++ APR_Network_library.html	2001/02/11 02:54:57	1.4
  @@ -25,6 +25,7 @@
   <li><a href="APR_Network_library.html#apr_sockaddr_t-hostname">hostname</a>
   <li><a href="APR_Network_library.html#apr_sockaddr_t-ipaddr_len">ipaddr_len</a>
   <li><a href="APR_Network_library.html#apr_sockaddr_t-ipaddr_ptr">ipaddr_ptr</a>
  +<li><a href="APR_Network_library.html#apr_sockaddr_t-next">next</a>
   <li><a href="APR_Network_library.html#apr_sockaddr_t-pool">pool</a>
   <li><a href="APR_Network_library.html#apr_sockaddr_t-port">port</a>
   <li><a href="APR_Network_library.html#apr_sockaddr_t-salen">salen</a>
  @@ -99,6 +100,7 @@
   	<li><a href="APR_Network_library.html#apr_sockaddr_t-hostname">    char *hostname</a>
   	<li><a href="APR_Network_library.html#apr_sockaddr_t-ipaddr_len">    int ipaddr_len</a>
   	<li><a href="APR_Network_library.html#apr_sockaddr_t-ipaddr_ptr">    void *ipaddr_ptr</a>
  +	<li><a href="APR_Network_library.html#apr_sockaddr_t-next">    apr_sockaddr_t *next</a>
   	<li><a href="APR_Network_library.html#apr_sockaddr_t-pool">    apr_pool_t *pool</a>
   	<li><a href="APR_Network_library.html#apr_sockaddr_t-port">    apr_port_t port</a>
   	<li><a href="APR_Network_library.html#apr_sockaddr_t-salen">    apr_socklen_t salen</a>
  @@ -140,6 +142,15 @@
   <p><dl>
   </dl></dl>
   
  +  <a name="next"></a>
  +    <dl><dt>
  +	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_sockaddr_t *next;</b>
  +<dd>
  +If multiple addresses were found by apr_sockaddr_info_get(), this 
  + points to a representation of the next address.
  +<p><dl>
  +</dl></dl>
  +
     <a name="pool"></a>
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_pool_t *pool;</b>
  @@ -175,138 +186,224 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_accept"></a>
  +<a name="-10"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_accept(apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -Accept a new connection request
  +<p><img src="../images//warning.gif" align=left> This is not available on all platforms.  Platforms that have the
  +     ability to poll files for data to be read/written/exceptions will
  +     have the APR_FILES_AS_SOCKETS macro defined as true.
  +<p><dl>
  +</dl></dl>
  +
  +<a name="-5"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> This does not actually close the socket descriptor, it just
  +     controls which calls are still valid on the socket.
  +<p><dl>
  +</dl></dl>
  +
  +<a name="-6"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
  +  <dd>
  +<p><img src="../images//tip.gif">
  +&lt;PRE&gt;
  +This functions acts like a blocking write by default.  To change 
  +this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
  +It is possible for both bytes to be sent and an error to be returned.
  +APR_EINTR is never returned.
  +&lt;/PRE&gt;
   <p><dl>
  +</dl></dl>
   
  +<a name="-7"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
  +  <dd>
  +<p><img src="../images//tip.gif">
  +&lt;PRE&gt;
  +This functions acts like a blocking write by default.  To change 
  +this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
  +The number of bytes actually sent is stored in argument 3.
  +It is possible for both bytes to be sent and an error to be returned.
  +APR_EINTR is never returned.
  +&lt;/PRE&gt;
  +<p><dl>
  +</dl></dl>
  +
  +<a name="-8"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> This functions acts like a blocking write by default.  To change 
  +     this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
  +     The number of bytes actually sent is stored in argument 5.
  +<p><dl>
  +</dl></dl>
  +
  +<a name="-9"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
  +  <dd>
  +<p><img src="../images//tip.gif">
  +&lt;PRE&gt;
  +This functions acts like a blocking read by default.  To change 
  +this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
  +The number of bytes actually sent is stored in argument 3.
  +It is possible for both bytes to be received and an APR_EOF or
  +other error to be returned.
  +APR_EINTR is never returned.
  +&lt;/PRE&gt;
  +<p><dl>
  +</dl></dl>
  +
  +<a name="apr_status_t-100"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_socket_clear(apr_pollfd_t *aprset, apr_int16_t events);</b>
  +  <dd>
  +Remove all sockets from the poll structure.
  +<p><dl>
  +
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	new_sock</th><td>A copy of the socket that is connected to the socket that
  -                made the connection request.  This is the socket which should
  -                be used for all future communication.
  -</td></tr>
   <tr valign=top><th align=right>
  -	sock</th><td>The socket we are listening on.
  +	aprset</th><td>The poll structure we will be using.
   </td></tr>
   <tr valign=top><th align=right>
  -	connection_pool</th><td>The pool for the new socket.</td></tr>
  +	events</th><td>The events to clear from all sockets.  One of:
  +&lt;PRE&gt;
  +           APR_POLLIN       signal if read will not block
  +           APR_POLLPRI      signal if prioirty data is availble to be read
  +           APR_POLLOUT      signal if write will not block
  +&lt;/PRE&gt;</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_add_poll_socket"></a>
  +<a name="apr_status_t-101"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_add_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t event);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_revents_get(apr_int16_t *event, apr_socket_t *sock, apr_pollfd_t *aprset);</b>
     <dd>
  -Add a socket to the poll structure.
  +Get the return events for the specified socket.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	aprset</th><td>The poll structure we will be using.
  +	event</th><td>The returned events for the socket.  One of:
  +&lt;PRE&gt;
  +           APR_POLLIN       Data is available to be read 
  +           APR_POLLPRI      Prioirty data is availble to be read
  +           APR_POLLOUT      Write will succeed
  +           APR_POLLERR      An error occurred on the socket
  +           APR_POLLHUP      The connection has been terminated
  +           APR_POLLNVAL     This is an invalid socket to poll on.
  +                            Socket not open.
  +&lt;/PRE&gt;
   </td></tr>
   <tr valign=top><th align=right>
  -	socket</th><td>The socket to add to the current poll structure.
  +	sock</th><td>The socket we wish to get information about.
   </td></tr>
   <tr valign=top><th align=right>
  -	event</th><td>The events to look for when we do the poll.  One of:
  -<PRE>
  -           APR_POLLIN       signal if read will not block
  -           APR_POLLPRI      signal if prioirty data is availble to be read
  -           APR_POLLOUT      signal if write will not block
  -</PRE></td></tr>
  +	aprset</th><td>The poll structure we will be using.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_bind"></a>
  +<a name="apr_status_t-102"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_data_get(apr_pollfd_t *pollfd, const char *key, void *data);</b>
     <dd>
  -Bind the socket to its associated port
  -<p><img src="../images//tip.gif"> This may be where we will find out if there is any other process
  -     using the selected port.
  +Return the data associated with the current poll.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to bind
  +	pollfd</th><td>The currently open pollfd.
   </td></tr>
   <tr valign=top><th align=right>
  -	sa</th><td>The socket address to bind to</td></tr>
  +	key</th><td>The key to use for retreiving data associated with a poll struct.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	data</th><td>The user data associated with the pollfd.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_clear_poll_sockets"></a>
  +<a name="apr_status_t-103"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_clear_poll_sockets(apr_pollfd_t *aprset, apr_int16_t events);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_data_set(apr_pollfd_t *pollfd, void *data, const char *key, apr_status_t (*cleanup)(void *));</b>
     <dd>
  -Remove all sockets from the poll structure.
  +Set the data associated with the current poll.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	aprset</th><td>The poll structure we will be using.
  +	pollfd</th><td>The currently open pollfd.
   </td></tr>
   <tr valign=top><th align=right>
  -	events</th><td>The events to clear from all sockets.  One of:
  -<PRE>
  -           APR_POLLIN       signal if read will not block
  -           APR_POLLPRI      signal if prioirty data is availble to be read
  -           APR_POLLOUT      signal if write will not block
  -</PRE></td></tr>
  +	data</th><td>The key to associate with the data.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	key</th><td>The user data to associate with the pollfd.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cleanup</th><td>The cleanup function</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_close_socket"></a>
  +<a name="apr_status_t-104"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_close_socket(apr_socket_t *thesocket);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file);</b>
     <dd>
  -Close a tcp socket.
  +Convert a File type to a socket so that it can be used in a poll operation.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thesocket</th><td>The socket to close</td></tr>
  +	newsock</th><td>the newly created socket which represents a file.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	file</th><td>the file to mask as a socket.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_connect"></a>
  +<a name="apr_status_t-105"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getservbyname(apr_sockaddr_t *sockaddr, const char *servname);</b>
     <dd>
  -Issue a connection request to a socket either on the same machine 
  -or a different one.
  +Given an apr_sockaddr_t and a service name, set the port for the service
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sock</th><td>The socket we wish to use for our side of the connection
  +	sockaddr</th><td>The apr_sockaddr_t that will have it's port set
   </td></tr>
   <tr valign=top><th align=right>
  -	sa</th><td>The address of the machine we wish to connect to.  If NULL,
  -          APR assumes that the sockaddr_in in the apr_socket is 
  -          completely filled out.</td></tr>
  +	servname</th><td>The name of the service you wish to use</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_create_socket"></a>
  +<a name="apr_status_t-71"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_socket(apr_socket_t **new_sock, int family, int type, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_create(apr_socket_t **new_sock, int family, int type, apr_pool_t *cont);</b>
     <dd>
   Create a socket.
   <p><dl>
  @@ -327,207 +424,224 @@
   </table>
     </dl></dl>
   
  -<a name="apr_get_hostname"></a>
  +<a name="apr_status_t-72"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_hostname(char **name, apr_interface_e which, apr_socket_t *sock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how);</b>
     <dd>
  -Get name of a machine we are currently connected to.
  +Shutdown either reading, writing, or both sides of a tcp socket.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	name</th><td>A buffer to store the hostname in.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	which</th><td>Which interface do we wnt the hostname for?
  +	thesocket</th><td>The socket to close
   </td></tr>
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to examine.</td></tr>
  +	how</th><td>How to shutdown the socket.  One of:
  +&lt;PRE&gt;
  +           APR_SHUTDOWN_READ         no longer allow read requests
  +           APR_SHUTDOWN_WRITE        no longer allow write requests
  +           APR_SHUTDOWN_READWRITE    no longer allow read or write requests 
  +&lt;/PRE&gt;</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_inaddr"></a>
  +<a name="apr_status_t-73"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_inaddr(apr_in_addr_t *addr, char *hostname);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_close(apr_socket_t *thesocket);</b>
     <dd>
  -Given a hostname and a port, create an apr_in_addr for it...
  +Close a tcp socket.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	addr</th><td>The apr_in_addr_t structure to return.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	hostname</th><td>The hostname to lookup.</td></tr>
  +	thesocket</th><td>The socket to close</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_ipaddr"></a>
  +<a name="apr_status_t-74"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_ipaddr(char **addr, apr_sockaddr_t *sockaddr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa);</b>
     <dd>
  -Return the IP address (in numeric address string format) in
  -an APR socket address.
  +Bind the socket to its associated port
  +<p><img src="../images//tip.gif"> This may be where we will find out if there is any other process
  +     using the selected port.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	addr</th><td>The IP address.
  +	sock</th><td>The socket to bind
   </td></tr>
   <tr valign=top><th align=right>
  -	sockaddr</th><td>The socket address to reference.</td></tr>
  +	sa</th><td>The socket address to bind to</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_polldata"></a>
  +<a name="apr_status_t-75"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_polldata(apr_pollfd_t *pollfd, const char *key, void *data);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog);</b>
     <dd>
  -Return the data associated with the current poll.
  +Listen to a bound socket for connections.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	pollfd</th><td>The currently open pollfd.
  -</td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The key to use for retreiving data associated with a poll struct.
  +	sock</th><td>The socket to listen on
   </td></tr>
   <tr valign=top><th align=right>
  -	data</th><td>The user data associated with the pollfd.</td></tr>
  +	backlog</th><td>The number of outstanding connections allowed in the sockets
  +               listen queue.  If this value is less than zero, the listen
  +               queue size is set to zero.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_port"></a>
  +<a name="apr_status_t-76"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_port(apr_port_t *port, apr_sockaddr_t *sockaddr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_accept(apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool);</b>
     <dd>
  -Return the port in an APR socket address.
  +Accept a new connection request
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	port</th><td>The port from the socket address.
  +	new_sock</th><td>A copy of the socket that is connected to the socket that
  +                made the connection request.  This is the socket which should
  +                be used for all future communication.
   </td></tr>
   <tr valign=top><th align=right>
  -	sockaddr</th><td>The socket address to reference.</td></tr>
  +	sock</th><td>The socket we are listening on.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	connection_pool</th><td>The pool for the new socket.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_revents"></a>
  +<a name="apr_status_t-77"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_revents(apr_int16_t *event, apr_socket_t *sock, apr_pollfd_t *aprset);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa);</b>
     <dd>
  -Get the return events for the specified socket.
  +Issue a connection request to a socket either on the same machine 
  +or a different one.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	event</th><td>The returned events for the socket.  One of:
  -<PRE>
  -           APR_POLLIN       Data is available to be read 
  -           APR_POLLPRI      Prioirty data is availble to be read
  -           APR_POLLOUT      Write will succeed
  -           APR_POLLERR      An error occurred on the socket
  -           APR_POLLHUP      The connection has been terminated
  -           APR_POLLNVAL     This is an invalid socket to poll on.
  -                            Socket not open.
  -</PRE>
  -</td></tr>
   <tr valign=top><th align=right>
  -	sock</th><td>The socket we wish to get information about.
  +	sock</th><td>The socket we wish to use for our side of the connection
   </td></tr>
   <tr valign=top><th align=right>
  -	aprset</th><td>The poll structure we will be using.</td></tr>
  +	sa</th><td>The address of the machine we wish to connect to.  If NULL,
  +          APR assumes that the sockaddr_in in the apr_socket is 
  +          completely filled out.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_sockaddr"></a>
  +<a name="apr_status_t-78"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_sockaddr(apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_info_get(apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p);</b>
     <dd>
  -Return an apr_sockaddr_t from an apr_socket_t
  +Create apr_sockaddr_t from hostname, address family, and port.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sa</th><td>The returned apr_sockaddr_t.
  +	sa</th><td>The new apr_sockaddr_t.
   </td></tr>
   <tr valign=top><th align=right>
  -	which</th><td>Which interface do we want the apr_sockaddr_t for?
  +	hostname</th><td>The hostname or numeric address string to resolve/parse.
   </td></tr>
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to use</td></tr>
  +	family</th><td>The address family to use, or APR_UNSPEC if the system should 
  +              decide.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	port</th><td>The port number.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	flags</th><td>Special processing flags.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	p</th><td>The pool for the apr_sockaddr_t and associated storage.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_socketdata"></a>
  +<a name="apr_status_t-79"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_socketdata(void **data, const char *key, apr_socket_t *sock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getnameinfo(char **hostname, apr_sockaddr_t *sa, apr_int32_t flags);</b>
     <dd>
  -Return the data associated with the current socket
  +Look up the host name from an apr_sockaddr_t.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	data</th><td>The user data associated with the socket.
  +	hostname</th><td>The hostname.
   </td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The key to associate with the user data.
  +	sa</th><td>The apr_sockaddr_t.
   </td></tr>
   <tr valign=top><th align=right>
  -	sock</th><td>The currently open socket.</td></tr>
  +	flags</th><td>Special processing flags.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_getaddrinfo"></a>
  +<a name="apr_status_t-80"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getaddrinfo(apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_parse_addr_port(char **addr, char **scope_id, apr_port_t *port, const char *str, apr_pool_t *p);</b>
     <dd>
  -Create apr_sockaddr_t from hostname, address family, and port.
  +Parse hostname/IP address with scope id and port.
  +Any of the following strings are accepted:
  +  8080                  (just the port number)
  +  www.apache.org        (just the hostname)
  +  www.apache.org:8080   (hostname and port number)
  +  [fe80::1]:80          (IPv6 numeric address string only)
  +  [fe80::1%eth0]        (IPv6 numeric address string and scope id)
  +Invalid strings:
  +                        (empty string)
  +  [abc]                 (not valid IPv6 numeric address string)
  +  abc:65536             (invalid port number)
  +<p><img src="../images//tip.gif"> If scope id shouldn't be allowed, check for scope_id != NULL in addition 
  +     to checking the return code.  If addr/hostname should be required, check 
  +     for addr == NULL in addition to checking the return code.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	sa</th><td>The new apr_sockaddr_t.
  -</td></tr>
   <tr valign=top><th align=right>
  -	hostname</th><td>The hostname or numeric address string to resolve/parse.
  +	addr</th><td>The new buffer containing just the hostname.  On output, *addr 
  +            will be NULL if no hostname/IP address was specfied.
   </td></tr>
   <tr valign=top><th align=right>
  -	family</th><td>The address family to use, or APR_UNSPEC if the system should 
  -              decide.
  +	scope_id</th><td>The new buffer containing just the scope id.  On output, 
  +                *scope_id will be NULL if no scope id was specified.
   </td></tr>
   <tr valign=top><th align=right>
  -	port</th><td>The port number.
  +	port</th><td>The port number.  On output, *port will be 0 if no port was 
  +            specified.
   </td></tr>
   <tr valign=top><th align=right>
  -	flags</th><td>Special processing flags.
  +	str</th><td>The input string to be parsed.
   </td></tr>
   <tr valign=top><th align=right>
  -	p</th><td>The pool for the apr_sockaddr_t and associated storage.</td></tr>
  +	p</th><td>The pool from which *addr and *scope_id are allocated.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_gethostname"></a>
  +<a name="apr_status_t-81"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_gethostname(char *buf, int len, apr_pool_t *cont);</b>
  @@ -549,152 +663,136 @@
   </table>
     </dl></dl>
   
  -<a name="apr_getservbyname"></a>
  +<a name="apr_status_t-82"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getservbyname(apr_sockaddr_t *sockaddr, const char *servname);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock);</b>
     <dd>
  -Given an apr_sockaddr_t and a service name, set the port for the service
  +Return the data associated with the current socket
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sockaddr</th><td>The apr_sockaddr_t that will have it's port set
  +	data</th><td>The user data associated with the socket.
   </td></tr>
   <tr valign=top><th align=right>
  -	servname</th><td>The name of the service you wish to use</td></tr>
  +	key</th><td>The key to associate with the user data.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	sock</th><td>The currently open socket.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_getsocketopt"></a>
  +<a name="apr_status_t-83"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t* on);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key, apr_status_t (*cleanup)(void*));</b>
     <dd>
  -Query socket options for the specified socket
  +Set the data associated with the current socket.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to query
  +	sock</th><td>The currently open socket.
   </td></tr>
   <tr valign=top><th align=right>
  -	opt</th><td>The option we would like to query.  One of:
  -<PRE>
  -           APR_SO_DEBUG      --  turn on debugging information 
  -           APR_SO_KEEPALIVE  --  keep connections active
  -           APR_SO_LINGER     --  lingers on close if data is present
  -           APR_SO_NONBLOCK   --  Turns blocking on/off for socket
  -           APR_SO_REUSEADDR  --  The rules used in validating addresses
  -                                 supplied to bind should allow reuse
  -                                 of local addresses.
  -           APR_SO_TIMEOUT    --  Set the timeout value in microseconds.
  -                                 values < 0 mean wait forever.  0 means
  -                                 don't wait at all.
  -           APR_SO_SNDBUF     --  Set the SendBufferSize
  -           APR_SO_RCVBUF     --  Set the ReceiveBufferSize
  -           APR_SO_DISCONNECTED -- Query the disconnected state of the socket.
  -                                 (Currently only used on Windows)
  -</PRE>
  +	data</th><td>The user data to associate with the socket.
   </td></tr>
   <tr valign=top><th align=right>
  -	on</th><td>Socket option returned on the call.</td></tr>
  +	key</th><td>The key to associate with the data.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cleanup</th><td>The cleanup to call when the socket is destroyed.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_listen"></a>
  +<a name="apr_status_t-84"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len);</b>
     <dd>
  -Listen to a bound socket for connections.
  +Send data over a network.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to listen on
  +	sock</th><td>The socket to send the data over.
   </td></tr>
   <tr valign=top><th align=right>
  -	backlog</th><td>The number of outstanding connections allowed in the sockets
  -               listen queue.  If this value is less than zero, the listen
  -               queue size is set to zero.</td></tr>
  +	buf</th><td>The buffer which contains the data to be sent.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	len</th><td>On entry, the number of bytes to send; on exit, the number
  +           of bytes sent.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_mask_poll_socket"></a>
  +<a name="apr_status_t-85"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mask_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t events);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len);</b>
     <dd>
  -Modify a socket in the poll structure with mask.
  +Send multiple packets of data over a network.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	aprset</th><td>The poll structure we will be using.
  +	sock</th><td>The socket to send the data over.
   </td></tr>
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to modify in poll structure.
  +	vec</th><td>The array of iovec structs containing the data to send
   </td></tr>
   <tr valign=top><th align=right>
  -	events</th><td>The events to stop looking for during the poll.  One of:
  -<PRE>
  -           APR_POLLIN       signal if read will not block
  -           APR_POLLPRI      signal if prioirty data is availble to be read
  -           APR_POLLOUT      signal if write will not block
  -</PRE></td></tr>
  +	nvec</th><td>The number of iovec structs in the array
  +</td></tr>
  +<tr valign=top><th align=right>
  +	len</th><td>Receives the number of bytes actually written</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_poll"></a>
  +<a name="apr_status_t-86"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll(apr_pollfd_t *aprset, apr_int32_t *nsds, apr_interval_time_t timeout);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags);</b>
     <dd>
  -Poll the sockets in the poll structure
  -<p><img src="../images//tip.gif">
  -<PRE>
  -The number of sockets signalled is returned in the second argument. 
  -       This is a blocking call, and it will not return until either a 
  -       socket has been signalled, or the timeout has expired. 
  -</PRE>
  +Send a file from an open file descriptor to a socket, along with 
  +optional headers and trailers
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	aprset</th><td>The poll structure we will be using.
  +	sock</th><td>The socket to which we're writing
   </td></tr>
   <tr valign=top><th align=right>
  -	nsds</th><td>The number of sockets we are polling.
  +	file</th><td>The open file from which to read
   </td></tr>
   <tr valign=top><th align=right>
  -	timeout</th><td>The amount of time in microseconds to wait.  This is 
  -               a maximum, not a minimum.  If a socket is signalled, we 
  -               will wake up before this time.  A negative number means 
  -               wait until a socket is signalled.</td></tr>
  +	hdtr</th><td>A structure containing the headers and trailers to send
  +</td></tr>
  +<tr valign=top><th align=right>
  +	offset</th><td>Offset into the file where we should begin writing
  +</td></tr>
  +<tr valign=top><th align=right>
  +	len</th><td>(input)  - Number of bytes to send from the file 
  +           (output) - Number of bytes actually sent, 
  +                      including headers, file, and trailers
  +</td></tr>
  +<tr valign=top><th align=right>
  +	flags</th><td>APR flags that are mapped to OS specific flags</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_recv"></a>
  +<a name="apr_status_t-87"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_recv(apr_socket_t *sock, char *buf, apr_size_t *len);</b>
     <dd>
   Read data from a network.
  -<p><img src="../images//tip.gif">
  -<PRE>
  -This functions acts like a blocking read by default.  To change 
  -this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
  -The number of bytes actually sent is stored in argument 3.
  -It is possible for both bytes to be received and an APR_EOF or
  -other error to be returned.
  -APR_EINTR is never returned.
  -</PRE>
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -711,305 +809,291 @@
   </table>
     </dl></dl>
   
  -<a name="apr_remove_poll_socket"></a>
  +<a name="apr_status_t-88"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_remove_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on);</b>
     <dd>
  -Remove a socket from the poll structure.
  +Setup socket options for the specified socket
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	aprset</th><td>The poll structure we will be using.
  +	sock</th><td>The socket to set up.
   </td></tr>
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to remove from the current poll structure.</td></tr>
  +	opt</th><td>The option we would like to configure.  One of:
  +&lt;PRE&gt;
  +           APR_SO_DEBUG      --  turn on debugging information 
  +           APR_SO_KEEPALIVE  --  keep connections active
  +           APR_SO_LINGER     --  lingers on close if data is present
  +           APR_SO_NONBLOCK   --  Turns blocking on/off for socket
  +           APR_SO_REUSEADDR  --  The rules used in validating addresses
  +                                 supplied to bind should allow reuse
  +                                 of local addresses.
  +           APR_SO_TIMEOUT    --  Set the timeout value in microseconds.
  +                                 values &lt; 0 mean wait forever.  0 means
  +                                 don't wait at all.
  +           APR_SO_SNDBUF     --  Set the SendBufferSize
  +           APR_SO_RCVBUF     --  Set the ReceiveBufferSize
  +&lt;/PRE&gt;
  +</td></tr>
  +<tr valign=top><th align=right>
  +	on</th><td>Value for the option.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_send"></a>
  +<a name="apr_status_t-89"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on);</b>
     <dd>
  -Send data over a network.
  -<p><img src="../images//tip.gif">
  -<PRE>
  -This functions acts like a blocking write by default.  To change 
  -this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
  -It is possible for both bytes to be sent and an error to be returned.
  -APR_EINTR is never returned.
  -</PRE>
  +Query socket options for the specified socket
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to send the data over.
  +	sock</th><td>The socket to query
   </td></tr>
   <tr valign=top><th align=right>
  -	buf</th><td>The buffer which contains the data to be sent.
  +	opt</th><td>The option we would like to query.  One of:
  +&lt;PRE&gt;
  +           APR_SO_DEBUG      --  turn on debugging information 
  +           APR_SO_KEEPALIVE  --  keep connections active
  +           APR_SO_LINGER     --  lingers on close if data is present
  +           APR_SO_NONBLOCK   --  Turns blocking on/off for socket
  +           APR_SO_REUSEADDR  --  The rules used in validating addresses
  +                                 supplied to bind should allow reuse
  +                                 of local addresses.
  +           APR_SO_TIMEOUT    --  Set the timeout value in microseconds.
  +                                 values &lt; 0 mean wait forever.  0 means
  +                                 don't wait at all.
  +           APR_SO_SNDBUF     --  Set the SendBufferSize
  +           APR_SO_RCVBUF     --  Set the ReceiveBufferSize
  +           APR_SO_DISCONNECTED -- Query the disconnected state of the socket.
  +                                 (Currently only used on Windows)
  +&lt;/PRE&gt;
   </td></tr>
   <tr valign=top><th align=right>
  -	len</th><td>On entry, the number of bytes to send; on exit, the number
  -           of bytes sent.</td></tr>
  +	on</th><td>Socket option returned on the call.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_sendfile"></a>
  +<a name="apr_status_t-90"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_addr_get(apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock);</b>
     <dd>
  -Send a file from an open file descriptor to a socket, along with 
  -optional headers and trailers
  -<p><img src="../images//tip.gif"> This functions acts like a blocking write by default.  To change 
  -     this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
  -     The number of bytes actually sent is stored in argument 5.
  +Return an apr_sockaddr_t from an apr_socket_t
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	sock</th><td>The socket to which we're writing
  -</td></tr>
  -<tr valign=top><th align=right>
  -	file</th><td>The open file from which to read
  -</td></tr>
  -<tr valign=top><th align=right>
  -	hdtr</th><td>A structure containing the headers and trailers to send
  -</td></tr>
   <tr valign=top><th align=right>
  -	offset</th><td>Offset into the file where we should begin writing
  +	sa</th><td>The returned apr_sockaddr_t.
   </td></tr>
   <tr valign=top><th align=right>
  -	len</th><td>(input)  - Number of bytes to send from the file 
  -           (output) - Number of bytes actually sent, 
  -                      including headers, file, and trailers
  +	which</th><td>Which interface do we want the apr_sockaddr_t for?
   </td></tr>
   <tr valign=top><th align=right>
  -	flags</th><td>APR flags that are mapped to OS specific flags</td></tr>
  +	sock</th><td>The socket to use</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_sendv"></a>
  +<a name="apr_status_t-91"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_port_set(apr_sockaddr_t *sockaddr, apr_port_t port);</b>
     <dd>
  -Send multiple packets of data over a network.
  -<p><img src="../images//tip.gif">
  -<PRE>
  -This functions acts like a blocking write by default.  To change 
  -this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
  -The number of bytes actually sent is stored in argument 3.
  -It is possible for both bytes to be sent and an error to be returned.
  -APR_EINTR is never returned.
  -</PRE>
  +Set the port in an APR socket address.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	sock</th><td>The socket to send the data over.
  -</td></tr>
   <tr valign=top><th align=right>
  -	vec</th><td>The array of iovec structs containing the data to send
  -</td></tr>
  -<tr valign=top><th align=right>
  -	nvec</th><td>The number of iovec structs in the array
  +	sockaddr</th><td>The socket address to set.
   </td></tr>
   <tr valign=top><th align=right>
  -	len</th><td>Receives the number of bytes actually written</td></tr>
  +	port</th><td>The port to be stored in the socket address.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_ipaddr"></a>
  +<a name="apr_status_t-92"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_ipaddr(apr_sockaddr_t *sockaddr, const char *addr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_port_get(apr_port_t *port, apr_sockaddr_t *sockaddr);</b>
     <dd>
  -Set the IP address in an APR socket address.
  +Return the port in an APR socket address.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sockaddr</th><td>The socket address to use
  +	port</th><td>The port from the socket address.
   </td></tr>
   <tr valign=top><th align=right>
  -	addr</th><td>The IP address to attach to the socket.
  -            Use APR_ANYADDR to use any IP addr on the machine.</td></tr>
  +	sockaddr</th><td>The socket address to reference.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_polldata"></a>
  +<a name="apr_status_t-93"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_polldata(apr_pollfd_t *pollfd, void *data, const char *key, apr_status_t (*cleanup) (void *));</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_ip_set(apr_sockaddr_t *sockaddr, const char *addr);</b>
     <dd>
  -Set the data associated with the current poll.
  +Set the IP address in an APR socket address.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	pollfd</th><td>The currently open pollfd.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	data</th><td>The key to associate with the data.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The user data to associate with the pollfd.
  +	sockaddr</th><td>The socket address to use
   </td></tr>
   <tr valign=top><th align=right>
  -	cleanup</th><td>The cleanup function</td></tr>
  +	addr</th><td>The IP address to attach to the socket.
  +            Use APR_ANYADDR to use any IP addr on the machine.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_port"></a>
  +<a name="apr_status_t-94"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_port(apr_sockaddr_t *sockaddr, apr_port_t port);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_ip_get(char **addr, apr_sockaddr_t *sockaddr);</b>
     <dd>
  -Set the port in an APR socket address.
  +Return the IP address (in numeric address string format) in
  +an APR socket address.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sockaddr</th><td>The socket address to set.
  +	addr</th><td>The IP address.
   </td></tr>
   <tr valign=top><th align=right>
  -	port</th><td>The port to be stored in the socket address.</td></tr>
  +	sockaddr</th><td>The socket address to reference.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_socketdata"></a>
  +<a name="apr_status_t-95"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_socketdata(apr_socket_t *sock, void *data, const char *key, apr_status_t (*cleanup) (void*));</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_setup(apr_pollfd_t **new_poll, apr_int32_t num, apr_pool_t *cont);</b>
     <dd>
  -Set the data associated with the current socket.
  +Setup the memory required for poll to operate properly
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sock</th><td>The currently open socket.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	data</th><td>The user data to associate with the socket.
  +	new_poll</th><td>The poll structure to be used.
   </td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The key to associate with the data.
  +	num</th><td>The number of socket descriptors to be polled.
   </td></tr>
   <tr valign=top><th align=right>
  -	cleanup</th><td>The cleanup to call when the socket is destroyed.</td></tr>
  +	cont</th><td>The pool to operate on.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setsocketopt"></a>
  +<a name="apr_status_t-96"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll(apr_pollfd_t *aprset, apr_int32_t *nsds, apr_interval_time_t timeout);</b>
     <dd>
  -Setup socket options for the specified socket
  +Poll the sockets in the poll structure
  +<p><img src="../images//tip.gif">
  +&lt;PRE&gt;
  +The number of sockets signalled is returned in the second argument. 
  +       This is a blocking call, and it will not return until either a 
  +       socket has been signalled, or the timeout has expired. 
  +&lt;/PRE&gt;
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sock</th><td>The socket to set up.
  +	aprset</th><td>The poll structure we will be using.
   </td></tr>
   <tr valign=top><th align=right>
  -	opt</th><td>The option we would like to configure.  One of:
  -<PRE>
  -           APR_SO_DEBUG      --  turn on debugging information 
  -           APR_SO_KEEPALIVE  --  keep connections active
  -           APR_SO_LINGER     --  lingers on close if data is present
  -           APR_SO_NONBLOCK   --  Turns blocking on/off for socket
  -           APR_SO_REUSEADDR  --  The rules used in validating addresses
  -                                 supplied to bind should allow reuse
  -                                 of local addresses.
  -           APR_SO_TIMEOUT    --  Set the timeout value in microseconds.
  -                                 values < 0 mean wait forever.  0 means
  -                                 don't wait at all.
  -           APR_SO_SNDBUF     --  Set the SendBufferSize
  -           APR_SO_RCVBUF     --  Set the ReceiveBufferSize
  -</PRE>
  +	nsds</th><td>The number of sockets we are polling.
   </td></tr>
   <tr valign=top><th align=right>
  -	on</th><td>Value for the option.</td></tr>
  +	timeout</th><td>The amount of time in microseconds to wait.  This is 
  +               a maximum, not a minimum.  If a socket is signalled, we 
  +               will wake up before this time.  A negative number means 
  +               wait until a socket is signalled.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setup_poll"></a>
  +<a name="apr_status_t-97"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setup_poll(apr_pollfd_t **new_poll, apr_int32_t num, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_socket_add(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t event);</b>
     <dd>
  -Setup the memory required for poll to operate properly
  +Add a socket to the poll structure.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	new_poll</th><td>The poll structure to be used.
  +	aprset</th><td>The poll structure we will be using.
   </td></tr>
   <tr valign=top><th align=right>
  -	num</th><td>The number of socket descriptors to be polled.
  +	socket</th><td>The socket to add to the current poll structure.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to operate on.</td></tr>
  +	event</th><td>The events to look for when we do the poll.  One of:
  +&lt;PRE&gt;
  +           APR_POLLIN       signal if read will not block
  +           APR_POLLPRI      signal if prioirty data is availble to be read
  +           APR_POLLOUT      signal if write will not block
  +&lt;/PRE&gt;</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_shutdown"></a>
  +<a name="apr_status_t-98"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_socket_mask(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t events);</b>
     <dd>
  -Shutdown either reading, writing, or both sides of a tcp socket.
  -<p><img src="../images//tip.gif"> This does not actually close the socket descriptor, it just
  -     controls which calls are still valid on the socket.
  +Modify a socket in the poll structure with mask.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thesocket</th><td>The socket to close
  +	aprset</th><td>The poll structure we will be using.
   </td></tr>
   <tr valign=top><th align=right>
  -	how</th><td>How to shutdown the socket.  One of:
  -<PRE>
  -           APR_SHUTDOWN_READ         no longer allow read requests
  -           APR_SHUTDOWN_WRITE        no longer allow write requests
  -           APR_SHUTDOWN_READWRITE    no longer allow read or write requests 
  -</PRE></td></tr>
  +	sock</th><td>The socket to modify in poll structure.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	events</th><td>The events to stop looking for during the poll.  One of:
  +&lt;PRE&gt;
  +           APR_POLLIN       signal if read will not block
  +           APR_POLLPRI      signal if prioirty data is availble to be read
  +           APR_POLLOUT      signal if write will not block
  +&lt;/PRE&gt;</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_socket_from_file"></a>
  +<a name="apr_status_t-99"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_socket_remove(apr_pollfd_t *aprset, apr_socket_t *sock);</b>
     <dd>
  -Convert a File type to a socket so that it can be used in a poll operation.
  -<p><img src="../images//warning.gif" align=left> This is not available on all platforms.  Platforms that have the
  -     ability to poll files for data to be read/written/exceptions will
  -     have the APR_FILES_AS_SOCKETS macro defined as true.
  +Remove a socket from the poll structure.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	newsock</th><td>the newly created socket which represents a file.
  +	aprset</th><td>The poll structure we will be using.
   </td></tr>
   <tr valign=top><th align=right>
  -	file</th><td>the file to mask as a socket.</td></tr>
  +	sock</th><td>The socket to remove from the current poll structure.</td></tr>
   </table>
     </dl></dl>
   </blockquote>
  @@ -1017,7 +1101,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +236 -196  apr-site/docs/APR_Process_library.html
  
  Index: APR_Process_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_Process_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_Process_library.html	2000/12/04 18:13:59	1.3
  +++ APR_Process_library.html	2001/02/11 02:54:57	1.4
  @@ -15,183 +15,148 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_check_other_child"></a>
  +<a name="-16"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_check_other_child(void);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -Loop through all registered other_children and call the appropriate 
  -maintenance function when necessary.
  +<p><img src="../images//tip.gif">  This is NOT a required initializer function. This is
  +      useful if you have already opened a pipe (or multiple files)
  +      that you wish to use, perhaps persistently across multiple
  +      process invocations - such as a log file. You can save some 
  +      extra function calls by not creating your own pipe since this
  +      creates one in the process space for you.
   <p><dl>
   </dl></dl>
   
  -<a name="apr_create_process"></a>
  +<a name="-17"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_process(apr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, apr_procattr_t *attr, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -Create a new process and execute a new program within that process.
  +<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
  +     useful if you have already opened a pipe (or multiple files)
  +     that you wish to use, perhaps persistently across multiple
  +     process invocations - such as a log file.
   <p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	new_proc</th><td>The resulting process handle.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	progname</th><td>The program to run
  -</td></tr>
  -<tr valign=top><th align=right>
  -	const_args</th><td>the arguments to pass to the new program.  The first 
  -                  one should be the program name.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	env</th><td>The new environment table for the new process.  This 
  -           should be a list of NULL-terminated strings.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	attr</th><td>the procattr we should use to determine how to create the new
  -        process
  -</td></tr>
  -<tr valign=top><th align=right>
  -	cont</th><td>The pool to use.</td></tr>
  -</table>
     </dl></dl>
   
  -<a name="apr_createprocattr_init"></a>
  +<a name="-18"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_createprocattr_init(apr_procattr_t **new_attr, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -Create and initialize a new procattr variable
  +<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
  +     useful if you have already opened a pipe (or multiple files)
  +     that you wish to use, perhaps persistently across multiple
  +     process invocations - such as a log file.
   <p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	new_attr</th><td>The newly created procattr.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	cont</th><td>The pool to use</td></tr>
  -</table>
     </dl></dl>
   
  -<a name="apr_detach"></a>
  +<a name="-19"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_detach(void);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -Detach the process from the controlling terminal.
  +<p><img src="../images//tip.gif"> The childs status is in the return code to this process.  It is one of:
  +&lt;PRE&gt;
  +           APR_CHILD_DONE     -- child is no longer running.
  +           APR_CHILD_NOTDONE  -- child is still running.
  +&lt;/PRE&gt;
   <p><dl>
   </dl></dl>
   
  -<a name="apr_fork"></a>
  +<a name="-20"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_fork(apr_proc_t *proc, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(void);</b>
     <dd>
  -This is currently the only non-portable call in APR.  This executes 
  -a standard unix fork.
  +<p><img src="../images//tip.gif"> Since this can be called by a maintenance function while we're
  +     scanning the other_children list, all scanners should protect 
  +     themself by loading ocr-&gt;next before calling any maintenance 
  +     function.
   <p><dl>
  +</dl></dl>
   
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	proc</th><td>The resulting process handle.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	cont</th><td>The pool to use.</td></tr>
  -</table>
  +<a name="apr_proc_detach"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_detach(void);</b>
  +  <dd>
  +Detach the process from the controlling terminal.
  +<p><dl>
     </dl></dl>
   
  -<a name="apr_kill"></a>
  +<a name="apr_status_t-152"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_kill(apr_proc_t *proc, int sig);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_create(apr_procattr_t **new_attr, apr_pool_t *cont);</b>
     <dd>
  -Terminate a process.
  +Create and initialize a new procattr variable
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	proc</th><td>The process to terminate.
  +	new_attr</th><td>The newly created procattr.
   </td></tr>
   <tr valign=top><th align=right>
  -	sig</th><td>How to kill the process.</td></tr>
  +	cont</th><td>The pool to use</td></tr>
   </table>
     </dl></dl>
  -
  -<a name="apr_probe_writable_fds"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_probe_writable_fds(void);</b>
  -  <dd>
  -Ensure all the registered write_fds are still writable, otherwise 
  -invoke the maintenance functions as appropriate.
  -<p><dl>
  -</dl></dl>
   
  -<a name="apr_reap_other_child"></a>
  +<a name="apr_status_t-153"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_reap_other_child(apr_proc_t *pid, int status);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err);</b>
     <dd>
  -Check on the specified process.  If it is gone, call the maintenance 
  -function.
  +Determine if any of stdin, stdout, or stderr should be linked to pipes 
  +when starting a child process.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	pid</th><td>The process to check.
  +	attr</th><td>The procattr we care about.
   </td></tr>
   <tr valign=top><th align=right>
  -	status</th><td>The status to pass to the maintenance function.</td></tr>
  +	in</th><td>Should stdin be a pipe back to the parent?
  +</td></tr>
  +<tr valign=top><th align=right>
  +	out</th><td>Should stdout be a pipe back to the parent?
  +</td></tr>
  +<tr valign=top><th align=right>
  +	err</th><td>Should stderr be a pipe back to the parent?</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_register_other_child"></a>
  +<a name="apr_status_t-154"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_register_other_child(apr_proc_t *pid, void (*maintenance) (int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_child_in_set(struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in);</b>
     <dd>
  -Register an other_child -- a child which must be kept track of so 
  -that the program knows when it has dies or disappeared.
  +Set the child_in and/or parent_in values to existing apr_file_t values.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	pid</th><td>pid is the pid of the child.
  -</td></tr>
   <tr valign=top><th align=right>
  -	maintenance</th><td>maintenance is a function that is invoked with a 
  -                   reason and the data pointer passed here.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	data</th><td>The data to pass to the maintenance function.
  +	attr</th><td>The procattr we care about.
   </td></tr>
   <tr valign=top><th align=right>
  -	write_fd</th><td>An fd that is probed for writing.  If it is ever unwritable
  -                then the maintenance is invoked with reason 
  -                OC_REASON_UNWRITABLE.
  +	child_in</th><td>apr_file_t value to use as child_in. Must be a valid file.
   </td></tr>
   <tr valign=top><th align=right>
  -	p</th><td>The pool to use for allocating memory.</td></tr>
  +	parent_in</th><td>apr_file_t value to use as parent_in. Must be a valid file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setprocattr_childerr"></a>
  +<a name="apr_status_t-155"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_childerr(struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_child_out_set(struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out);</b>
     <dd>
  -Set the child_err and parent_err values to existing apr_file_t values.
  -<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
  -     useful if you have already opened a pipe (or multiple files)
  -     that you wish to use, perhaps persistently across multiple
  -     process invocations - such as a log file.
  +Set the child_out and parent_out values to existing apr_file_t values.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -200,25 +165,19 @@
   	attr</th><td>The procattr we care about.
   </td></tr>
   <tr valign=top><th align=right>
  -	child_err</th><td>apr_file_t value to use as child_err. Must be a valid file.
  +	child_out</th><td>apr_file_t value to use as child_out. Must be a valid file.
   </td></tr>
   <tr valign=top><th align=right>
  -	parent_err</th><td>apr_file_t value to use as parent_err. Must be a valid file.</td></tr>
  +	parent_out</th><td>apr_file_t value to use as parent_out. Must be a valid file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setprocattr_childin"></a>
  +<a name="apr_status_t-156"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_childin(struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_child_err_set(struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err);</b>
     <dd>
  -Set the child_in and/or parent_in values to existing apr_file_t values.
  -<p><img src="../images//tip.gif">  This is NOT a required initializer function. This is
  -      useful if you have already opened a pipe (or multiple files)
  -      that you wish to use, perhaps persistently across multiple
  -      process invocations - such as a log file. You can save some 
  -      extra function calls by not creating your own pipe since this
  -      creates one in the process space for you.
  +Set the child_err and parent_err values to existing apr_file_t values.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -227,23 +186,19 @@
   	attr</th><td>The procattr we care about.
   </td></tr>
   <tr valign=top><th align=right>
  -	child_in</th><td>apr_file_t value to use as child_in. Must be a valid file.
  +	child_err</th><td>apr_file_t value to use as child_err. Must be a valid file.
   </td></tr>
   <tr valign=top><th align=right>
  -	parent_in</th><td>apr_file_t value to use as parent_in. Must be a valid file.</td></tr>
  +	parent_err</th><td>apr_file_t value to use as parent_err. Must be a valid file.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setprocattr_childout"></a>
  +<a name="apr_status_t-157"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_childout(struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_dir_set(apr_procattr_t *attr, const char *dir);</b>
     <dd>
  -Set the child_out and parent_out values to existing apr_file_t values.
  -<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
  -     useful if you have already opened a pipe (or multiple files)
  -     that you wish to use, perhaps persistently across multiple
  -     process invocations - such as a log file.
  +Set which directory the child process should start executing in.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -251,18 +206,17 @@
   <tr valign=top><th align=right>
   	attr</th><td>The procattr we care about.
   </td></tr>
  -<tr valign=top><th align=right>
  -	child_out</th><td>apr_file_t value to use as child_out. Must be a valid file.
  -</td></tr>
   <tr valign=top><th align=right>
  -	parent_out</th><td>apr_file_t value to use as parent_out. Must be a valid file.</td></tr>
  +	dir</th><td>Which dir to start in.  By default, this is the same dir as
  +           the parent currently resides in, when the createprocess call
  +           is made.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setprocattr_cmdtype"></a>
  +<a name="apr_status_t-158"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_cmdtype(apr_procattr_t *attr, apr_cmdtype_e cmd);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_cmdtype_set(apr_procattr_t *attr, apr_cmdtype_e cmd);</b>
     <dd>
   Set what type of command the child process will call.
   <p><dl>
  @@ -274,17 +228,17 @@
   </td></tr>
   <tr valign=top><th align=right>
   	cmd</th><td>The type of command.  One of:
  -<PRE>
  +&lt;PRE&gt;
              APR_SHELLCMD --  Shell script
              APR_PROGRAM  --  Executable program   (default) 
  -</PRE></td></tr>
  +&lt;/PRE&gt;</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setprocattr_detach"></a>
  +<a name="apr_status_t-159"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_detach(apr_procattr_t *attr, apr_int32_t detach);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_detach_set(apr_procattr_t *attr, apr_int32_t detach);</b>
     <dd>
   Determine if the chlid should start in detached state.
   <p><dl>
  @@ -299,12 +253,12 @@
   </table>
     </dl></dl>
   
  -<a name="apr_setprocattr_dir"></a>
  +<a name="apr_status_t-160"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_dir(apr_procattr_t *attr, const char *dir);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_limit_set(apr_procattr_t *attr, apr_int32_t what, apr_int32_t what, struct rlimit *limit);</b>
     <dd>
  -Set which directory the child process should start executing in.
  +Set the Resource Utilization limits when starting a new process.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -313,87 +267,97 @@
   	attr</th><td>The procattr we care about.
   </td></tr>
   <tr valign=top><th align=right>
  -	dir</th><td>Which dir to start in.  By default, this is the same dir as
  -           the parent currently resides in, when the createprocess call
  -           is made.</td></tr>
  +	what</th><td>Which limit to set, one of:
  +&lt;PRE&gt;
  +                APR_LIMIT_CPU
  +                APR_LIMIT_MEM
  +                APR_LIMIT_NPROC
  +&lt;/PRE&gt;
  +</td></tr>
  +<tr valign=top><th align=right>
  +	limit</th><td>Value to set the limit to.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setprocattr_io"></a>
  +<a name="apr_status_t-161"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_io(apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont);</b>
     <dd>
  -Determine if any of stdin, stdout, or stderr should be linked to pipes 
  -when starting a child process.
  +This is currently the only non-portable call in APR.  This executes 
  +a standard unix fork.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	attr</th><td>The procattr we care about.
  -</td></tr>
   <tr valign=top><th align=right>
  -	in</th><td>Should stdin be a pipe back to the parent?
  -</td></tr>
  -<tr valign=top><th align=right>
  -	out</th><td>Should stdout be a pipe back to the parent?
  +	proc</th><td>The resulting process handle.
   </td></tr>
   <tr valign=top><th align=right>
  -	err</th><td>Should stderr be a pipe back to the parent?</td></tr>
  +	cont</th><td>The pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setprocattr_limit"></a>
  +<a name="apr_status_t-162"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_limit(apr_procattr_t *attr, apr_int32_t what, struct rlimit *limit);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_create(apr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, apr_procattr_t *attr, apr_pool_t *cont);</b>
     <dd>
  -Set the Resource Utilization limits when starting a new process.
  +Create a new process and execute a new program within that process.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	attr</th><td>The procattr we care about.
  +	new_proc</th><td>The resulting process handle.
   </td></tr>
   <tr valign=top><th align=right>
  -	what</th><td>Which limit to set, one of:
  -<PRE>
  -                APR_LIMIT_CPU
  -                APR_LIMIT_MEM
  -                APR_LIMIT_NPROC
  -</PRE>
  +	progname</th><td>The program to run
   </td></tr>
   <tr valign=top><th align=right>
  -	limit</th><td>Value to set the limit to.</td></tr>
  +	const_args</th><td>the arguments to pass to the new program.  The first 
  +                  one should be the program name.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	env</th><td>The new environment table for the new process.  This 
  +           should be a list of NULL-terminated strings.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	attr</th><td>the procattr we should use to determine how to create the new
  +        process
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cont</th><td>The pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_unregister_other_child"></a>
  +<a name="apr_status_t-163"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_unregister_other_child(void *data);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_wait(apr_proc_t *proc, apr_wait_how_e waithow);</b>
     <dd>
  -Stop watching the specified process.
  -<p><img src="../images//tip.gif"> Since this can be called by a maintenance function while we're
  -     scanning the other_children list, all scanners should protect 
  -     themself by loading ocr->next before calling any maintenance 
  -     function.
  +Wait for a child process to die
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	data</th><td>The data to pass to the maintenance function.  This is
  -            used to find the process to unregister.</td></tr>
  +	proc</th><td>The process handle that corresponds to the desired child process
  +</td></tr>
  +<tr valign=top><th align=right>
  +	waithow</th><td>How should we wait.  One of:
  +&lt;PRE&gt;
  +           APR_WAIT   -- block until the child process dies.
  +           APR_NOWAIT -- return immediately regardless of if the 
  +                         child is dead or not.
  +&lt;/PRE&gt;</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_wait_all_procs"></a>
  +<a name="apr_status_t-164"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_wait_all_procs(apr_proc_t *proc, apr_wait_t *status, apr_wait_how_e waithow, apr_pool_t *p);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_wait_all_procs(apr_proc_t *proc, apr_wait_t *status, apr_wait_how_e waithow, apr_pool_t *p);</b>
     <dd>
   Wait for any current child process to die and return information 
   about that child.
  @@ -412,50 +376,126 @@
   </td></tr>
   <tr valign=top><th align=right>
   	waithow</th><td>How should we wait.  One of:
  -<PRE>
  +&lt;PRE&gt;
              APR_WAIT   -- block until the child process dies.
              APR_NOWAIT -- return immediately regardless of if the 
                            child is dead or not.
  -</PRE>
  +&lt;/PRE&gt;
   </td></tr>
   <tr valign=top><th align=right>
   	p</th><td>Pool to allocate child information out of.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_wait_proc"></a>
  +<a name="apr_status_t-165"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_wait_proc(apr_proc_t *proc, apr_wait_how_e waithow);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_other_child_read(apr_proc_t *pid, int status);;</b>
     <dd>
  -Wait for a child process to die
  -<p><img src="../images//tip.gif"> The childs status is in the return code to this process.  It is one of:
  -<PRE>
  -           APR_CHILD_DONE     -- child is no longer running.
  -           APR_CHILD_NOTDONE  -- child is still running.
  -</PRE>
  +Check on the specified process.  If it is gone, call the maintenance 
  +function.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	proc</th><td>The process handle that corresponds to the desired child process
  +	pid</th><td>The process to check.
   </td></tr>
   <tr valign=top><th align=right>
  -	waithow</th><td>How should we wait.  One of:
  -<PRE>
  -           APR_WAIT   -- block until the child process dies.
  -           APR_NOWAIT -- return immediately regardless of if the 
  -                         child is dead or not.
  -</PRE></td></tr>
  +	status</th><td>The status to pass to the maintenance function.</td></tr>
   </table>
     </dl></dl>
   
  +<a name="apr_status_t-166"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_kill(apr_proc_t *proc, int sig);</b>
  +  <dd>
  +Terminate a process.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	proc</th><td>The process to terminate.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	sig</th><td>How to kill the process.</td></tr>
  +</table>
  +  </dl></dl>
  +
   <a name="void-30"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_proc_other_child_register(apr_proc_t *pid, void (*maintenance) (int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p);</b>
  +  <dd>
  +Register an other_child -- a child which must be kept track of so 
  +that the program knows when it has dies or disappeared.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	pid</th><td>pid is the pid of the child.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	maintenance</th><td>maintenance is a function that is invoked with a 
  +                   reason and the data pointer passed here.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	data</th><td>The data to pass to the maintenance function.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	write_fd</th><td>An fd that is probed for writing.  If it is ever unwritable
  +                then the maintenance is invoked with reason 
  +                OC_REASON_UNWRITABLE.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	p</th><td>The pool to use for allocating memory.</td></tr>
  +</table>
  +  </dl></dl>
  +
  +<a name="void-31"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_proc_other_child_unregister(void *data);</b>
  +  <dd>
  +Stop watching the specified process.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	data</th><td>The data to pass to the maintenance function.  This is
  +            used to find the process to unregister.</td></tr>
  +</table>
  +  </dl></dl>
  +
  +<a name="void-32"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_proc_other_child_check();;</b>
     <dd>
  +Loop through all registered other_children and call the appropriate 
  +maintenance function when necessary.
  +<p><dl>
  +</dl></dl>
  +
  +<a name="void-33"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_proc_probe_writable_fds();</b>
  +  <dd>
  +Ensure all the registered write_fds are still writable, otherwise 
  +invoke the maintenance functions as appropriate.
  +<p><dl>
  +</dl></dl>
  +
  +<a name="void-34"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how);</b>
  +  <dd>
   Register a process to be killed when a pool dies.
   <p><dl>
   
  @@ -469,13 +509,13 @@
   </td></tr>
   <tr valign=top><th align=right>
   	how</th><td>How to kill the process, one of:
  -<PRE>
  +&lt;PRE&gt;
           kill_never          -- process is never sent any signals
           kill_always     -- process is sent SIGKILL on apr_pool_t cleanup 
           kill_after_timeout -- SIGTERM, wait 3 seconds, SIGKILL
           just_wait          -- wait forever for the process to complete
           kill_only_once     -- send SIGTERM and then wait
  -</PRE></td></tr>
  +&lt;/PRE&gt;</td></tr>
   </table>
     </dl></dl>
   </blockquote>
  @@ -483,7 +523,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +5 -5      apr-site/docs/APR_Random_Functions.html
  
  Index: APR_Random_Functions.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_Random_Functions.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_Random_Functions.html	2000/12/04 18:13:59	1.3
  +++ APR_Random_Functions.html	2001/02/11 02:54:57	1.4
  @@ -15,7 +15,7 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_generate_random_bytes"></a>
  +<a name="apr_status_t-48"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_generate_random_bytes(unsigned char * buf, int length);</b>
  @@ -33,7 +33,7 @@
   </table>
     </dl></dl>
   
  -<a name="apr_initialize"></a>
  +<a name="apr_status_t-49"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_initialize(void);</b>
  @@ -43,7 +43,7 @@
   <p><dl>
   </dl></dl>
   
  -<a name="apr_set_abort"></a>
  +<a name="apr_status_t-50"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_abort(int (*apr_abort)(int retcode), apr_pool_t *cont);</b>
  @@ -58,7 +58,7 @@
   <p><dl>
   </dl></dl>
   
  -<a name="apr_terminate"></a>
  +<a name="void-2"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_terminate(void);</b>
  @@ -75,7 +75,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +50 -355   apr-site/docs/APR_Table_library.html
  
  Index: APR_Table_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_Table_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_Table_library.html	2000/12/04 18:14:01	1.3
  +++ APR_Table_library.html	2001/02/11 02:54:57	1.4
  @@ -20,18 +20,6 @@
   <li><a href="APR_Table_library.html#apr_array_header_t-nelts">nelts</a>
   </ul>
   <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
  -  <a href="APR_Table_library.html#apr_btable_entry_t">struct apr_btable_entry_t</h3></a>
  -  <ul>
  -<li><a href="APR_Table_library.html#apr_btable_entry_t-key">key</a>
  -<li><a href="APR_Table_library.html#apr_btable_entry_t-val">val</a>
  -</ul>
  -<h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
  -  <a href="APR_Table_library.html#apr_btable_t">struct apr_btable_t</h3></a>
  -  <ul>
  -<li><a href="APR_Table_library.html#apr_btable_t-a">a</a>
  -<li><a href="APR_Table_library.html#apr_btable_t-creator">creator</a>
  -</ul>
  -<h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
     <a href="APR_Table_library.html#apr_table_entry_t">struct apr_table_entry_t</h3></a>
     <ul>
   <li><a href="APR_Table_library.html#apr_table_entry_t-key">key</a>
  @@ -106,72 +94,6 @@
   </dl></dl>
   </blockquote>
   <hr size="4">
  -  <a name="apr_btable_entry_t"></a>
  -  <h1>struct apr_btable_entry_t</h1>
  -  <table bgcolor="ffffff" border="0" cellspacing="4">
  -    <tr>
  -      <th align=center colspan=2>
  -      </th>
  -    </tr>
  - <tr><th width=20% align=right>Source:</th><td>./include/apr_tables.h</td></tr></tr>
  -</table>
  -<p>
  -The type for each entry in a binary-content table<h2>Member Index</h2>
  -<ul><li><a href="APR_Table_library.html#apr_btable_entry_t-key">    char *key</a>
  -	<li><a href="APR_Table_library.html#apr_btable_entry_t-val">    apr_item_t *val</a>
  -	</ul><h2>Class Variables</h2>
  -<blockquote>
  -
  -  <a name="key"></a>
  -    <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    char *key;</b>
  -<dd>
  -The key for the current table entry
  -<p><dl>
  -</dl></dl>
  -
  -  <a name="val"></a>
  -    <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_item_t *val;</b>
  -<dd>
  -The value for the current table entry
  -<p><dl>
  -</dl></dl>
  -</blockquote>
  -<hr size="4">
  -  <a name="apr_btable_t"></a>
  -  <h1>struct apr_btable_t</h1>
  -  <table bgcolor="ffffff" border="0" cellspacing="4">
  -    <tr>
  -      <th align=center colspan=2>
  -      </th>
  -    </tr>
  - <tr><th width=20% align=right>Source:</th><td>./include/apr_tables.h</td></tr></tr>
  -</table>
  -<p>
  -The opaque binary-content table type<h2>Member Index</h2>
  -<ul><li><a href="APR_Table_library.html#apr_btable_t-a">    apr_array_header_t a</a>
  -	<li><a href="APR_Table_library.html#apr_btable_t-creator">    void *creator</a>
  -	</ul><h2>Class Variables</h2>
  -<blockquote>
  -
  -  <a name="a"></a>
  -    <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_array_header_t a;</b>
  -<dd>
  -The underlying array for the table
  -<p><dl>
  -</dl></dl>
  -
  -  <a name="creator"></a>
  -    <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    void *creator;</b>
  -<dd>
  -Who created the array.
  -<p><dl>
  -</dl></dl>
  -</blockquote>
  -<hr size="4">
     <a name="apr_table_entry_t"></a>
     <h1>struct apr_table_entry_t</h1>
     <table bgcolor="ffffff" border="0" cellspacing="4">
  @@ -238,54 +160,28 @@
   <p><dl>
   </dl></dl>
   </blockquote>
  -<h2>Global Variables</h2>
  +<h2>Global Functions</h2>
     <blockquote>
   
  -  <a name="apr_item_t"></a>
  -    <dl><dt>
  -	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_item_t;</b>
  +<a name="-14"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_array_header_t *);</b>
   <dd>
  -The (opaque) structure for binary-content tables.
  - A transparent type for items stored in binary-content tables, and
  -possibly elsewhere.
  +<p><img src="../images//tip.gif"> The alternate apr_array_copy_hdr copies only the header, and arranges 
  +for the elements to be copied if (and only if) the code subsequently does 
  +a push or arraycat.
   <p><dl>
   </dl></dl>
  -</blockquote>
  -<h2>Global Functions</h2>
  -  <blockquote>
   
  -<a name=""></a>
  +<a name="-15"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_array_header_t *);</b>
     <dd>
  -Determine if the table is empty
  -Determine if the binary table is empty
  -Create an array
  +<p><img src="../images//tip.gif"> The alternate apr_array_copy copies the *entire* array.
   <p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	t</th><td>The table to check
  -</td></tr>
  -<tr valign=top><th align=right>
  -	t</th><td>The table to check
  -</td></tr>
  -<tr valign=top><th align=right>
  -	p</th><td>The pool to allocate the memory out of
  -</td></tr>
  -<tr valign=top><th align=right>
  -	nelts</th><td>the number of elements in the initial array
  -</td></tr>
  -<tr valign=top><th align=right>
  -	elt_size</th><td>The size of each element in the array.</td></tr>
  -</table>
  -  <dt><b>Return Value</b>
  -  <dd>True if empty, Falso otherwise
  - True if empty, Falso otherwise
  - The new array
  -#deffunc apr_array_header_t *apr_make_array(struct apr_pool_t *p, int nelts, int elt_size)<p></dl></dl>
  +</dl></dl>
   
   <a name="apr_array_header_t"></a>
   <dl>
  @@ -306,23 +202,29 @@
   <a name="apr_array_header_t-2"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_table_elts(apr_table_t *t);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_array_make(struct apr_pool_t *p, int nelts, int elt_size);</b>
     <dd>
  -Get the elements from a binary table
  +Create an array
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	t</th><td>The table</td></tr>
  +	p</th><td>The pool to allocate the memory out of
  +</td></tr>
  +<tr valign=top><th align=right>
  +	nelts</th><td>the number of elements in the initial array
  +</td></tr>
  +<tr valign=top><th align=right>
  +	elt_size</th><td>The size of each element in the array.</td></tr>
   </table>
     <dt><b>Return Value</b>
  -  <dd>An array containing the contents of the table<p></dl></dl>
  +  <dd>The new array<p></dl></dl>
   
   <a name="apr_array_header_t-3"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_copy_array(apr_pool_t *p, const apr_array_header_t *arr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_array_copy(apr_pool_t *p, const apr_array_header_t *arr);</b>
     <dd>
   Copy the entire array
   <p><dl>
  @@ -341,7 +243,7 @@
   <a name="apr_array_header_t-4"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_copy_array_hdr(apr_pool_t *p, const apr_array_header_t *arr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_array_copy_hdr(apr_pool_t *p, const apr_array_header_t *arr);</b>
     <dd>
   Copy the headers of the array, and arrange for the elements to be copied if
   and only if the code subsequently does a push or arraycat.
  @@ -361,7 +263,7 @@
   <a name="apr_array_header_t-5"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_append_arrays(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second);</b>
     <dd>
   Append one array to the end of another, creating a new array in the process.
   <p><dl>
  @@ -382,32 +284,10 @@
   </table>
     </dl></dl>
   
  -<a name="apr_btable_t"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_btable_t *apr_overlay_tables(apr_pool_t *p, const apr_btable_t *overlay, const apr_btable_t *base);;</b>
  -  <dd>
  -Merge two binary tables into one new table
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	p</th><td>The pool to use for the new table
  -</td></tr>
  -<tr valign=top><th align=right>
  -	overlay</th><td>The first table to put in the new table
  -</td></tr>
  -<tr valign=top><th align=right>
  -	base</th><td>The table to add at the end of the new table</td></tr>
  -</table>
  -  <dt><b>Return Value</b>
  -  <dd>A new table containing all of the data from the two passed in<p></dl></dl>
  -
   <a name="apr_table_t"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_make_table(apr_pool_t *p, int nelts);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_table_make(apr_pool_t *p, int nelts);</b>
     <dd>
   Make a new table
   <p><img src="../images//warning.gif" align=left> This table can only store text data
  @@ -426,27 +306,8 @@
   
   <a name="apr_table_t-2"></a>
   <dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_make_btable(apr_pool_t *p, int nelts);</b>
  -  <dd>
  -Make a new table capable of storing binary data
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	p</th><td>The pool to allocate the pool out of
  -</td></tr>
  -<tr valign=top><th align=right>
  -	nelts</th><td>The number of elements in the initial table.</td></tr>
  -</table>
  -  <dt><b>Return Value</b>
  -  <dd>The new table.<p></dl></dl>
  -
  -<a name="apr_table_t-3"></a>
  -<dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *) apr_copy_table(apr_pool_t *p, const apr_table_t *t);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_table_copy(apr_pool_t *p, const apr_table_t *t);</b>
     <dd>
   Create a new table and copy another table into it
   <p><dl>
  @@ -461,30 +322,11 @@
   </table>
     <dt><b>Return Value</b>
     <dd>A copy of the table passed in<p></dl></dl>
  -
  -<a name="apr_table_t-4"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *) apr_copy_btable(apr_pool_t *p, const apr_btable_t *t);</b>
  -  <dd>
  -Create a new binary table and copy another table into it
  -<p><dl>
   
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	p</th><td>The pool to allocate the new table out of
  -</td></tr>
  -<tr valign=top><th align=right>
  -	t</th><td>The table to copy</td></tr>
  -</table>
  -  <dt><b>Return Value</b>
  -  <dd>A copy of the table passed in<p></dl></dl>
  -
  -<a name="apr_table_t-5"></a>
  +<a name="apr_table_t-3"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_overlay_tables(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base);;</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_table_overlay(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base);;</b>
     <dd>
   Merge two tables into one new table
   <p><dl>
  @@ -503,7 +345,7 @@
     <dt><b>Return Value</b>
     <dd>A new table containing all of the data from the two passed in<p></dl></dl>
   
  -<a name="char-8"></a>
  +<a name="char-9"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_array_pstrcat(apr_pool_t *p, const apr_array_header_t *arr, const char sep);</b>
  @@ -529,7 +371,7 @@
     <dt><b>Return Value</b>
     <dd>A string containing all of the data in the array.<p></dl></dl>
   
  -<a name="const-2"></a>
  +<a name="const-4"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const char *apr_table_get(const apr_table_t *t, const char *key);</b>
  @@ -549,30 +391,26 @@
     <dt><b>Return Value</b>
     <dd>The value associated with the key<p></dl></dl>
   
  -<a name="const-3"></a>
  +<a name="int-10"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const apr_item_t *apr_btable_get(const apr_btable_t *t, const char *key);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_is_empty_table(apr_table_t *t);</b>
     <dd>
  -Get the value associated with a given key from a binary table.  After this
  -call, the data is still in the table.
  +Determine if the table is empty
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	t</th><td>The table to search for the key
  -</td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The key to search for</td></tr>
  +	t</th><td>The table to check</td></tr>
   </table>
     <dt><b>Return Value</b>
  -  <dd>The value associated with the key<p></dl></dl>
  +  <dd>True if empty, Falso otherwise<p></dl></dl>
   
  -<a name="void-11"></a>
  +<a name="void-17"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_push_array(apr_array_header_t *arr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_array_push(apr_array_header_t *arr);</b>
     <dd>
   Add a new element to an array
   <p><img src="../images//tip.gif"> If there are no free spots in the array, then this function will
  @@ -587,7 +425,7 @@
     <dt><b>Return Value</b>
     <dd>Location for the new element in the array.<p></dl></dl>
   
  -<a name="void-12"></a>
  +<a name="void-18"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_array_cat(apr_array_header_t *dst, const apr_array_header_t *src);</b>
  @@ -606,10 +444,10 @@
   </table>
     </dl></dl>
   
  -<a name="void-13"></a>
  +<a name="void-19"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_clear_table(apr_table_t *t);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_clear(apr_table_t *t);</b>
     <dd>
   Delete all of the elements from a table
   <p><dl>
  @@ -620,23 +458,8 @@
   	t</th><td>The table to clear</td></tr>
   </table>
     </dl></dl>
  -
  -<a name="void-14"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_clear_btable(apr_btable_t *t);</b>
  -  <dd>
  -Delete all of the elements from a binary table
  -<p><dl>
   
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	t</th><td>The table to clear</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="void-15"></a>
  +<a name="void-20"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_set(apr_table_t *t, const char *key, const char *val);</b>
  @@ -659,35 +482,8 @@
   	val</th><td>The value to add</td></tr>
   </table>
     </dl></dl>
  -
  -<a name="void-16"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_set(apr_btable_t *t, const char *key, size_t size, const void *val);</b>
  -  <dd>
  -Add a key/value pair to a binary table if another element already exists 
  -with the same key, this will over-write the old data.
  -<p><img src="../images//tip.gif"> When adding data, this function makes a copy of both the key and the
  -     value.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	t</th><td>The table to add the data to.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The key fo use
  -</td></tr>
  -<tr valign=top><th align=right>
  -	size</th><td>The size of the data to add
  -</td></tr>
  -<tr valign=top><th align=right>
  -	val</th><td>The value to add</td></tr>
  -</table>
  -  </dl></dl>
   
  -<a name="void-17"></a>
  +<a name="void-21"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_setn(apr_table_t *t, const char *key, const char *val);</b>
  @@ -712,35 +508,7 @@
   </table>
     </dl></dl>
   
  -<a name="void-18"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_setn(apr_btable_t *t, const char *key, size_t size, const void *val);</b>
  -  <dd>
  -Add a key/value pair to a binary table if another element already exists 
  -with the same key, this will over-write the old data.
  -<p><img src="../images//tip.gif"> When adding data, this function does not make a copy of the key or the
  -     value, so care should be taken to ensure that the values will not 
  -     change after they have been added..
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	t</th><td>The table to add the data to.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The key fo use
  -</td></tr>
  -<tr valign=top><th align=right>
  -	size</th><td>The size of the data to add
  -</td></tr>
  -<tr valign=top><th align=right>
  -	val</th><td>The value to add</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="void-19"></a>
  +<a name="void-22"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_unset(apr_table_t *t, const char *key);</b>
  @@ -757,26 +525,8 @@
   	key</th><td>The key of the data being removed</td></tr>
   </table>
     </dl></dl>
  -
  -<a name="void-20"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_unset(apr_btable_t *t, const char *key);</b>
  -  <dd>
  -Remove data from a binary table
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	t</th><td>The table to remove data from
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The key of the data being removed</td></tr>
  -</table>
  -  </dl></dl>
   
  -<a name="void-21"></a>
  +<a name="void-23"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_merge(apr_table_t *t, const char *key, const char *val);</b>
  @@ -799,7 +549,7 @@
   </table>
     </dl></dl>
   
  -<a name="void-22"></a>
  +<a name="void-24"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_mergen(apr_table_t *t, const char *key, const char *val);</b>
  @@ -822,7 +572,7 @@
   </table>
     </dl></dl>
   
  -<a name="void-23"></a>
  +<a name="void-25"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_add(apr_table_t *t, const char *key, const char *val);</b>
  @@ -845,35 +595,8 @@
   	val</th><td>The value to add.</td></tr>
   </table>
     </dl></dl>
  -
  -<a name="void-24"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_add(apr_btable_t *t, const char *key, size_t size, const char *val);</b>
  -  <dd>
  -Add data to a binary table, regardless of whether there is another element 
  -with the same key.
  -<p><img src="../images//tip.gif"> When adding data, this function makes a copy of both the key and the
  -     value.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	t</th><td>The table to add to
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The key to use
  -</td></tr>
  -<tr valign=top><th align=right>
  -	size</th><td>The size of the value to add
  -</td></tr>
  -<tr valign=top><th align=right>
  -	val</th><td>The value to add.</td></tr>
  -</table>
  -  </dl></dl>
   
  -<a name="void-25"></a>
  +<a name="void-26"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_addn(apr_table_t *t, const char *key, const char *val);</b>
  @@ -898,34 +621,6 @@
   </table>
     </dl></dl>
   
  -<a name="void-26"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_addn(apr_btable_t *t, const char *key, size_t size, const char *val);</b>
  -  <dd>
  -Add data to a binary table, regardless of whether there is another element 
  -with the same key.
  -<p><img src="../images//tip.gif"> When adding data, this function does not make a copy of the key or the
  -     value, so care should be taken to ensure that the values will not 
  -     change after they have been added..
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	t</th><td>The table to add to
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The key to use
  -</td></tr>
  -<tr valign=top><th align=right>
  -	size</th><td>The size of the value to add
  -</td></tr>
  -<tr valign=top><th align=right>
  -	val</th><td>The value to add.</td></tr>
  -</table>
  -  </dl></dl>
  -
   <a name="void-27"></a>
   <dl>
     <dt>
  @@ -987,7 +682,7 @@
   <a name="void-29"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_overlap_tables(apr_table_t *a, const apr_table_t *b, unsigned flags);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_overlap(apr_table_t *a, const apr_table_t *b, unsigned flags);</b>
     <dd>
   For each element in table b, either use setn or mergen to add the data
   to table a.  Wich method is used is determined by the flags passed in.
  @@ -1014,7 +709,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +103 -103  apr-site/docs/APR_Thread_library.html
  
  Index: APR_Thread_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_Thread_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_Thread_library.html	2000/12/04 18:14:01	1.3
  +++ APR_Thread_library.html	2001/02/11 02:54:57	1.4
  @@ -96,12 +96,12 @@
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>process_chain *next ;</b>
   <dd>
  -When the process should be sent a signal. <PRE>
  +When the process should be sent a signal. &lt;PRE&gt;
             kill_never   -- process is never sent any signals
             kill_always  -- process is sent SIGKILL on apr_pool_t cleanup
             kill_after_timeout -- SIGTERM, wait 3 seconds, SIGKILL
             just_wait    -- wait forever for the process to complete
  -          kill_only_once -- send SIGTERM and then wait </PRE>
  +          kill_only_once -- send SIGTERM and then wait &lt;/PRE&gt;
        The next process in the list
   <p><dl>
   </dl></dl>
  @@ -109,184 +109,160 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_create_thread"></a>
  +<a name="apr_status_t-137"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_thread(apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadattr_create(apr_threadattr_t **new_attr, apr_pool_t *cont);</b>
     <dd>
  -Create a new thread of execution
  +Create and initialize a new threadattr variable
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	new_thread</th><td>The newly created thread handle.
  -</td></tr>
   <tr valign=top><th align=right>
  -	attr</th><td>The threadattr to use to determine how to create the thread
  -</td></tr>
  -<tr valign=top><th align=right>
  -	func</th><td>The function to start the new thread in
  -</td></tr>
  -<tr valign=top><th align=right>
  -	data</th><td>Any data to be passed to the starting function
  +	new_attr</th><td>The newly created threadattr.
   </td></tr>
   <tr valign=top><th align=right>
   	cont</th><td>The pool to use</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_create_thread_private"></a>
  +<a name="apr_status_t-138"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_thread_private(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadattr_detach_get(apr_threadattr_t *attr, apr_int32_t on);</b>
     <dd>
  -Create and initialize a new thread private address space
  +Set if newly created threads should be created in detach mode.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	key</th><td>The thread private handle.
  -</td></tr>
   <tr valign=top><th align=right>
  -	dest</th><td>The destructor to use when freeing the private memory.
  +	attr</th><td>The threadattr to affect
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use</td></tr>
  +	on</th><td>Thread detach state on or off</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_create_threadattr"></a>
  +<a name="apr_status_t-139"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_threadattr(apr_threadattr_t **new_attr, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadattr_detach_set(apr_threadattr_t *attr);</b>
     <dd>
  -Create and initialize a new threadattr variable
  +Get the detach mode for this threadattr.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	new_attr</th><td>The newly created threadattr.
  -</td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use</td></tr>
  +	attr</th><td>The threadattr to reference</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_delete_thread_private"></a>
  +<a name="apr_status_t-140"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_delete_thread_private(apr_threadkey_t *key);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_create(apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont);</b>
     <dd>
  -Free the thread private memory
  +Create a new thread of execution
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	key</th><td>The handle for the desired thread private memory</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="apr_get_thread_private"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_thread_private(void **new_mem, apr_threadkey_t *key);</b>
  -  <dd>
  -Get a pointer to the thread private memory
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  +	new_thread</th><td>The newly created thread handle.
  +</td></tr>
   <tr valign=top><th align=right>
  -	new_mem</th><td>The data stored in private memory
  +	attr</th><td>The threadattr to use to determine how to create the thread
   </td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The handle for the desired thread private memory</td></tr>
  +	func</th><td>The function to start the new thread in
  +</td></tr>
  +<tr valign=top><th align=right>
  +	data</th><td>Any data to be passed to the starting function
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cont</th><td>The pool to use</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_threaddata"></a>
  +<a name="apr_status_t-141"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_threaddata(void **data, const char *key, apr_thread_t *thread);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t *retval);</b>
     <dd>
  -Return the pool associated with the current thread.
  +stop the current thread
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	data</th><td>The user data associated with the thread.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The key to associate with the data
  +	thd</th><td>The thread to stop
   </td></tr>
   <tr valign=top><th align=right>
  -	thread</th><td>The currently open thread.</td></tr>
  +	retval</th><td>The return value to pass back to any thread that cares</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_threadkeydata"></a>
  +<a name="apr_status_t-142"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_threadkeydata(void **data, const char *key, apr_threadkey_t *threadkey);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd);;</b>
     <dd>
  -Return the pool associated with the current threadkey.
  +block until the desired thread stops executing.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	data</th><td>The user data associated with the threadkey.
  -</td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The key associated with the data
  +	retval</th><td>The return value from the dead thread.
   </td></tr>
   <tr valign=top><th align=right>
  -	threadkey</th><td>The currently open threadkey.</td></tr>
  +	thd</th><td>The thread to join</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_getthreadattr_detach"></a>
  +<a name="apr_status_t-143"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getthreadattr_detach(apr_threadattr_t *attr);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_detach(apr_thread_t *thd);</b>
     <dd>
  -Get the detach mode for this threadattr.
  +detach a thread
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	attr</th><td>The threadattr to reference</td></tr>
  +	thd</th><td>The thread to detach</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_thread_private"></a>
  +<a name="apr_status_t-144"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_thread_private(void *priv, apr_threadkey_t *key);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_data_get(void **data, const char *key, apr_thread_t *thread);</b>
     <dd>
  -Set the data to be stored in thread private memory
  +Return the pool associated with the current thread.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	priv</th><td>The data to be stored in private memory
  +	data</th><td>The user data associated with the thread.
   </td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The handle for the desired thread private memory</td></tr>
  +	key</th><td>The key to associate with the data
  +</td></tr>
  +<tr valign=top><th align=right>
  +	thread</th><td>The currently open thread.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_threaddata"></a>
  +<a name="apr_status_t-145"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_threaddata(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_thread_t *thread);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_data_set(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_thread_t *thread);</b>
     <dd>
   Return the pool associated with the current thread.
   <p><dl>
  @@ -307,96 +283,120 @@
   </table>
     </dl></dl>
   
  -<a name="apr_set_threadkeydata"></a>
  +<a name="apr_status_t-146"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_threadkeydata(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_threadkey_t *threadkey);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_private_create(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *cont);</b>
     <dd>
  -Return the pool associated with the current threadkey.
  +Create and initialize a new thread private address space
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	data</th><td>The data to set.
  +	key</th><td>The thread private handle.
   </td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The key to associate with the data.
  +	dest</th><td>The destructor to use when freeing the private memory.
   </td></tr>
   <tr valign=top><th align=right>
  -	cleanup</th><td>The cleanup routine to use when the file is destroyed.
  +	cont</th><td>The pool to use</td></tr>
  +</table>
  +  </dl></dl>
  +
  +<a name="apr_status_t-147"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_private_get(void **new_mem, apr_threadkey_t *key);</b>
  +  <dd>
  +Get a pointer to the thread private memory
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	new_mem</th><td>The data stored in private memory
   </td></tr>
   <tr valign=top><th align=right>
  -	threadkey</th><td>The currently open threadkey.</td></tr>
  +	key</th><td>The handle for the desired thread private memory</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_setthreadattr_detach"></a>
  +<a name="apr_status_t-148"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setthreadattr_detach(apr_threadattr_t *attr, apr_int32_t on);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_private_set(void *priv, apr_threadkey_t *key);</b>
     <dd>
  -Set if newly created threads should be created in detach mode.
  +Set the data to be stored in thread private memory
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	attr</th><td>The threadattr to affect
  +	priv</th><td>The data to be stored in private memory
   </td></tr>
   <tr valign=top><th align=right>
  -	on</th><td>Thread detach state on or off</td></tr>
  +	key</th><td>The handle for the desired thread private memory</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_thread_detach"></a>
  +<a name="apr_status_t-149"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_detach(apr_thread_t *thd);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_private_delete(apr_threadkey_t *key);</b>
     <dd>
  -detach a thread
  +Free the thread private memory
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thd</th><td>The thread to detach</td></tr>
  +	key</th><td>The handle for the desired thread private memory</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_thread_exit"></a>
  +<a name="apr_status_t-150"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t *retval);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_data_get(void **data, const char *key, apr_threadkey_t *threadkey);</b>
     <dd>
  -stop the current thread
  +Return the pool associated with the current threadkey.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thd</th><td>The thread to stop
  +	data</th><td>The user data associated with the threadkey.
   </td></tr>
   <tr valign=top><th align=right>
  -	retval</th><td>The return value to pass back to any thread that cares</td></tr>
  +	key</th><td>The key associated with the data
  +</td></tr>
  +<tr valign=top><th align=right>
  +	threadkey</th><td>The currently open threadkey.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_thread_join"></a>
  +<a name="apr_status_t-151"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_data_set(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_threadkey_t *threadkey);</b>
     <dd>
  -block until the desired thread stops executing.
  +Return the pool associated with the current threadkey.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	retval</th><td>The return value from the dead thread.
  +	data</th><td>The data to set.
   </td></tr>
   <tr valign=top><th align=right>
  -	thd</th><td>The thread to join</td></tr>
  +	key</th><td>The key to associate with the data.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cleanup</th><td>The cleanup routine to use when the file is destroyed.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	threadkey</th><td>The currently open threadkey.</td></tr>
   </table>
     </dl></dl>
   </blockquote>
  @@ -404,7 +404,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +49 -41    apr-site/docs/APR_Time_library.html
  
  Index: APR_Time_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_Time_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_Time_library.html	2000/12/04 18:14:01	1.3
  +++ APR_Time_library.html	2001/02/11 02:54:57	1.4
  @@ -146,46 +146,34 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_ansi_time_to_apr_time"></a>
  +<a name="-21"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ansi_time_to_apr_time(apr_time_t *result, time_t input);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(void);</b>
     <dd>
  -convert an ansi time_t to an apr_time_t
  +<p><img src="../images//tip.gif"> May sleep for longer than the specified time.
   <p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	result</th><td>the resulting apr_time_t
  -</td></tr>
  -<tr valign=top><th align=right>
  -	input</th><td>the time_t to convert</td></tr>
  -</table>
     </dl></dl>
   
  -<a name="apr_ctime"></a>
  +<a name="apr_status_t-167"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ctime(char *date_str, apr_time_t t);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ansi_time_to_apr_time(apr_time_t *result, time_t input);</b>
     <dd>
  -apr_ctime formats dates in the ctime() format
  -in an efficient manner.  it is a fixed length format
  -and requires the indicated amount of storage
  -including trailing \0
  +convert an ansi time_t to an apr_time_t
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	date_str</th><td>String to write to.
  +	result</th><td>the resulting apr_time_t
   </td></tr>
   <tr valign=top><th align=right>
  -	t</th><td>the time to convert</td></tr>
  +	input</th><td>the time_t to convert</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_explode_gmt"></a>
  +<a name="apr_status_t-168"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_explode_gmt(apr_exploded_time_t *result, apr_time_t input);</b>
  @@ -203,7 +191,7 @@
   </table>
     </dl></dl>
   
  -<a name="apr_explode_localtime"></a>
  +<a name="apr_status_t-169"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_explode_localtime(apr_exploded_time_t *result, apr_time_t input);</b>
  @@ -221,7 +209,7 @@
   </table>
     </dl></dl>
   
  -<a name="apr_implode_time"></a>
  +<a name="apr_status_t-170"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_implode_time(apr_time_t *result, apr_exploded_time_t *input);</b>
  @@ -240,16 +228,7 @@
   </table>
     </dl></dl>
   
  -<a name="apr_now"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_time_t apr_now(void);</b>
  -  <dd>
  -return the current time
  -<p><dl>
  -</dl></dl>
  -
  -<a name="apr_rfc822_date"></a>
  +<a name="apr_status_t-171"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_rfc822_date(char *date_str, apr_time_t t);</b>
  @@ -270,23 +249,28 @@
   </table>
     </dl></dl>
   
  -<a name="apr_sleep"></a>
  +<a name="apr_status_t-172"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_sleep(apr_interval_time_t t);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ctime(char *date_str, apr_time_t t);</b>
     <dd>
  -Sleep for the specified number of micro-seconds.
  -<p><img src="../images//tip.gif"> May sleep for longer than the specified time.
  +apr_ctime formats dates in the ctime() format
  +in an efficient manner.  it is a fixed length format
  +and requires the indicated amount of storage
  +including trailing \0
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	t</th><td>desired amount of time to sleep.</td></tr>
  +	date_str</th><td>String to write to.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	t</th><td>the time to convert</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_strftime"></a>
  +<a name="apr_status_t-173"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_strftime(char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_exploded_time_t *tm);</b>
  @@ -312,12 +296,36 @@
   	tm</th><td>The time to convert</td></tr>
   </table>
     </dl></dl>
  +
  +<a name="apr_time_t"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_time_t apr_time_now(void);</b>
  +  <dd>
  +return the current time
  +<p><dl>
  +</dl></dl>
  +
  +<a name="void-35"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_sleep(apr_interval_time_t t);</b>
  +  <dd>
  +Sleep for the specified number of micro-seconds.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	t</th><td>desired amount of time to sleep.</td></tr>
  +</table>
  +  </dl></dl>
   </blockquote>
   
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +7 -7      apr-site/docs/APR_UUID_Handling.html
  
  Index: APR_UUID_Handling.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_UUID_Handling.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_UUID_Handling.html	2000/12/04 18:14:02	1.3
  +++ APR_UUID_Handling.html	2001/02/11 02:54:57	1.4
  @@ -15,10 +15,10 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_status_t-15"></a>
  +<a name="apr_status_t-174"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_parse_uuid(apr_uuid_t *uuid, const char *uuid_str);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_uuid_parse(apr_uuid_t *uuid, const char *uuid_str);</b>
     <dd>
   Parse a standard-format string into a UUID
   <p><dl>
  @@ -33,10 +33,10 @@
   </table>
     </dl></dl>
   
  -<a name="void-31"></a>
  +<a name="void-36"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_get_uuid(apr_uuid_t *uuid);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_uuid_get(apr_uuid_t *uuid);</b>
     <dd>
   Generate and return a (new) UUID
   <p><dl>
  @@ -48,10 +48,10 @@
   </table>
     </dl></dl>
   
  -<a name="void-32"></a>
  +<a name="void-37"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_format_uuid(apr_pool_t *p, const apr_uuid_t *uuid);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_uuid_format(char *buffer, const apr_uuid_t *uuid);</b>
     <dd>
   Format a UUID into a string, following the standard format
   <p><dl>
  @@ -72,7 +72,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +16 -16    apr-site/docs/APR_command_arguments.html
  
  Index: APR_command_arguments.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_command_arguments.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_command_arguments.html	2000/12/04 18:14:02	1.3
  +++ APR_command_arguments.html	2001/02/11 02:54:57	1.4
  @@ -193,10 +193,10 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_status_t-2"></a>
  +<a name="apr_status_t-51"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_initopt(apr_getopt_t **os, apr_pool_t *cont,int argc, char *const *argv);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont,int argc, char *const *argv);</b>
     <dd>
   Initialize the arguments for parsing by apr_getopt().
   <p><img src="../images//tip.gif"> Arguments 2 and 3 are most commonly argc and argv from main(argc, argv)
  @@ -218,18 +218,18 @@
   </table>
     </dl></dl>
   
  -<a name="apr_status_t-3"></a>
  +<a name="apr_status_t-52"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getopt(apr_getopt_t *os, const char *opts, char *optch, const char **optarg);</b>
     <dd>
  -Parse the options initialized by apr_initopt().
  +Parse the options initialized by apr_getopt_init().
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	os</th><td>The apr_opt_t structure returned by apr_initopt()
  +	os</th><td>The apr_opt_t structure returned by apr_getopt_init()
   </td></tr>
   <tr valign=top><th align=right>
   	opts</th><td>A string of characters that are acceptable options to the 
  @@ -244,19 +244,19 @@
   </table>
     <dt><b>Return Value</b>
     <dd>There are four potential status values on exit. They are:
  -<PRE>
  +&lt;PRE&gt;
               APR_EOF      --  No more options to parse
               APR_BADCH    --  Found a bad option character
               APR_BADARG   --  No argument followed @parameter:
               APR_SUCCESS  --  The next option was found.
  -</PRE><p></dl></dl>
  +&lt;/PRE&gt;<p></dl></dl>
   
  -<a name="apr_status_t-4"></a>
  +<a name="apr_status_t-53"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getopt_long(apr_getopt_t *os, const apr_getopt_option_t *opts, int *optch, const char **optarg);</b>
     <dd>
  -Parse the options initialized by apr_initopt(), accepting long
  +Parse the options initialized by apr_getopt_init(), accepting long
   options beginning with "--" in addition to single-character
   options beginning with "-".
   <p><dl>
  @@ -264,7 +264,7 @@
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	os</th><td>The apr_getopt_t structure created by apr_initopt()
  +	os</th><td>The apr_getopt_t structure created by apr_getopt_init()
   </td></tr>
   <tr valign=top><th align=right>
   	opts</th><td>A pointer to a list of apr_getopt_option_t structures, which
  @@ -281,23 +281,23 @@
   </table>
     <dt><b>Return Value</b>
     <dd>There are four potential status values on exit.   They are:
  -<PRE>
  +&lt;PRE&gt;
               APR_EOF      --  No more options to parse
               APR_BADCH    --  Found a bad option character
               APR_BADARG   --  No argument followed @parameter:
               APR_SUCCESS  --  The next option was found.
  -</PRE>
  -When APR_SUCCESS is returned, os->ind gives the index of the first
  +&lt;/PRE&gt;
  +When APR_SUCCESS is returned, os-&gt;ind gives the index of the first
   non-option argument.  On error, a message will be printed to stdout unless
  -os->err is set to 0.  If os->interleave is set to nonzero, options can come
  -after arguments, and os->argv will be permuted to leave non-option arguments
  +os-&gt;err is set to 0.  If os-&gt;interleave is set to nonzero, options can come
  +after arguments, and os-&gt;argv will be permuted to leave non-option arguments
   at the end (the original argv is unaffected).<p></dl></dl>
   </blockquote>
   
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +18 -65    apr-site/docs/APR_general-purpose_library.html
  
  Index: APR_general-purpose_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_general-purpose_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_general-purpose_library.html	2000/12/04 18:14:02	1.3
  +++ APR_general-purpose_library.html	2001/02/11 02:54:58	1.4
  @@ -54,10 +54,10 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_status_t-5"></a>
  +<a name="apr_status_t-54"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_validate_password(const char *passwd, const char *hash);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_password_validate(const char *passwd, const char *hash);</b>
     <dd>
   Validate any password encypted with any algorithm that APR understands
   <p><dl>
  @@ -72,10 +72,10 @@
   </table>
     </dl></dl>
   
  -<a name="apr_status_t-6"></a>
  +<a name="apr_status_t-55"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getpass(const char *prompt, char *pwbuf, size_t *bufsize);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_password_get(const char *prompt, char *pwbuf, size_t *bufsize);</b>
     <dd>
   Display a prompt and read in the password from stdin.
   <p><dl>
  @@ -93,19 +93,19 @@
   </table>
     </dl></dl>
   
  -<a name="const"></a>
  +<a name="const-2"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const char * apr_filename_of_pathname(const char *pathname);</b>
     <dd>
   return the final element of the pathname
   <p><img src="../images//tip.gif"> Examples:  
  -<PRE>
  -                "/foo/bar/gum"   -> "gum"
  -                "/foo/bar/gum/"  -> ""
  -                "gum"            -> "gum"
  -                "wi\\n32\\stuff" -> "stuff"
  -</PRE>
  +&lt;PRE&gt;
  +                "/foo/bar/gum"   -&gt; "gum"
  +                "/foo/bar/gum/"  -&gt; ""
  +                "gum"            -&gt; "gum"
  +                "wi\\n32\\stuff" -&gt; "stuff"
  +&lt;/PRE&gt;
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -116,17 +116,18 @@
     <dt><b>Return Value</b>
     <dd>the final element of the path<p></dl></dl>
   
  -<a name="int-3"></a>
  +<a name="int-4"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), apr_vformatter_buff_t *c, const char *fmt, va_list ap);</b>
     <dd>
   apr_vformatter() is a generic printf-style formatting routine
   with some extensions.
  -<p><img src="../images//tip.gif"> <PRE>
  +<p><img src="../images//tip.gif"> &lt;PRE&gt;
   The extensions are:
   %pA  takes a struct in_addr *, and prints it as a.b.c.d
  -%pI  takes a struct sockaddr_in * and prints it as a.b.c.d:port
  +%pI  takes an apr_sockaddr_t * and prints it as a.b.c.d:port or
  +     [ipv6-address]:port
   %pp  takes a void * and outputs it in hex
   The %p hacks are to force gcc's printf warning code to skip
   over a pointer argument without complaining.  This does
  @@ -148,7 +149,7 @@
   the flush_func should flush the buffer in whatever manner is
   appropriate, re apr_pool_t nitialize curpos and endpos, and return 0.
   Note that flush_func is only invoked as a result of attempting to
  -write another byte at curpos when curpos >= endpos.  So for
  +write another byte at curpos when curpos &gt;= endpos.  So for
   example, it's possible when the output exactly matches the buffer
   space available that curpos == endpos will be true when
   apr_vformatter returns.
  @@ -162,7 +163,7 @@
   space at the end of its output buffer, and doesn't actually note
   that the space is in use until it either has to flush the buffer
   or until apr_vformatter returns.
  -</PRE>
  +&lt;/PRE&gt;
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -180,60 +181,12 @@
   	ap</th><td>The arguments to use to fill out the format string.</td></tr>
   </table>
     </dl></dl>
  -
  -<a name="int-4"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_snprintf(char *buf, size_t len, const char *format, ...);</b>
  -  <dd>
  -snprintf routine based on apr_vformatter.  This means it understands the 
  -same extensions.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	buf</th><td>The buffer to write to
  -</td></tr>
  -<tr valign=top><th align=right>
  -	len</th><td>The size of the buffer
  -</td></tr>
  -<tr valign=top><th align=right>
  -	format</th><td>The format string
  -... The arguments to use to fill out the format string.</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="int-5"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_vsnprintf(char *buf, size_t len, const char *format, va_list ap);</b>
  -  <dd>
  -vsnprintf routine based on apr_vformatter.  This means it understands the 
  -same extensions.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	buf</th><td>The buffer to write to
  -</td></tr>
  -<tr valign=top><th align=right>
  -	len</th><td>The size of the buffer
  -</td></tr>
  -<tr valign=top><th align=right>
  -	format</th><td>The format string
  -</td></tr>
  -<tr valign=top><th align=right>
  -	ap</th><td>The arguments to use to fill out the format string.</td></tr>
  -</table>
  -  </dl></dl>
   </blockquote>
   
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +68 -60    apr-site/docs/APR_lock_library.html
  
  Index: APR_lock_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_lock_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_lock_library.html	2000/12/04 18:14:02	1.3
  +++ APR_lock_library.html	2001/02/11 02:54:58	1.4
  @@ -15,38 +15,20 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_child_init_lock"></a>
  +<a name="-4"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_child_init_lock(apr_lock_t **lock, const char *fname, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -Re-open a lock in a child process.
  -<p><img src="../images//tip.gif"> This function doesn't always do something, it depends on the
  -     locking mechanism chosen for the platform, but it is a good
  -     idea to call it regardless, because it makes the code more
  -     portable.
  +<p><img src="../images//tip.gif">  If the lock is currently active when it is destroyed, it 
  +      will be unlocked first.
   <p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	lock</th><td>The newly re-opened lock structure.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	fname</th><td>A file name to use if the lock mechanism requires one.  This
  -             argument should always be provided.  The lock code itself will
  -             determine if it should be used.  This filename should be the 
  -             same one that was passed to apr_create_lock
  -</td></tr>
  -<tr valign=top><th align=right>
  -	cont</th><td>The pool to operate on.</td></tr>
  -</table>
     </dl></dl>
   
  -<a name="apr_create_lock"></a>
  +<a name="apr_status_t-56"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_lock(apr_lock_t **lock, apr_locktype_e type, apr_lockscope_e scope, const char *fname, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_create(apr_lock_t **lock, apr_locktype_e type, apr_lockscope_e scope, const char *fname, apr_pool_t *cont);</b>
     <dd>
   Create a new instance of a lock structure.
   <p><img src="../images//tip.gif"> APR_CROSS_PROCESS may lock both processes and threads, but it is
  @@ -60,19 +42,19 @@
   </td></tr>
   <tr valign=top><th align=right>
   	type</th><td>The type of lock to create, one of:
  -<PRE>
  +&lt;PRE&gt;
              APR_MUTEX
              APR_READWRITE
  -</PRE>
  +&lt;/PRE&gt;
   </td></tr>
   <tr valign=top><th align=right>
   	scope</th><td>The scope of the lock to create, one of:
  -<PRE>
  +&lt;PRE&gt;
              APR_CROSS_PROCESS    lock processes from the protected area.
              APR_INTRAPROCESS     lock threads from the protected area.
              APR_LOCKALL          lock processes and threads from the
                                   protected area.
  -</PRE>
  +&lt;/PRE&gt;
   </td></tr>
   <tr valign=top><th align=right>
   	fname</th><td>A file name to use if the lock mechanism requires one.  This
  @@ -84,63 +66,83 @@
   </table>
     </dl></dl>
   
  -<a name="apr_destroy_lock"></a>
  +<a name="apr_status_t-57"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_destroy_lock(apr_lock_t *lock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_aquire(apr_lock_t *lock);</b>
     <dd>
  -Free the memory associated with a lock.
  -<p><img src="../images//tip.gif">  If the lock is currently active when it is destroyed, it 
  -      will be unlocked first.
  +Lock a protected region.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	lock</th><td>The lock to free.</td></tr>
  +	lock</th><td>The lock to set.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_lockdata"></a>
  +<a name="apr_status_t-58"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_lockdata(apr_lock_t *lock, const char *key, void *data);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_release(apr_lock_t *lock);</b>
     <dd>
  -Return the pool associated with the current lock.
  +Unlock a protected region.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	lock</th><td>The currently open lock.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The key to use when retreiving data associated with this lock
  -</td></tr>
  +	lock</th><td>The lock to reset.</td></tr>
  +</table>
  +  </dl></dl>
  +
  +<a name="apr_status_t-59"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_destroy(apr_lock_t *lock);</b>
  +  <dd>
  +Free the memory associated with a lock.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
   <tr valign=top><th align=right>
  -	data</th><td>The user data associated with the lock.</td></tr>
  +	lock</th><td>The lock to free.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_lock"></a>
  +<a name="apr_status_t-60"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock(apr_lock_t *lock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_child_init(apr_lock_t **lock, const char *fname, apr_pool_t *cont);</b>
     <dd>
  -Lock a protected region.
  +Re-open a lock in a child process.
  +<p><img src="../images//tip.gif"> This function doesn't always do something, it depends on the
  +     locking mechanism chosen for the platform, but it is a good
  +     idea to call it regardless, because it makes the code more
  +     portable.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	lock</th><td>The lock to set.</td></tr>
  +	lock</th><td>The newly re-opened lock structure.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	fname</th><td>A file name to use if the lock mechanism requires one.  This
  +             argument should always be provided.  The lock code itself will
  +             determine if it should be used.  This filename should be the 
  +             same one that was passed to apr_lock_create
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cont</th><td>The pool to operate on.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_lockdata"></a>
  +<a name="apr_status_t-61"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_lockdata(apr_lock_t *lock, void *data, const char *key, apr_status_t (*cleanup) (void *));</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_data_get(apr_lock_t *lock, const char *key, void *data);</b>
     <dd>
   Return the pool associated with the current lock.
   <p><dl>
  @@ -150,29 +152,35 @@
   <tr valign=top><th align=right>
   	lock</th><td>The currently open lock.
   </td></tr>
  -<tr valign=top><th align=right>
  -	data</th><td>The user data to associate with the lock.
  -</td></tr>
   <tr valign=top><th align=right>
  -	key</th><td>The key to use when associating data with this lock
  +	key</th><td>The key to use when retreiving data associated with this lock
   </td></tr>
   <tr valign=top><th align=right>
  -	cleanup</th><td>The cleanup to use when the lock is destroyed.</td></tr>
  +	data</th><td>The user data associated with the lock.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_unlock"></a>
  +<a name="apr_status_t-62"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_unlock(apr_lock_t *lock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_data_set(apr_lock_t *lock, void *data, const char *key, apr_status_t (*cleanup)(void *));</b>
     <dd>
  -Unlock a protected region.
  +Return the pool associated with the current lock.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	lock</th><td>The lock to reset.</td></tr>
  +	lock</th><td>The currently open lock.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	data</th><td>The user data to associate with the lock.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	key</th><td>The key to use when associating data with this lock
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cleanup</th><td>The cleanup to use when the lock is destroyed.</td></tr>
   </table>
     </dl></dl>
   </blockquote>
  @@ -180,7 +188,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +122 -116  apr-site/docs/APR_memory_allocation.html
  
  Index: APR_memory_allocation.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_memory_allocation.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_memory_allocation.html	2000/12/04 18:14:02	1.3
  +++ APR_memory_allocation.html	2001/02/11 02:54:58	1.4
  @@ -52,7 +52,7 @@
   	<li><a href="APR_memory_allocation.html#apr_pool_t-apr_pool_t">apr_pool_t *joined </a>
   	<li><a href="APR_memory_allocation.html#apr_pool_t-first">    union block_hdr *first</a>
   	<li><a href="APR_memory_allocation.html#apr_pool_t-free_first_avail">    char *free_first_avail</a>
  -	<li><a href="APR_memory_allocation.html#apr_pool_t-int">int apr_abort(int retcode) </a>
  +	<li><a href="APR_memory_allocation.html#apr_pool_t-int">int (*apr_abort)(int retcode) </a>
   	<li><a href="APR_memory_allocation.html#apr_pool_t-last">    union block_hdr *last</a>
   	</ul><h2>Class Variables</h2>
   <blockquote>
  @@ -111,7 +111,7 @@
   <a name="apr_pool_t-int"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_abort(int retcode) ;</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int (*apr_abort)(int retcode) ;</b>
     <dd>
   A function to control how pools behave when they receive ENOMEM
   <p><dl>
  @@ -153,84 +153,92 @@
   A list of processes to kill when this pool is cleared<h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_create_pool"></a>
  +<a name="apr_pool_t-2"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_pool(apr_pool_t **newcont, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_pool_t *apr_pool_sub_make(apr_pool_t *p, int (*apr_abort)(int retcode));</b>
     <dd>
  -Create a new pool.
  +make a sub pool from the current pool
  +<p><img src="../images//tip.gif"> The apr_abort function provides a way to quit the program if the
  +     machine is out of memory.  By default, APR will return on error.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	newcont</th><td>The pool we have just created.
  +	p</th><td>The pool to use as a parent pool
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The parent pool.  If this is NULL, the new pool is a root
  -       pool.  If it is non-NULL, the new pool will inherit all
  -       of it's parent pool's attributes, except the apr_pool_t will 
  -       be a sub-pool.</td></tr>
  +	apr_abort</th><td>A function to use if the pool cannot allocate more memory.</td></tr>
   </table>
  -  </dl></dl>
  +  <dt><b>Return Value</b>
  +  <dd>The new sub-pool<p></dl></dl>
   
  -<a name="apr_get_userdata"></a>
  +<a name="apr_size_t"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_userdata(void **data, const char *key, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_size_t apr_pool_num_bytes(apr_pool_t *p);</b>
     <dd>
  -Return the data associated with the current pool.
  +report the number of bytes currently in the pool
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	data</th><td>The key for the data to retrieve
  -</td></tr>
  -<tr valign=top><th align=right>
  -	key</th><td>The user data associated with the pool.
  -</td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The current pool.</td></tr>
  +	p</th><td>The pool to inspect</td></tr>
   </table>
  -  </dl></dl>
  +  <dt><b>Return Value</b>
  +  <dd>The number of bytes<p></dl></dl>
   
  -<a name="apr_init_alloc"></a>
  +<a name="apr_size_t-2"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_init_alloc(void);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_size_t apr_pool_free_blocks_num_bytes(void);</b>
  +  <dd>
  +report the number of bytes currently in the list of free blocks
  +<p><dl>
  +<dt><b>Return Value</b>
  +  <dd>The number of bytes<p></dl></dl>
  +
  +<a name="apr_status_t-106"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_alloc_init(apr_pool_t *globalp);</b>
     <dd>
   Setup all of the internal structures required to use pools
  +@parm globalp The apr global pool, used to allocate APR structures
  +              before any other pools are created.  This pool should not
  +              ever be used outside of APR.
   <p><img src="../images//tip.gif"> Programs do NOT need to call this directly.  APR will call this
        automatically from apr_initialize.
   <p><dl>
   </dl></dl>
   
  -<a name="apr_pool_t"></a>
  +<a name="apr_status_t-107"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_pool_t *apr_make_sub_pool(apr_pool_t *p, int (*apr_abort)(int retcode));</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_create(apr_pool_t **newcont, apr_pool_t *cont);</b>
     <dd>
  -make a sub pool from the current pool
  -<p><img src="../images//tip.gif"> The apr_abort function provides a way to quit the program if the
  -     machine is out of memory.  By default, APR will return on error.
  +Create a new pool.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	p</th><td>The pool to use as a parent pool
  +	newcont</th><td>The pool we have just created.
   </td></tr>
   <tr valign=top><th align=right>
  -	apr_abort</th><td>A function to use if the pool cannot allocate more memory.</td></tr>
  +	cont</th><td>The parent pool.  If this is NULL, the new pool is a root
  +       pool.  If it is non-NULL, the new pool will inherit all
  +       of it's parent pool's attributes, except the apr_pool_t will 
  +       be a sub-pool.</td></tr>
   </table>
  -  <dt><b>Return Value</b>
  -  <dd>The new sub-pool<p></dl></dl>
  +  </dl></dl>
   
  -<a name="apr_set_userdata"></a>
  +<a name="apr_status_t-108"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_userdata(const void *data, const char *key, apr_status_t (*cleanup) (void *), apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_userdata_set(const void *data, const char *key, apr_status_t (*cleanup)(void *), apr_pool_t *cont);</b>
     <dd>
   Set the data associated with the current pool
   <p><img src="../images//tip.gif"> The data to be attached to the pool should have the same
  @@ -258,36 +266,31 @@
   </table>
     </dl></dl>
   
  -<a name="apr_size_t"></a>
  +<a name="apr_status_t-109"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_size_t apr_bytes_in_pool(apr_pool_t *p);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_userdata_get(void **data, const char *key, apr_pool_t *cont);</b>
     <dd>
  -report the number of bytes currently in the pool
  +Return the data associated with the current pool.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	p</th><td>The pool to inspect</td></tr>
  +	data</th><td>The key for the data to retrieve
  +</td></tr>
  +<tr valign=top><th align=right>
  +	key</th><td>The user data associated with the pool.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cont</th><td>The current pool.</td></tr>
   </table>
  -  <dt><b>Return Value</b>
  -  <dd>The number of bytes<p></dl></dl>
  -
  -<a name="apr_size_t-2"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_size_t apr_bytes_in_free_blocks(void);</b>
  -  <dd>
  -report the number of bytes currently in the list of free blocks
  -<p><dl>
  -<dt><b>Return Value</b>
  -  <dd>The number of bytes<p></dl></dl>
  +  </dl></dl>
   
  -<a name="apr_status_t-12"></a>
  +<a name="apr_status_t-110"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_run_cleanup(apr_pool_t *p, void *data, apr_status_t (*cleanup) (void *));</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_cleanup_run(apr_pool_t *p, void *data, apr_status_t (*cleanup)(void *));</b>
     <dd>
   Run the specified cleanup function immediately and unregister it
   <p><dl>
  @@ -305,10 +308,10 @@
   </table>
     </dl></dl>
   
  -<a name="apr_status_t-13"></a>
  +<a name="apr_status_t-111"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_null_cleanup(void *data);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_cleanup_null(void *data);</b>
     <dd>
   An empty cleanup function
   <p><dl>
  @@ -319,19 +322,8 @@
   	data</th><td>The data to cleanup</td></tr>
   </table>
     </dl></dl>
  -
  -<a name="apr_term_alloc"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_term_alloc(void);</b>
  -  <dd>
  -Tear down all of the internal structures required to use pools
  -<p><img src="../images//tip.gif"> Programs do NOT need to call this directly.  APR will call this
  -     automatically from apr_terminate.
  -<p><dl>
  -</dl></dl>
   
  -<a name="int-6"></a>
  +<a name="int-5"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b);</b>
  @@ -354,49 +346,6 @@
   <a name="void-10"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_cleanup_for_exec(void);</b>
  -  <dd>
  -Run all of the child_cleanups, so that any unnecessary files are 
  -closed because we are about to exec a new program
  -<p><dl>
  -</dl></dl>
  -
  -<a name="void-4"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_clear_pool(apr_pool_t *p);</b>
  -  <dd>
  -clear all memory in the pool
  -<p><img src="../images//tip.gif">  This does not actually free the memory, it just allows the pool
  -      to re-use this memory for the next allocation.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	p</th><td>The pool to clear</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="void-5"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_destroy_pool(apr_pool_t *p);</b>
  -  <dd>
  -destroy the pool
  -<p><img src="../images//tip.gif"> This will actually free the memory
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	p</th><td>The pool to destroy</td></tr>
  -</table>
  -  </dl></dl>
  -
  -<a name="void-6"></a>
  -<dl>
  -  <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_palloc(apr_pool_t *c, apr_size_t reqsize);</b>
     <dd>
   Allocate a block of memory from a pool
  @@ -413,7 +362,7 @@
     <dt><b>Return Value</b>
     <dd>The allocated memory<p></dl></dl>
   
  -<a name="void-7"></a>
  +<a name="void-11"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_pcalloc(apr_pool_t *p, apr_size_t size);</b>
  @@ -432,10 +381,10 @@
     <dt><b>Return Value</b>
     <dd>The allocated memory<p></dl></dl>
   
  -<a name="void-8"></a>
  +<a name="void-12"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_register_cleanup(apr_pool_t *p, const void *data, apr_status_t (*plain_cleanup) (void *), apr_status_t (*child_cleanup) (void *));</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_cleanup_register(apr_pool_t *p, const void *data, apr_status_t (*plain_cleanup)(void *), apr_status_t (*child_cleanup)(void *));</b>
     <dd>
   Register a function to be called when a pool is cleared or destroyed
   <p><dl>
  @@ -457,10 +406,10 @@
   </table>
     </dl></dl>
   
  -<a name="void-9"></a>
  +<a name="void-13"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_kill_cleanup(apr_pool_t *p, const void *data, apr_status_t (*cleanup) (void *));</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_cleanup_kill(apr_pool_t *p, const void *data, apr_status_t (*cleanup)(void *));</b>
     <dd>
   remove a previously registered cleanup function
   <p><dl>
  @@ -477,12 +426,69 @@
   	cleanup</th><td>The function to remove from cleanup</td></tr>
   </table>
     </dl></dl>
  +
  +<a name="void-14"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_cleanup_for_exec(void);</b>
  +  <dd>
  +Run all of the child_cleanups, so that any unnecessary files are 
  +closed because we are about to exec a new program
  +<p><dl>
  +</dl></dl>
  +
  +<a name="void-7"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_alloc_term(apr_pool_t *globalp);</b>
  +  <dd>
  +Tear down all of the internal structures required to use pools
  +@parm globalp The apr global pool, used to allocate APR structures
  +              before any other pools are created.  This pool should not
  +              ever be used outside of APR.
  +<p><img src="../images//tip.gif"> Programs do NOT need to call this directly.  APR will call this
  +     automatically from apr_terminate.
  +<p><dl>
  +</dl></dl>
  +
  +<a name="void-8"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_clear_pool(apr_pool_t *p);</b>
  +  <dd>
  +clear all memory in the pool
  +<p><img src="../images//tip.gif">  This does not actually free the memory, it just allows the pool
  +      to re-use this memory for the next allocation.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	p</th><td>The pool to clear</td></tr>
  +</table>
  +  </dl></dl>
  +
  +<a name="void-9"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_destroy(apr_pool_t *p);</b>
  +  <dd>
  +destroy the pool
  +<p><img src="../images//tip.gif"> This will actually free the memory
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	p</th><td>The pool to destroy</td></tr>
  +</table>
  +  </dl></dl>
   </blockquote>
   
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +109 -85   apr-site/docs/APR_portability_Routines.html
  
  Index: APR_portability_Routines.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_portability_Routines.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_portability_Routines.html	2000/12/04 18:14:04	1.3
  +++ APR_portability_Routines.html	2001/02/11 02:54:58	1.4
  @@ -31,120 +31,148 @@
   an APR socket from it; currently, this is platform-independent<h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_get_os_dir"></a>
  +<a name="-11"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_dir(apr_os_dir_t **thedir, apr_dir_t *dir);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
     <dd>
  -convert the dir from apr type to os specific type.
  +<p><img src="../images//tip.gif"> On Unix, it is only possible to get a file descriptor from 
  +     an apr file type.
   <p><dl>
  +</dl></dl>
   
  +<a name="-12"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> On Unix, it is only possible to put a file descriptor into
  +     an apr file type.
  +<p><dl>
  +</dl></dl>
  +
  +<a name="-13"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> If you only know the descriptor/handle or if it isn't really
  +     a true socket, use apr_os_sock_put() instead.
  +<p><dl>
  +</dl></dl>
  +
  +<a name="apr_status_t-112"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_file_get(apr_os_file_t *thefile, apr_file_t *file);</b>
  +  <dd>
  +convert the file from apr type to os specific type.
  +<p><dl>
  +
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thedir</th><td>The os specific dir we are converting to
  +	thefile</th><td>The os specific file we are converting to
   </td></tr>
   <tr valign=top><th align=right>
  -	dir</th><td>The apr dir to convert.</td></tr>
  +	file</th><td>The apr file to convert.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_os_exp_time"></a>
  +<a name="apr_status_t-113"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_exp_time(apr_os_exp_time_t **ostime, apr_exploded_time_t *aprtime);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir);</b>
     <dd>
  -Get the exploded time in the platforms native format.
  +convert the dir from apr type to os specific type.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	ostime</th><td>the native time format
  +	thedir</th><td>The os specific dir we are converting to
   </td></tr>
   <tr valign=top><th align=right>
  -	aprtime</th><td>the time to convert</td></tr>
  +	dir</th><td>The apr dir to convert.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_os_file"></a>
  +<a name="apr_status_t-114"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_file(apr_os_file_t *thefile, apr_file_t *file);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock);</b>
     <dd>
  -convert the file from apr type to os specific type.
  -<p><img src="../images//tip.gif"> On Unix, it is only possible to get a file descriptor from 
  -     an apr file type.
  +Convert the socket from an apr type to an OS specific socket
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thefile</th><td>The os specific file we are converting to
  +	thesock</th><td>The socket to convert.
   </td></tr>
   <tr valign=top><th align=right>
  -	file</th><td>The apr file to convert.</td></tr>
  +	sock</th><td>The os specifc equivelant of the apr socket..</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_os_imp_time"></a>
  +<a name="apr_status_t-115"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_imp_time(apr_os_imp_time_t **ostime, apr_time_t *aprtime);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_lock_get(apr_os_lock_t *oslock, apr_lock_t *lock);</b>
     <dd>
  -Get the imploded time in the platforms native format.
  +Convert the lock from os specific type to apr type
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	ostime</th><td>the native time format
  +	oslock</th><td>The os specific lock we are converting to.
   </td></tr>
   <tr valign=top><th align=right>
  -	aprtimethe</th><td>time to convert</td></tr>
  +	lock</th><td>The apr lock to convert.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_os_lock"></a>
  +<a name="apr_status_t-116"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_lock(apr_os_lock_t *oslock, apr_lock_t *lock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_exp_time_get(apr_os_exp_time_t **ostime, apr_exploded_time_t *aprtime);</b>
     <dd>
  -Convert the lock from os specific type to apr type
  +Get the exploded time in the platforms native format.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	oslock</th><td>The os specific lock we are converting to.
  +	ostime</th><td>the native time format
   </td></tr>
   <tr valign=top><th align=right>
  -	lock</th><td>The apr lock to convert.</td></tr>
  +	aprtime</th><td>the time to convert</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_os_sock"></a>
  +<a name="apr_status_t-117"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_sock(apr_os_sock_t *thesock, apr_socket_t *sock);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_imp_time_get(apr_os_imp_time_t **ostime, apr_time_t *aprtime);</b>
     <dd>
  -Convert the socket from an apr type to an OS specific socket
  +Get the imploded time in the platforms native format.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	thesock</th><td>The socket to convert.
  +	ostime</th><td>the native time format
   </td></tr>
   <tr valign=top><th align=right>
  -	sock</th><td>The os specifc equivelant of the apr socket..</td></tr>
  +	aprtimethe</th><td>time to convert</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_get_os_thread"></a>
  +<a name="apr_status_t-118"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_thread(apr_os_thread_t **thethd, apr_thread_t *thd);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_thread_get(apr_os_thread_t **thethd, apr_thread_t *thd);</b>
     <dd>
   convert the thread to os specific type from apr type.
   <p><dl>
  @@ -159,10 +187,10 @@
   </table>
     </dl></dl>
   
  -<a name="apr_get_os_threadkey"></a>
  +<a name="apr_status_t-119"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_threadkey(apr_os_threadkey_t *thekey, apr_threadkey_t *key);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_threadkey_get(apr_os_threadkey_t *thekey, apr_threadkey_t *key);</b>
     <dd>
   convert the thread private memory key to os specific type from an apr type.
   <p><dl>
  @@ -177,35 +205,31 @@
   </table>
     </dl></dl>
   
  -<a name="apr_make_os_sock"></a>
  +<a name="apr_status_t-120"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_make_os_sock(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_file_put(apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont);</b>
     <dd>
  -Create a socket from an existing descriptor and local and remote
  -socket addresses.
  -<p><img src="../images//tip.gif"> If you only know the descriptor/handle or if it isn't really
  -     a true socket, use apr_put_os_sock() instead.
  +convert the file from os specific type to apr type.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	apr_sock</th><td>The new socket that has been set up
  +	file</th><td>The apr file we are converting to.
   </td></tr>
   <tr valign=top><th align=right>
  -	os_sock_info</th><td>The os representation of the socket handle and
  -       other characteristics of the socket
  +	thefile</th><td>The os specific file to convert
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use</td></tr>
  +	cont</th><td>The pool to use if it is needed.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_put_os_dir"></a>
  +<a name="apr_status_t-121"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_dir(apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_dir_put(apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont);</b>
     <dd>
   convert the dir from os specific type to apr type.
   <p><dl>
  @@ -223,117 +247,117 @@
   </table>
     </dl></dl>
   
  -<a name="apr_put_os_exp_time"></a>
  +<a name="apr_status_t-122"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_exp_time(apr_exploded_time_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont);</b>
     <dd>
  -Put the exploded time in the APR format.
  +Convert a socket from the os specific type to the apr type
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	aprtime</th><td>the APR time format
  +	sock</th><td>The pool to use.
   </td></tr>
   <tr valign=top><th align=right>
  -	ostime</th><td>the time to convert
  +	thesock</th><td>The socket to convert to.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>the pool to use if necessary</td></tr>
  +	cont</th><td>The socket we are converting to an apr type.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_put_os_file"></a>
  +<a name="apr_status_t-123"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_file(apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_sock_make(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont);</b>
     <dd>
  -convert the file from os specific type to apr type.
  -<p><img src="../images//tip.gif"> On Unix, it is only possible to put a file descriptor into
  -     an apr file type.
  +Create a socket from an existing descriptor and local and remote
  +socket addresses.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	file</th><td>The apr file we are converting to.
  +	apr_sock</th><td>The new socket that has been set up
   </td></tr>
   <tr valign=top><th align=right>
  -	thefile</th><td>The os specific file to convert
  +	os_sock_info</th><td>The os representation of the socket handle and
  +       other characteristics of the socket
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use if it is needed.</td></tr>
  +	cont</th><td>The pool to use</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_put_os_imp_time"></a>
  +<a name="apr_status_t-124"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_imp_time(apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_lock_put(apr_lock_t **lock, apr_os_lock_t *thelock, apr_pool_t *cont);</b>
     <dd>
  -Put the imploded time in the APR format.
  +Convert the lock from os specific type to apr type
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	aprtime</th><td>the APR time format
  +	lock</th><td>The apr lock we are converting to.
   </td></tr>
   <tr valign=top><th align=right>
  -	ostime</th><td>the time to convert
  +	thelock</th><td>The os specific lock to convert.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>the pool to use if necessary</td></tr>
  +	cont</th><td>The pool to use if it is needed.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_put_os_lock"></a>
  +<a name="apr_status_t-125"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_lock(apr_lock_t **lock, apr_os_lock_t *thelock, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_imp_time_put(apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont);</b>
     <dd>
  -Convert the lock from os specific type to apr type
  +Put the imploded time in the APR format.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	lock</th><td>The apr lock we are converting to.
  +	aprtime</th><td>the APR time format
   </td></tr>
   <tr valign=top><th align=right>
  -	thelock</th><td>The os specific lock to convert.
  +	ostime</th><td>the time to convert
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use if it is needed.</td></tr>
  +	cont</th><td>the pool to use if necessary</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_put_os_sock"></a>
  +<a name="apr_status_t-126"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_sock(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_exp_time_put(apr_exploded_time_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont);</b>
     <dd>
  -Convert a socket from the os specific type to the apr type
  +Put the exploded time in the APR format.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	sock</th><td>The pool to use.
  +	aprtime</th><td>the APR time format
   </td></tr>
   <tr valign=top><th align=right>
  -	thesock</th><td>The socket to convert to.
  +	ostime</th><td>the time to convert
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The socket we are converting to an apr type.</td></tr>
  +	cont</th><td>the pool to use if necessary</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_put_os_thread"></a>
  +<a name="apr_status_t-127"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_thread(apr_thread_t **thd, apr_os_thread_t *thethd, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_thread_put(apr_thread_t **thd, apr_os_thread_t *thethd,;</b>
     <dd>
   convert the thread from os specific type to apr type.
   <p><dl>
  @@ -351,10 +375,10 @@
   </table>
     </dl></dl>
   
  -<a name="apr_put_os_threadkey"></a>
  +<a name="apr_status_t-128"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_threadkey(apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_threadkey_put(apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont);</b>
     <dd>
   convert the thread private memory key from os specific type to apr type.
   <p><dl>
  @@ -376,7 +400,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +103 -55   apr-site/docs/APR_strings_library.html
  
  Index: APR_strings_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/APR_strings_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- APR_strings_library.html	2000/12/04 18:14:04	1.3
  +++ APR_strings_library.html	2001/02/11 02:54:58	1.4
  @@ -15,7 +15,7 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_status_t-14"></a>
  +<a name="apr_status_t-136"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_tokenize_to_argv(const char *arg_str, char ***argv_out, apr_pool_t *token_context);;</b>
  @@ -36,51 +36,8 @@
   	token_context</th><td>Pool to use.</td></tr>
   </table>
     </dl></dl>
  -
  -<a name="apr_strnatcasecmp"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_strnatcasecmp(char const *a, char const *b);</b>
  -  <dd>
  -Do a natural order comparison of two strings ignoring the case of the 
  -strings.
  -<p><dl>
  -
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	a</th><td>The first string to compare
  -</td></tr>
  -<tr valign=top><th align=right>
  -	b</th><td>The second string to compare</td></tr>
  -</table>
  -  <dt><b>Return Value</b>
  -  <dd>Either <0, 0, or >0.  If the first string is less than the second
  -        this returns <0, if they are equivalent it returns 0, and if the
  -        first string is greater than second string it retuns >0.<p></dl></dl>
  -
  -<a name="apr_strnatcmp"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_strnatcmp(char const *a, char const *b);</b>
  -  <dd>
  -Do a natural order comparison of two strings.
  -<p><dl>
   
  -  <dt><b>Parameters</b><dd>
  -	<table width="85%">
  -<tr valign=top><th align=right>
  -	a</th><td>The first string to compare
  -</td></tr>
  -<tr valign=top><th align=right>
  -	b</th><td>The second string to compare</td></tr>
  -</table>
  -  <dt><b>Return Value</b>
  -  <dd>Either <0, 0, or >0.  If the first string is less than the second
  -         this returns <0, if they are equivalent it returns 0, and if the
  -         first string is greater than second string it retuns >0.<p></dl></dl>
  -
  -<a name="char"></a>
  +<a name="char-2"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pstrdup(apr_pool_t *p, const char *s);</b>
  @@ -99,7 +56,7 @@
     <dt><b>Return Value</b>
     <dd>The new string<p></dl></dl>
   
  -<a name="char-2"></a>
  +<a name="char-3"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n);</b>
  @@ -122,7 +79,7 @@
     <dt><b>Return Value</b>
     <dd>The new string<p></dl></dl>
   
  -<a name="char-3"></a>
  +<a name="char-4"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pstrcat(apr_pool_t *p, ...);</b>
  @@ -139,7 +96,7 @@
     <dt><b>Return Value</b>
     <dd>The new string<p></dl></dl>
   
  -<a name="char-4"></a>
  +<a name="char-5"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap);</b>
  @@ -162,7 +119,7 @@
     <dt><b>Return Value</b>
     <dd>The new string<p></dl></dl>
   
  -<a name="char-5"></a>
  +<a name="char-6"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_psprintf(apr_pool_t *p, const char *fmt, ...);</b>
  @@ -183,14 +140,14 @@
     <dt><b>Return Value</b>
     <dd>The new string<p></dl></dl>
   
  -<a name="char-6"></a>
  +<a name="char-7"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_cpystrn(char *dst, const char *src, size_t dst_size);</b>
     <dd>
  -copy n characters from src to des>
  +copy n characters from src to des&gt;
   <p><img src="../images//tip.gif">  
  -<PRE>
  +&lt;PRE&gt;
   We re-implement this function to implement these specific changes:
         1) strncpy() doesn't always null terminate and we want it to.
         2) strncpy() null fills, which is bogus, esp. when copy 8byte strings
  @@ -198,7 +155,7 @@
         3) Instead of returning the pointer to the beginning of the
            destination string, we return a pointer to the terminating '\0'
            to allow us to check for truncation.
  -</PRE>
  +&lt;/PRE&gt;
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -214,7 +171,7 @@
   </table>
     </dl></dl>
   
  -<a name="char-7"></a>
  +<a name="char-8"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_collapse_spaces(char *dest, const char *src);</b>
  @@ -232,12 +189,103 @@
   	src</th><td>The string to rid the spaces from.</td></tr>
   </table>
     </dl></dl>
  +
  +<a name="int-6"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_strnatcmp(char const *a, char const *b);</b>
  +  <dd>
  +Do a natural order comparison of two strings.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	a</th><td>The first string to compare
  +</td></tr>
  +<tr valign=top><th align=right>
  +	b</th><td>The second string to compare</td></tr>
  +</table>
  +  <dt><b>Return Value</b>
  +  <dd>Either &lt;0, 0, or &gt;0.  If the first string is less than the second
  +         this returns &lt;0, if they are equivalent it returns 0, and if the
  +         first string is greater than second string it retuns &gt;0.<p></dl></dl>
  +
  +<a name="int-7"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_strnatcasecmp(char const *a, char const *b);</b>
  +  <dd>
  +Do a natural order comparison of two strings ignoring the case of the 
  +strings.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	a</th><td>The first string to compare
  +</td></tr>
  +<tr valign=top><th align=right>
  +	b</th><td>The second string to compare</td></tr>
  +</table>
  +  <dt><b>Return Value</b>
  +  <dd>Either &lt;0, 0, or &gt;0.  If the first string is less than the second
  +        this returns &lt;0, if they are equivalent it returns 0, and if the
  +        first string is greater than second string it retuns &gt;0.<p></dl></dl>
  +
  +<a name="int-8"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_snprintf(char *buf, size_t len, const char *format, ...);</b>
  +  <dd>
  +snprintf routine based on apr_vformatter.  This means it understands the
  +same extensions.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	buf</th><td>The buffer to write to
  +</td></tr>
  +<tr valign=top><th align=right>
  +	len</th><td>The size of the buffer
  +</td></tr>
  +<tr valign=top><th align=right>
  +	format</th><td>The format string
  +... The arguments to use to fill out the format string.</td></tr>
  +</table>
  +  </dl></dl>
  +
  +<a name="int-9"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_vsnprintf(char *buf, size_t len, const char *format, va_list ap);</b>
  +  <dd>
  +vsnprintf routine based on apr_vformatter.  This means it understands the
  +same extensions.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	buf</th><td>The buffer to write to
  +</td></tr>
  +<tr valign=top><th align=right>
  +	len</th><td>The size of the buffer
  +</td></tr>
  +<tr valign=top><th align=right>
  +	format</th><td>The format string
  +</td></tr>
  +<tr valign=top><th align=right>
  +	ap</th><td>The arguments to use to fill out the format string.</td></tr>
  +</table>
  +  </dl></dl>
   </blockquote>
   
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +22 -22    apr-site/docs/Dynamic_Object_Handling.html
  
  Index: Dynamic_Object_Handling.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/Dynamic_Object_Handling.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- Dynamic_Object_Handling.html	2000/12/04 18:14:04	1.3
  +++ Dynamic_Object_Handling.html	2001/02/11 02:54:58	1.4
  @@ -34,49 +34,43 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_dso_error"></a>
  +<a name="apr_status_t"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const char *apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx);</b>
     <dd>
  -Report more information when a DSO function fails.
  +Load a DSO library.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	dso</th><td>The dso handle that has been opened
  +	res_handle</th><td>Location to store new handle for the DSO.
   </td></tr>
   <tr valign=top><th align=right>
  -	buf</th><td>Location to store the dso error
  +	path</th><td>Path to the DSO library
   </td></tr>
   <tr valign=top><th align=right>
  -	bufsize</th><td>The size of the provided buffer</td></tr>
  +	ctx</th><td>Pool to use.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_dso_load"></a>
  +<a name="apr_status_t-2"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_unload(apr_dso_handle_t *handle);</b>
     <dd>
  -Load a DSO library.
  +Close a DSO library.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	res_handle</th><td>Location to store new handle for the DSO.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	path</th><td>Path to the DSO library
  -</td></tr>
   <tr valign=top><th align=right>
  -	ctx</th><td>Pool to use.</td></tr>
  +	handle</th><td>handle to close.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_dso_sym"></a>
  +<a name="apr_status_t-3"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname);</b>
  @@ -97,18 +91,24 @@
   </table>
     </dl></dl>
   
  -<a name="apr_dso_unload"></a>
  +<a name="const"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_unload(apr_dso_handle_t *handle);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const char *apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize);</b>
     <dd>
  -Close a DSO library.
  +Report more information when a DSO function fails.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	handle</th><td>handle to close.</td></tr>
  +	dso</th><td>The dso handle that has been opened
  +</td></tr>
  +<tr valign=top><th align=right>
  +	buf</th><td>Location to store the dso error
  +</td></tr>
  +<tr valign=top><th align=right>
  +	bufsize</th><td>The size of the provided buffer</td></tr>
   </table>
     </dl></dl>
   </blockquote>
  @@ -116,7 +116,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +148 -11   apr-site/docs/Error_Codes.html
  
  Index: Error_Codes.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/Error_Codes.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- Error_Codes.html	2000/12/04 18:14:04	1.3
  +++ Error_Codes.html	2001/02/11 02:54:58	1.4
  @@ -15,29 +15,53 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_canonical_error"></a>
  +<a name="apr_status_t-4"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_canonical_error(apr_status_t err);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t APR_FROM_OS_ERROR(os_err_type syserr);</b>
     <dd>
  -Type for specifying an error or status code.
  - Convert an APR error to a canonical error
  -<p><img src="../images//tip.gif"> see apr/APRDesgin for an explanation of why this is necessary.
  +Fold a platform specific error into an apr_status_t code.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	err</th><td>The APR error value</td></tr>
  +	syserr</th><td>The platform os error code.</td></tr>
   </table>
  -  <dt><b>Return Value</b>
  -  <dd>The canonical error value<p></dl></dl>
  +  </dl></dl>
   
  -<a name="apr_strerror"></a>
  +<a name="apr_status_t-5"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_error();</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> Warning: macro implementation; the statcode argument may be evaluated
  +     multiple times.  If the statcode was not created by apr_get_os_error 
  +     or APR_FROM_OS_ERROR, the results are undefined.
  + Return the last platform error, folded into apr_status_t, on some platforms
  +<p><dl>
  +</dl></dl>
  +
  +<a name="apr_status_t-6"></a>
   <dl>
     <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_netos_error();</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> This retrieves errno, or calls a GetLastError() style function, and
  +     folds it with APR_FROM_OS_ERROR.  Some platforms (such as OS2) have no
  +     such mechanism, so this call may be unsupported.  Some platforms
  +     require the alternate apr_get_netos_error() to retrieve the last
  +     socket error.
  + Return the last socket error, folded into apr_status_t, on some platforms
  +<p><dl>
  +</dl></dl>
  +
  +<a name="char"></a>
  +<dl>
  +  <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize);</b>
     <dd>
  +Type for specifying an error or status code.
   Return a human readable string describing the specified error.
   <p><dl>
   
  @@ -53,12 +77,125 @@
   	bufsize</th><td>Size of the buffer to hold the string.</td></tr>
   </table>
     </dl></dl>
  +
  +<a name="int"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int APR_STATUS_IS_status(apr_status_t statcode);</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> Warning: macro implementation; the statcode argument may be evaluated
  +     multiple times.  If the statcode was not created by apr_get_os_error
  +     or APR_FROM_OS_ERROR, the results are undefined.  This macro sets
  +     errno, or calls a SetLastError() style function, unfolding statcode
  +     with APR_TO_OS_ERROR.  Some platforms (such as OS2) have no such
  +     mechanism, so this call may be unsupported.
  + APR_OS_START_ERROR is where the APR specific error values start.
  + APR_OS_START_STATUS is where the APR specific status codes start.
  + APR_OS_START_USEERR are reserved for applications that use APR that
  +    layer their own error codes along with APR's.
  + APR_OS_START_CANONERR is where APR versions of errno values are defined
  +    on systems which don't have the corresponding errno.
  + APR_OS_START_SYSERR folds platform-specific system error values into 
  +    apr_status_t values.
  + &lt;PRE&gt;
  +&lt;b&gt;APR ERROR VALUES&lt;/b&gt;
  +APR_ENOSTAT      APR was unable to perform a stat on the file 
  +APR_ENOPOOL      APR was not provided a pool with which to allocate memory
  +APR_EBADDATE     APR was given an invalid date 
  +APR_EINVALSOCK   APR was given an invalid socket
  +APR_ENOFILE      APR was not given a file structure
  +APR_ENOPROC      APR was not given a process structure
  +APR_ENOTIME      APR was not given a time structure
  +APR_ENODIR       APR was not given a directory structure
  +APR_ENOLOCK      APR was not given a lock structure
  +APR_ENOPOLL      APR was not given a poll structure
  +APR_ENOSOCKET    APR was not given a socket
  +APR_ENOTHREAD    APR was not given a thread structure
  +APR_ENOTHDKEY    APR was not given a thread key structure
  +APR_ENOSHMAVAIL  There is no more shared memory available
  +APR_EDSOOPEN     APR was unable to open the dso object.  For more 
  +                 information call apr_dso_error().
  +APR_EGENERAL     General failure (specific information not available)
  +&lt;/PRE&gt;
  +&lt;PRE&gt;
  +&lt;b&gt;APR STATUS VALUES&lt;/b&gt;
  +APR_INCHILD        Program is currently executing in the child
  +APR_INPARENT       Program is currently executing in the parent
  +APR_DETACH         The thread is detached
  +APR_NOTDETACH      The thread is not detached
  +APR_CHILD_DONE     The child has finished executing
  +APR_CHILD_NOTDONE  The child has not finished executing
  +APR_TIMEUP         The operation did not finish before the timeout
  +APR_INCOMPLETE     The character conversion stopped because of an 
  +                   incomplete character or shift sequence at the end 
  +                   of the input buffer.
  +APR_BADCH          Getopt found an option not in the option string
  +APR_BADARG         Getopt found an option that is missing an argument 
  +                   and and argument was specified in the option string
  +APR_EOF            APR has encountered the end of the file
  +APR_NOTFOUND       APR was unable to find the socket in the poll structure
  +APR_ANONYMOUS      APR is using anonymous shared memory
  +APR_FILEBASED      APR is using a file name as the key to the shared memory
  +APR_KEYBASED       APR is using a shared key as the key to the shared memory
  +APR_EINIT          Ininitalizer value.  If no option has been found, but 
  +                   the status variable requires a value, this should be used
  +APR_ENOTIMPL       The APR function has not been implemented on this 
  +                   platform, either because nobody has gotten to it yet, 
  +                   or the function is impossible on this platform.
  +APR_EMISMATCH      Two passwords do not match.
  +&lt;/PRE&gt;
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	status</th><td>The APR_status code to check.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	statcode</th><td>The apr status code to test.</td></tr>
  +</table>
  +  </dl></dl>
  +
  +<a name="os_err_type"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>os_err_type APR_TO_OS_ERROR(apr_status_t statcode);</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> Warning: macro implementation; the syserr argument may be evaluated
  +     multiple times.
  + Fold an apr_status_t code back to the native platform defined error.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	syserr</th><td>The apr_status_t folded platform os error code.</td></tr>
  +</table>
  +  </dl></dl>
  +
  +<a name="void"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_set_os_error(apr_status_t statcode);</b>
  +  <dd>
  +<p><img src="../images//tip.gif"> This retrieves errno, h_errno, or calls a GetLastSocketError() style
  +     function, and folds it with APR_FROM_OS_ERROR.  Some platforms (such
  +     as OS2) have no such mechanism, so this call may be unsupported.
  + Reset the last platform error, unfolded from an apr_status_t, on some platforms
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	statcode</th><td>The OS error folded in a prior call to APR_FROM_OS_ERROR()</td></tr>
  +</table>
  +  </dl></dl>
   </blockquote>
   
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +5 -5      apr-site/docs/Fnmatch_functions.html
  
  Index: Fnmatch_functions.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/Fnmatch_functions.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- Fnmatch_functions.html	2000/12/04 18:14:04	1.3
  +++ Fnmatch_functions.html	2001/02/11 02:54:58	1.4
  @@ -15,7 +15,7 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_status_t"></a>
  +<a name="apr_status_t-47"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_fnmatch(const char *pattern, const char *strings, int flags);</b>
  @@ -33,16 +33,16 @@
   </td></tr>
   <tr valign=top><th align=right>
   	flags</th><td>flags to use in the match.  Bitwise OR of:
  -<PRE>
  +&lt;PRE&gt;
                FNM_NOESCAPE       Disable backslash escaping
                FNM_PATHNAME       Slash must be matched by slash
                FNM_PERIOD         Period must be matched by period
                FNM_CASE_BLIND     Compare characters case-insensitively.
  -</PRE></td></tr>
  +&lt;/PRE&gt;</td></tr>
   </table>
     </dl></dl>
   
  -<a name="int-2"></a>
  +<a name="int-3"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_is_fnmatch(const char *pattern);</b>
  @@ -62,7 +62,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +1 -11     apr-site/docs/General.html
  
  Index: General.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/General.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- General.html	2000/12/04 18:14:04	1.3
  +++ General.html	2001/02/11 02:54:58	1.4
  @@ -53,22 +53,12 @@
   AP_DECLARE(), as they must use the C language calling convention.
   <p><dl>
   </dl></dl>
  -
  -<a name="apr_signal"></a>
  -<dl>
  -  <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>Sigfunc *apr_signal(int signo, Sigfunc * func);</b>
  -  <dd>
  -<p><img src="../images//tip.gif"> extern APR_DECLARE_DATA type apr_variable; syntax is required for
  -declarations within headers to properly import the variable.
  -<p><dl>
  -</dl></dl>
   </blockquote>
   
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +26 -8     apr-site/docs/Hash_Tables.html
  
  Index: Hash_Tables.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/Hash_Tables.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- Hash_Tables.html	2000/12/04 18:14:04	1.3
  +++ Hash_Tables.html	2001/02/11 02:54:58	1.4
  @@ -27,6 +27,8 @@
       <dl><dt>
   	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_hash_t ;</b>
   <dd>
  +<p><img src="../images//tip.gif"> extern APR_DECLARE_DATA type apr_variable; syntax is required for
  +declarations within headers to properly import the variable.
   Abstract type for hash tables.
   <p><dl>
   </dl></dl>
  @@ -41,7 +43,7 @@
     <dd>
   Start iterating over the entries in a hash table.
   <p><img src="../images//tip.gif"> Example:
  -<PRE><p>
  +&lt;PRE&gt;<p>
       int sum_values(apr_hash_t *ht)
       {
           apr_hash_index_t *hi;
  @@ -57,7 +59,7 @@
   iteration (although the results may be unpredictable unless all you do
   is delete the current entry) and multiple iterations can be in
   progress at the same time.
  -</PRE>
  +&lt;/PRE&gt;
   <p><dl>
   
     <dt><b>Parameters</b><dd>
  @@ -87,7 +89,7 @@
   <a name="apr_hash_t-2"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_hash_t *apr_make_hash(apr_pool_t *pool);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_hash_t *apr_hash_make(apr_pool_t *pool);</b>
     <dd>
   Create a hash table.
   <p><dl>
  @@ -100,7 +102,7 @@
     <dt><b>Return Value</b>
     <dd>The hash table just created<p></dl></dl>
   
  -<a name="void"></a>
  +<a name="void-3"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_hash_set(apr_hash_t *ht, const void *key, apr_size_t klen, const void *val);</b>
  @@ -125,7 +127,7 @@
   </table>
     </dl></dl>
   
  -<a name="void-2"></a>
  +<a name="void-4"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_hash_get(apr_hash_t *ht, const void *key, apr_size_t klen);</b>
  @@ -147,7 +149,7 @@
     <dt><b>Return Value</b>
     <dd>Returns NULL if the key is not present.<p></dl></dl>
   
  -<a name="void-3"></a>
  +<a name="void-5"></a>
   <dl>
     <dt>
      <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_hash_this(apr_hash_index_t *hi, const void **key, apr_size_t *klen, void **val);;</b>
  @@ -172,12 +174,28 @@
   	val</th><td>Return pointer for the associated value.</td></tr>
   </table>
     </dl></dl>
  +
  +<a name="void-6"></a>
  +<dl>
  +  <dt>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_hash_count(apr_hash_t *ht, apr_size_t *count);;</b>
  +  <dd>
  +Get the number of key/value pairs in the hash table.
  +<p><dl>
  +
  +  <dt><b>Parameters</b><dd>
  +	<table width="85%">
  +<tr valign=top><th align=right>
  +	ht</th><td>The hash table</td></tr>
  +</table>
  +  <dt><b>Return Value</b>
  +  <dd>The number of key/value pairs in the hash table.<p></dl></dl>
   </blockquote>
   
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +68 -68    apr-site/docs/Shared_Memory_library.html
  
  Index: Shared_Memory_library.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/Shared_Memory_library.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- Shared_Memory_library.html	2000/12/04 18:14:05	1.3
  +++ Shared_Memory_library.html	2001/02/11 02:54:58	1.4
  @@ -15,179 +15,179 @@
   <h2>Global Functions</h2>
     <blockquote>
   
  -<a name="apr_get_shm_name"></a>
  +<a name="apr_status_t-129"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_shm_name(apr_shmem_t *c, apr_shm_name_t **name);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_init(apr_shmem_t **m, apr_size_t reqsize, const char *file, apr_pool_t *cont);</b>
     <dd>
  -Get the name of the shared memory segment if not using anonymous 
  -shared memory.
  +Create a pool of shared memory for use later.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	c</th><td>The shared memory block to destroy.
  +	m</th><td>The shared memory block.
   </td></tr>
   <tr valign=top><th align=right>
  -	name</th><td>The name of the shared memory block, NULL if anonymous 
  -             shared memory.</td></tr>
  +	reqsize</th><td>The size of the shared memory pool.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	file</th><td>The file to use for the shared memory on platforms 
  +       that require it.
  +</td></tr>
  +<tr valign=top><th align=right>
  +	cont</th><td>The pool to use</td></tr>
   </table>
  -  <dt><b>Return Value</b>
  -  <dd>APR_USES_ANONYMOUS_SHM if we are using anonymous shared
  -        memory.  APR_USES_FILEBASED_SHM if our shared memory is
  -        based on file access.  APR_USES_KEYBASED_SHM if shared
  -        memory is based on a key value such as shmctl.  If the
  -        shared memory is anonymous, the name is NULL.<p></dl></dl>
  +  </dl></dl>
   
  -<a name="apr_open_shmem"></a>
  +<a name="apr_status_t-130"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_open_shmem(apr_shmem_t *c);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_destroy(apr_shmem_t *m);</b>
     <dd>
  -Open the shared memory block in a child process.
  +Destroy the shared memory block.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	The</th><td>shared memory block to open in the child.</td></tr>
  +	m</th><td>The shared memory block to destroy.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_set_shm_name"></a>
  +<a name="apr_status_t-131"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_shm_name(apr_shmem_t *c, apr_shm_name_t *name);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_free(apr_shmem_t *shared, void *entity);</b>
     <dd>
  -Set the name of the shared memory segment if not using anonymous 
  -shared memory.  This is to allow processes to open shared memory 
  -created by another process.
  +free shared memory previously allocated.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	c</th><td>The shared memory block to destroy.
  +	shared</th><td>The shared memory block to destroy.
   </td></tr>
   <tr valign=top><th align=right>
  -	name</th><td>The name of the shared memory block, NULL if anonymous 
  -            shared memory.</td></tr>
  +	entity</th><td>The actual data to free.</td></tr>
   </table>
  -  <dt><b>Return Value</b>
  -  <dd>APR_USES_ANONYMOUS_SHM if we are using anonymous shared
  -        memory.  APR_SUCCESS if we are using named shared memory
  -        and we were able to assign the name correctly.<p></dl></dl>
  +  </dl></dl>
   
  -<a name="apr_shm_avail"></a>
  +<a name="apr_status_t-132"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_avail(apr_shmem_t *c, apr_size_t *avail);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_name_get(apr_shmem_t *c, apr_shm_name_t **name);</b>
     <dd>
  -Determine how much memory is available in the specified shared memory block
  +Get the name of the shared memory segment if not using anonymous 
  +shared memory.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	c</th><td>The shared memory block to open in the child.
  +	c</th><td>The shared memory block to destroy.
   </td></tr>
   <tr valign=top><th align=right>
  -	avail</th><td>The amount of space available in the shared memory block.</td></tr>
  +	name</th><td>The name of the shared memory block, NULL if anonymous 
  +             shared memory.</td></tr>
   </table>
  -  </dl></dl>
  +  <dt><b>Return Value</b>
  +  <dd>APR_USES_ANONYMOUS_SHM if we are using anonymous shared
  +        memory.  APR_USES_FILEBASED_SHM if our shared memory is
  +        based on file access.  APR_USES_KEYBASED_SHM if shared
  +        memory is based on a key value such as shmctl.  If the
  +        shared memory is anonymous, the name is NULL.<p></dl></dl>
   
  -<a name="apr_shm_calloc"></a>
  +<a name="apr_status_t-133"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_shm_calloc(apr_shmem_t *shared, apr_size_t size);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_name_set(apr_shmem_t *c, apr_shm_name_t *name);</b>
     <dd>
  -allocate memory from the block of shared memory and initialize it to zero.
  +Set the name of the shared memory segment if not using anonymous 
  +shared memory.  This is to allow processes to open shared memory 
  +created by another process.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	shared</th><td>The shared memory block to destroy.
  +	c</th><td>The shared memory block to destroy.
   </td></tr>
   <tr valign=top><th align=right>
  -	size</th><td>How much memory to allocate</td></tr>
  +	name</th><td>The name of the shared memory block, NULL if anonymous 
  +            shared memory.</td></tr>
   </table>
  -  </dl></dl>
  +  <dt><b>Return Value</b>
  +  <dd>APR_USES_ANONYMOUS_SHM if we are using anonymous shared
  +        memory.  APR_SUCCESS if we are using named shared memory
  +        and we were able to assign the name correctly.<p></dl></dl>
   
  -<a name="apr_shm_destroy"></a>
  +<a name="apr_status_t-134"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_destroy(apr_shmem_t *m);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_open(apr_shmem_t *c);</b>
     <dd>
  -Destroy the shared memory block.
  +Open the shared memory block in a child process.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	m</th><td>The shared memory block to destroy.</td></tr>
  +	The</th><td>shared memory block to open in the child.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_shm_free"></a>
  +<a name="apr_status_t-135"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_free(apr_shmem_t *shared, void *entity);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_avail(apr_shmem_t *c, apr_size_t *avail);</b>
     <dd>
  -free shared memory previously allocated.
  +Determine how much memory is available in the specified shared memory block
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	shared</th><td>The shared memory block to destroy.
  +	c</th><td>The shared memory block to open in the child.
   </td></tr>
   <tr valign=top><th align=right>
  -	entity</th><td>The actual data to free.</td></tr>
  +	avail</th><td>The amount of space available in the shared memory block.</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_shm_init"></a>
  +<a name="void-15"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_init(apr_shmem_t **m, apr_size_t reqsize, const char *file, apr_pool_t *cont);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_shm_malloc(apr_shmem_t *c, apr_size_t reqsize);</b>
     <dd>
  -Create a pool of shared memory for use later.
  +allocate memory from the block of shared memory.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
  -<tr valign=top><th align=right>
  -	m</th><td>The shared memory block.
  -</td></tr>
  -<tr valign=top><th align=right>
  -	reqsize</th><td>The size of the shared memory pool.
  -</td></tr>
   <tr valign=top><th align=right>
  -	file</th><td>The file to use for the shared memory on platforms 
  -       that require it.
  +	c</th><td>The shared memory block to destroy.
   </td></tr>
   <tr valign=top><th align=right>
  -	cont</th><td>The pool to use</td></tr>
  +	reqsize</th><td>How much memory to allocate</td></tr>
   </table>
     </dl></dl>
   
  -<a name="apr_shm_malloc"></a>
  +<a name="void-16"></a>
   <dl>
     <dt>
  -   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_shm_malloc(apr_shmem_t *c, apr_size_t reqsize);</b>
  +   <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_shm_calloc(apr_shmem_t *shared, apr_size_t size);</b>
     <dd>
  -allocate memory from the block of shared memory.
  +allocate memory from the block of shared memory and initialize it to zero.
   <p><dl>
   
     <dt><b>Parameters</b><dd>
   	<table width="85%">
   <tr valign=top><th align=right>
  -	c</th><td>The shared memory block to destroy.
  +	shared</th><td>The shared memory block to destroy.
   </td></tr>
   <tr valign=top><th align=right>
  -	reqsize</th><td>How much memory to allocate</td></tr>
  +	size</th><td>How much memory to allocate</td></tr>
   </table>
     </dl></dl>
   </blockquote>
  @@ -195,7 +195,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +284 -276  apr-site/docs/master.html
  
  Index: master.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/master.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- master.html	2000/12/04 18:14:05	1.3
  +++ master.html	2001/02/11 02:54:59	1.4
  @@ -15,359 +15,367 @@
   <li><a href="General.html#APR_DECLARE(rettype)" target="Documentation">APR_DECLARE(rettype) apr_func(args);</a>
   <li><a href="General.html#APR_DECLARE_DATA" target="Documentation">APR_DECLARE_DATA type apr_variable;</a>
   <li><a href="General.html#APR_DECLARE_NONSTD(rettype)" target="Documentation">APR_DECLARE_NONSTD(rettype) apr_func(args, ...);</a>
  -<li><a href="General.html#apr_signal" target="Documentation">Sigfunc *apr_signal(int signo, Sigfunc * func)</a>
   </dir><a href="APR_File_handling.html" target="Documentation"><b>APR File handling</b></a><br>
     <dir>
   <li><a href="APR_File_handling.html#apr_finfo_t" target="Documentation">struct apr_finfo_t</a>
  -<li><a href="APR_File_handling.html#apr_canon_t" target="Documentation">apr_canon_t </a>
  -<li><a href="APR_File_handling.html#apr_close" target="Documentation">apr_status_t apr_close(apr_file_t *file)</a>
  -<li><a href="APR_File_handling.html#apr_closedir" target="Documentation">apr_status_t apr_closedir(apr_dir_t *thedir)</a>
  -<li><a href="APR_File_handling.html#apr_count_canonical_elements" target="Documentation">int apr_count_canonical_elements(const apr_canon_t *trusted_name)</a>
  -<li><a href="APR_File_handling.html#apr_create_namedpipe" target="Documentation">apr_status_t apr_create_namedpipe(const char *filename, apr_fileperms_t perm, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_create_pipe" target="Documentation">apr_status_t apr_create_pipe(apr_file_t **in, apr_file_t **out, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_finfo_t-apr_file_t" target="Documentation">struct apr_file_t</a>
  +<li><a href="APR_File_handling.html#" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_File_handling.html#-2" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_File_handling.html#-3" target="Documentation">(apr_status_t)</a>
   <li><a href="APR_File_handling.html#apr_dev_t" target="Documentation">apr_dev_t </a>
  -<li><a href="APR_File_handling.html#apr_dir_entry_ftype" target="Documentation">apr_status_t apr_dir_entry_ftype(apr_filetype_e *type, apr_dir_t *thedir)</a>
  -<li><a href="APR_File_handling.html#apr_dir_entry_mtime" target="Documentation">apr_status_t apr_dir_entry_mtime(apr_time_t *mtime, apr_dir_t *thedir)</a>
  -<li><a href="APR_File_handling.html#apr_dir_entry_size" target="Documentation">apr_status_t apr_dir_entry_size(apr_size_t *size, apr_dir_t *thedir)</a>
   <li><a href="APR_File_handling.html#apr_dir_t" target="Documentation">apr_dir_t </a>
  -<li><a href="APR_File_handling.html#apr_dupfile" target="Documentation">apr_status_t apr_dupfile(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)</a>
  -<li><a href="APR_File_handling.html#apr_eof" target="Documentation">apr_status_t apr_eof(apr_file_t *fptr)</a>
  -<li><a href="APR_File_handling.html#apr_ferror" target="Documentation">apr_status_t apr_ferror(apr_file_t *fptr)</a>
  -<li><a href="APR_File_handling.html#apr_fgets" target="Documentation">apr_status_t apr_fgets(char *str, int len, apr_file_t *thefile)</a>
   <li><a href="APR_File_handling.html#apr_file_t" target="Documentation">apr_file_t </a>
   <li><a href="APR_File_handling.html#apr_fileperms_t" target="Documentation">apr_fileperms_t </a>
  -<li><a href="APR_File_handling.html#apr_flush" target="Documentation">apr_status_t apr_flush(apr_file_t *thefile)</a>
  -<li><a href="APR_File_handling.html#apr_full_read" target="Documentation">apr_status_t apr_full_read(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read)</a>
  -<li><a href="APR_File_handling.html#apr_full_write" target="Documentation">apr_status_t apr_full_write(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written)</a>
  -<li><a href="APR_File_handling.html#apr_get_canonical_elements" target="Documentation">apr_status_t apr_get_canonical_elements(char **path_elements, const apr_canon_t *trusted_name, int firstelement, int lastelement, apr_pool_t *pool)</a>
  -<li><a href="APR_File_handling.html#apr_get_canonical_elements_length" target="Documentation">int apr_get_canonical_elements_length(const apr_canon_t *trusted_name, int firstelement, int lastelement)</a>
  -<li><a href="APR_File_handling.html#apr_get_canonical_name" target="Documentation">apr_status_t apr_get_canonical_name(char **path, const apr_canon_t *trusted_name, apr_pool_t *pool)</a>
  -<li><a href="APR_File_handling.html#apr_get_dir_filename" target="Documentation">apr_status_t apr_get_dir_filename(char **new_path, apr_dir_t *thedir)</a>
  -<li><a href="APR_File_handling.html#apr_get_filedata" target="Documentation">apr_status_t apr_get_filedata(void **data, const char *key, apr_file_t *file)</a>
  -<li><a href="APR_File_handling.html#apr_get_filename" target="Documentation">apr_status_t apr_get_filename(char **new_path, apr_file_t *thefile)</a>
  -<li><a href="APR_File_handling.html#apr_get_pipe_timeout" target="Documentation">apr_status_t apr_get_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t *timeout)</a>
  -<li><a href="APR_File_handling.html#apr_getc" target="Documentation">apr_status_t apr_getc(char *ch, apr_file_t *thefile)</a>
  -<li><a href="APR_File_handling.html#apr_getfileinfo" target="Documentation">apr_status_t apr_getfileinfo(apr_finfo_t *finfo, apr_file_t *thefile)</a>
  -<li><a href="APR_File_handling.html#apr_gid_t" target="Documentation">apr_gid_t </a>
   <li><a href="APR_File_handling.html#apr_ino_t" target="Documentation">apr_ino_t </a>
  -<li><a href="APR_File_handling.html#apr_is_absolute" target="Documentation">apr_status_t apr_is_absolute(apr_canon_t **path)</a>
  -<li><a href="APR_File_handling.html#apr_is_relative" target="Documentation">apr_status_t apr_is_relative(apr_canon_t **path)</a>
  -<li><a href="APR_File_handling.html#apr_is_virtualroot" target="Documentation">apr_status_t apr_is_virtualroot(apr_canon_t **path, int elements)</a>
  -<li><a href="APR_File_handling.html#apr_lock_file" target="Documentation">apr_status_t apr_lock_file(apr_file_t *thefile, int type)</a>
  -<li><a href="APR_File_handling.html#apr_lstat" target="Documentation">apr_status_t apr_lstat(apr_finfo_t *finfo, const char *fname, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_make_canonical_name" target="Documentation">apr_status_t apr_make_canonical_name(apr_canon_t **new_name, const apr_canon_t *trusted_name, const char *child_name, int options, apr_pool_t *pool)</a>
  -<li><a href="APR_File_handling.html#apr_make_dir" target="Documentation">apr_status_t apr_make_dir(const char *path, apr_fileperms_t perm, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_merge_canonical_name" target="Documentation">apr_status_t apr_merge_canonical_name(apr_canon_t **new_name, const apr_canon_t *trusted_name, const apr_canon_t *child_name, int options, apr_pool_t *pool)</a>
  -<li><a href="APR_File_handling.html#apr_open" target="Documentation">apr_status_t apr_open(apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_open_stderr" target="Documentation">apr_status_t apr_open_stderr(apr_file_t **thefile, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_opendir" target="Documentation">apr_status_t apr_opendir(apr_dir_t **new_dir, const char *dirname, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_putc" target="Documentation">apr_status_t apr_putc(char ch, apr_file_t *thefile)</a>
  -<li><a href="APR_File_handling.html#apr_puts" target="Documentation">apr_status_t apr_puts(const char *str, apr_file_t *thefile)</a>
  -<li><a href="APR_File_handling.html#apr_read" target="Documentation">apr_status_t apr_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes)</a>
  -<li><a href="APR_File_handling.html#apr_readdir" target="Documentation">apr_status_t apr_readdir(apr_dir_t *thedir)</a>
  -<li><a href="APR_File_handling.html#apr_remove_dir" target="Documentation">apr_status_t apr_remove_dir(const char *path, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_remove_file" target="Documentation">apr_status_t apr_remove_file(const char *path, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_rename_file" target="Documentation">apr_status_t apr_rename_file(const char *from_path, const char *to_path, apr_pool_t *pool)</a>
  -<li><a href="APR_File_handling.html#apr_rewinddir" target="Documentation">apr_status_t apr_rewinddir(apr_dir_t *thedir)</a>
  -<li><a href="APR_File_handling.html#apr_seek" target="Documentation">apr_status_t apr_seek(apr_file_t *thefile, apr_seek_where_t where,apr_off_t *offset)</a>
  -<li><a href="APR_File_handling.html#apr_set_filedata" target="Documentation">apr_status_t apr_set_filedata(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup) (void *))</a>
  -<li><a href="APR_File_handling.html#apr_set_pipe_timeout" target="Documentation">apr_status_t apr_set_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t timeout)</a>
  -<li><a href="APR_File_handling.html#apr_setfileperms" target="Documentation">apr_status_t apr_setfileperms(const char *fname, apr_fileperms_t perms)</a>
  -<li><a href="APR_File_handling.html#apr_stat" target="Documentation">apr_status_t apr_stat(apr_finfo_t *finfo, const char *fname, apr_pool_t *cont)</a>
  -<li><a href="APR_File_handling.html#apr_uid_t" target="Documentation">apr_uid_t </a>
  -<li><a href="APR_File_handling.html#apr_ungetc" target="Documentation">apr_status_t apr_ungetc(char ch, apr_file_t *thefile)</a>
  -<li><a href="APR_File_handling.html#apr_unlock_file" target="Documentation">apr_status_t apr_unlock_file(apr_file_t *thefile)</a>
  -<li><a href="APR_File_handling.html#apr_write" target="Documentation">apr_status_t apr_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)</a>
  -<li><a href="APR_File_handling.html#apr_writev" target="Documentation">apr_status_t apr_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes)</a>
  -<li><a href="APR_File_handling.html#int" target="Documentation">int apr_fprintf(apr_file_t *fptr, const char *format, ...)</a>
  -<li><a href="APR_File_handling.html#time" target="Documentation">                                           or thread can hold a shared lock
  -                                           at any given time</a>
  +<li><a href="APR_File_handling.html#apr_pool_t" target="Documentation">apr_pool_t apr_file_pool_get(apr_file_t *f)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-10" target="Documentation">apr_status_t apr_dir_close(apr_dir_t *thedir)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-11" target="Documentation">apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, apr_dir_t *thedir)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-12" target="Documentation">apr_status_t apr_dir_rewind(apr_dir_t *thedir)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-13" target="Documentation">apr_status_t apr_file_open(apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-14" target="Documentation">apr_status_t apr_file_close(apr_file_t *file)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-15" target="Documentation">apr_status_t apr_file_remove(const char *path, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-16" target="Documentation">apr_status_t apr_file_rename(const char *from_path, const char *to_path, apr_pool_t *pool)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-17" target="Documentation">apr_status_t apr_file_eof(apr_file_t *fptr)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-18" target="Documentation">apr_status_t apr_file_error(apr_file_t *fptr)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-19" target="Documentation">apr_status_t apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-20" target="Documentation">apr_status_t apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-21" target="Documentation">apr_status_t apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-22" target="Documentation">apr_status_t apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-23" target="Documentation">apr_status_t apr_file_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-24" target="Documentation">apr_status_t apr_file_read_file(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-25" target="Documentation">apr_status_t apr_file_write_full(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-26" target="Documentation">apr_status_t apr_file_putc(char ch, apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-27" target="Documentation">apr_status_t apr_file_getc(char *ch, apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-28" target="Documentation">apr_status_t apr_file_ungetc(char ch, apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-29" target="Documentation">apr_status_t apr_file_gets(char *str, int len, apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-30" target="Documentation">apr_status_t apr_file_puts(const char *str, apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-31" target="Documentation">apr_status_t apr_file_flush(apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-32" target="Documentation">apr_status_t apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-33" target="Documentation">apr_status_t apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-34" target="Documentation">apr_status_t apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-35" target="Documentation">apr_status_t apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-36" target="Documentation">apr_status_t apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-37" target="Documentation">apr_status_t apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-38" target="Documentation">apr_status_t apr_file_lock(apr_file_t *thefile, int type)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-39" target="Documentation">apr_status_t apr_file_unlock(apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-40" target="Documentation">apr_status_t apr_file_name_get(const char **new_path, apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-41" target="Documentation">apr_status_t apr_file_data_get(void **data, const char *key, apr_file_t *file)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-42" target="Documentation">apr_status_t apr_file_data_set(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup)(void *))</a>
  +<li><a href="APR_File_handling.html#apr_status_t-43" target="Documentation">apr_status_t apr_file_perms_set(const char *fname, apr_fileperms_t perms)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-44" target="Documentation">apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-45" target="Documentation">apr_status_t apr_dir_remove(const char *path, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-46" target="Documentation">apr_status_t apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *thefile)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-7" target="Documentation">apr_status_t apr_stat(apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-8" target="Documentation">apr_status_t apr_lstat(apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#apr_status_t-9" target="Documentation">apr_status_t apr_dir_open(apr_dir_t **new_dir, const char *dirname, apr_pool_t *cont)</a>
  +<li><a href="APR_File_handling.html#int-2" target="Documentation">int apr_file_printf(apr_file_t *fptr, const char *format, ...)</a>
   </dir><a href="APR_I18N_translation_library.html" target="Documentation"><b>APR I18N translation library</b></a><br>
     <dir>
  -<li><a href="APR_I18N_translation_library.html#apr_xlate_close" target="Documentation">apr_status_t apr_xlate_close(apr_xlate_t *convset)</a>
  -<li><a href="APR_I18N_translation_library.html#apr_xlate_conv_buffer" target="Documentation">apr_status_t apr_xlate_conv_buffer(apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left)</a>
  -<li><a href="APR_I18N_translation_library.html#apr_xlate_conv_byte" target="Documentation">apr_int32_t apr_xlate_conv_byte(apr_xlate_t *convset, unsigned char inchar)</a>
  -<li><a href="APR_I18N_translation_library.html#apr_xlate_conv_char" target="Documentation">apr_status_t apr_xlate_conv_char(apr_xlate_t *convset, char inchar, char outchar)</a>
  -<li><a href="APR_I18N_translation_library.html#apr_xlate_get_sb" target="Documentation">apr_status_t apr_xlate_get_sb(apr_xlate_t *convset, int *onoff)</a>
  -<li><a href="APR_I18N_translation_library.html#apr_xlate_open" target="Documentation">apr_status_t apr_xlate_open(apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool)</a>
  +<li><a href="APR_I18N_translation_library.html#-22" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_I18N_translation_library.html#-23" target="Documentation">(apr_int32_t)</a>
  +<li><a href="APR_I18N_translation_library.html#apr_int32_t" target="Documentation">apr_int32_t apr_xlate_conv_byte(apr_xlate_t *convset, unsigned char inchar)</a>
  +<li><a href="APR_I18N_translation_library.html#apr_status_t-175" target="Documentation">apr_status_t apr_xlate_open(apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool)</a>
  +<li><a href="APR_I18N_translation_library.html#apr_status_t-176" target="Documentation">apr_status_t apr_xlate_get_sb(apr_xlate_t *convset, int *onoff)</a>
  +<li><a href="APR_I18N_translation_library.html#apr_status_t-177" target="Documentation">apr_status_t apr_xlate_conv_buffer(apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left)</a>
  +<li><a href="APR_I18N_translation_library.html#apr_status_t-178" target="Documentation">apr_status_t apr_xlate_conv_char(apr_xlate_t *convset, char inchar, char outchar)</a>
  +<li><a href="APR_I18N_translation_library.html#apr_status_t-179" target="Documentation">apr_status_t apr_xlate_close(apr_xlate_t *convset)</a>
   </dir><a href="APR_MD5_Library.html" target="Documentation"><b>APR MD5 Library</b></a><br>
     <dir>
   <li><a href="APR_MD5_Library.html#apr_md5_ctx_t" target="Documentation">struct apr_md5_ctx_t</a>
  -<li><a href="APR_MD5_Library.html#apr_status_t-10" target="Documentation">apr_status_t apr_MD5Final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context)</a>
  -<li><a href="APR_MD5_Library.html#apr_status_t-11" target="Documentation">apr_status_t apr_MD5Encode(const char *password, const char *salt, char *result, size_t nbytes)</a>
  -<li><a href="APR_MD5_Library.html#apr_status_t-7" target="Documentation">apr_status_t apr_MD5Init(apr_md5_ctx_t *context)</a>
  -<li><a href="APR_MD5_Library.html#apr_status_t-8" target="Documentation">apr_status_t apr_MD5SetXlate(apr_md5_ctx_t *context, apr_xlate_t *xlate)</a>
  -<li><a href="APR_MD5_Library.html#apr_status_t-9" target="Documentation">apr_status_t apr_MD5Update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen)</a>
  +<li><a href="APR_MD5_Library.html#apr_status_t-63" target="Documentation">apr_status_t apr_md5_init(apr_md5_ctx_t *context)</a>
  +<li><a href="APR_MD5_Library.html#apr_status_t-64" target="Documentation">apr_status_t apr_md5_set_xlate(apr_md5_ctx_t *context, apr_xlate_t *xlate)</a>
  +<li><a href="APR_MD5_Library.html#apr_status_t-65" target="Documentation">apr_status_t apr_md5_update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen)</a>
  +<li><a href="APR_MD5_Library.html#apr_status_t-66" target="Documentation">apr_status_t apr_md5_final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context)</a>
  +<li><a href="APR_MD5_Library.html#apr_status_t-67" target="Documentation">apr_status_t apr_md5_encode(const char *password, const char *salt, char *result, size_t nbytes)</a>
   </dir><a href="APR_MMAP_library.html" target="Documentation"><b>APR MMAP library</b></a><br>
     <dir>
   <li><a href="APR_MMAP_library.html#apr_mmap_t" target="Documentation">struct apr_mmap_t</a>
  -<li><a href="APR_MMAP_library.html#apr_mmap_create" target="Documentation">apr_status_t apr_mmap_create(apr_mmap_t ** newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_pool_t *cntxt)</a>
  -<li><a href="APR_MMAP_library.html#apr_mmap_delete" target="Documentation">apr_status_t apr_mmap_delete(apr_mmap_t *mmap)</a>
  -<li><a href="APR_MMAP_library.html#apr_mmap_offset" target="Documentation">apr_status_t apr_mmap_offset(void **addr, apr_mmap_t *mmap, apr_off_t offset)</a>
  +<li><a href="APR_MMAP_library.html#apr_status_t-68" target="Documentation">apr_status_t apr_mmap_create(apr_mmap_t **newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_int32_t flag, apr_pool_t *cntxt)</a>
  +<li><a href="APR_MMAP_library.html#apr_status_t-69" target="Documentation">apr_status_t apr_mmap_delete(apr_mmap_t *mmap)</a>
  +<li><a href="APR_MMAP_library.html#apr_status_t-70" target="Documentation">apr_status_t apr_mmap_offset(void **addr, apr_mmap_t *mmap, apr_off_t offset)</a>
   </dir><a href="APR_Network_library.html" target="Documentation"><b>APR Network library</b></a><br>
     <dir>
   <li><a href="APR_Network_library.html#apr_hdtr_t" target="Documentation">struct apr_hdtr_t</a>
   <li><a href="APR_Network_library.html#apr_sockaddr_t" target="Documentation">struct apr_sockaddr_t</a>
  -<li><a href="APR_Network_library.html#apr_accept" target="Documentation">apr_status_t apr_accept(apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool)</a>
  -<li><a href="APR_Network_library.html#apr_add_poll_socket" target="Documentation">apr_status_t apr_add_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t event)</a>
  -<li><a href="APR_Network_library.html#apr_bind" target="Documentation">apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa)</a>
  -<li><a href="APR_Network_library.html#apr_clear_poll_sockets" target="Documentation">apr_status_t apr_clear_poll_sockets(apr_pollfd_t *aprset, apr_int16_t events)</a>
  -<li><a href="APR_Network_library.html#apr_close_socket" target="Documentation">apr_status_t apr_close_socket(apr_socket_t *thesocket)</a>
  -<li><a href="APR_Network_library.html#apr_connect" target="Documentation">apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa)</a>
  -<li><a href="APR_Network_library.html#apr_create_socket" target="Documentation">apr_status_t apr_create_socket(apr_socket_t **new_sock, int family, int type, apr_pool_t *cont)</a>
  -<li><a href="APR_Network_library.html#apr_get_hostname" target="Documentation">apr_status_t apr_get_hostname(char **name, apr_interface_e which, apr_socket_t *sock)</a>
  -<li><a href="APR_Network_library.html#apr_get_inaddr" target="Documentation">apr_status_t apr_get_inaddr(apr_in_addr_t *addr, char *hostname)</a>
  -<li><a href="APR_Network_library.html#apr_get_ipaddr" target="Documentation">apr_status_t apr_get_ipaddr(char **addr, apr_sockaddr_t *sockaddr)</a>
  -<li><a href="APR_Network_library.html#apr_get_polldata" target="Documentation">apr_status_t apr_get_polldata(apr_pollfd_t *pollfd, const char *key, void *data)</a>
  -<li><a href="APR_Network_library.html#apr_get_port" target="Documentation">apr_status_t apr_get_port(apr_port_t *port, apr_sockaddr_t *sockaddr)</a>
  -<li><a href="APR_Network_library.html#apr_get_revents" target="Documentation">apr_status_t apr_get_revents(apr_int16_t *event, apr_socket_t *sock, apr_pollfd_t *aprset)</a>
  -<li><a href="APR_Network_library.html#apr_get_sockaddr" target="Documentation">apr_status_t apr_get_sockaddr(apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock)</a>
  -<li><a href="APR_Network_library.html#apr_get_socketdata" target="Documentation">apr_status_t apr_get_socketdata(void **data, const char *key, apr_socket_t *sock)</a>
  -<li><a href="APR_Network_library.html#apr_getaddrinfo" target="Documentation">apr_status_t apr_getaddrinfo(apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p)</a>
  -<li><a href="APR_Network_library.html#apr_gethostname" target="Documentation">apr_status_t apr_gethostname(char *buf, int len, apr_pool_t *cont)</a>
  -<li><a href="APR_Network_library.html#apr_getservbyname" target="Documentation">apr_status_t apr_getservbyname(apr_sockaddr_t *sockaddr, const char *servname)</a>
  -<li><a href="APR_Network_library.html#apr_getsocketopt" target="Documentation">apr_status_t apr_getsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t* on)</a>
  -<li><a href="APR_Network_library.html#apr_listen" target="Documentation">apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog)</a>
  -<li><a href="APR_Network_library.html#apr_mask_poll_socket" target="Documentation">apr_status_t apr_mask_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t events)</a>
  -<li><a href="APR_Network_library.html#apr_poll" target="Documentation">apr_status_t apr_poll(apr_pollfd_t *aprset, apr_int32_t *nsds, apr_interval_time_t timeout)</a>
  -<li><a href="APR_Network_library.html#apr_recv" target="Documentation">apr_status_t apr_recv(apr_socket_t *sock, char *buf, apr_size_t *len)</a>
  -<li><a href="APR_Network_library.html#apr_remove_poll_socket" target="Documentation">apr_status_t apr_remove_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock)</a>
  -<li><a href="APR_Network_library.html#apr_send" target="Documentation">apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len)</a>
  -<li><a href="APR_Network_library.html#apr_sendfile" target="Documentation">apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags)</a>
  -<li><a href="APR_Network_library.html#apr_sendv" target="Documentation">apr_status_t apr_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len)</a>
  -<li><a href="APR_Network_library.html#apr_set_ipaddr" target="Documentation">apr_status_t apr_set_ipaddr(apr_sockaddr_t *sockaddr, const char *addr)</a>
  -<li><a href="APR_Network_library.html#apr_set_polldata" target="Documentation">apr_status_t apr_set_polldata(apr_pollfd_t *pollfd, void *data, const char *key, apr_status_t (*cleanup) (void *))</a>
  -<li><a href="APR_Network_library.html#apr_set_port" target="Documentation">apr_status_t apr_set_port(apr_sockaddr_t *sockaddr, apr_port_t port)</a>
  -<li><a href="APR_Network_library.html#apr_set_socketdata" target="Documentation">apr_status_t apr_set_socketdata(apr_socket_t *sock, void *data, const char *key, apr_status_t (*cleanup) (void*))</a>
  -<li><a href="APR_Network_library.html#apr_setsocketopt" target="Documentation">apr_status_t apr_setsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)</a>
  -<li><a href="APR_Network_library.html#apr_setup_poll" target="Documentation">apr_status_t apr_setup_poll(apr_pollfd_t **new_poll, apr_int32_t num, apr_pool_t *cont)</a>
  -<li><a href="APR_Network_library.html#apr_shutdown" target="Documentation">apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how)</a>
  -<li><a href="APR_Network_library.html#apr_socket_from_file" target="Documentation">apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file)</a>
  +<li><a href="APR_Network_library.html#-10" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Network_library.html#-5" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Network_library.html#-6" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Network_library.html#-7" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Network_library.html#-8" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Network_library.html#-9" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-100" target="Documentation">apr_status_t apr_poll_socket_clear(apr_pollfd_t *aprset, apr_int16_t events)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-101" target="Documentation">apr_status_t apr_poll_revents_get(apr_int16_t *event, apr_socket_t *sock, apr_pollfd_t *aprset)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-102" target="Documentation">apr_status_t apr_poll_data_get(apr_pollfd_t *pollfd, const char *key, void *data)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-103" target="Documentation">apr_status_t apr_poll_data_set(apr_pollfd_t *pollfd, void *data, const char *key, apr_status_t (*cleanup)(void *))</a>
  +<li><a href="APR_Network_library.html#apr_status_t-104" target="Documentation">apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-105" target="Documentation">apr_status_t apr_getservbyname(apr_sockaddr_t *sockaddr, const char *servname)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-71" target="Documentation">apr_status_t apr_socket_create(apr_socket_t **new_sock, int family, int type, apr_pool_t *cont)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-72" target="Documentation">apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-73" target="Documentation">apr_status_t apr_socket_close(apr_socket_t *thesocket)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-74" target="Documentation">apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-75" target="Documentation">apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-76" target="Documentation">apr_status_t apr_accept(apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-77" target="Documentation">apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-78" target="Documentation">apr_status_t apr_sockaddr_info_get(apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-79" target="Documentation">apr_status_t apr_getnameinfo(char **hostname, apr_sockaddr_t *sa, apr_int32_t flags)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-80" target="Documentation">apr_status_t apr_parse_addr_port(char **addr, char **scope_id, apr_port_t *port, const char *str, apr_pool_t *p)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-81" target="Documentation">apr_status_t apr_gethostname(char *buf, int len, apr_pool_t *cont)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-82" target="Documentation">apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-83" target="Documentation">apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key, apr_status_t (*cleanup)(void*))</a>
  +<li><a href="APR_Network_library.html#apr_status_t-84" target="Documentation">apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-85" target="Documentation">apr_status_t apr_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-86" target="Documentation">apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-87" target="Documentation">apr_status_t apr_recv(apr_socket_t *sock, char *buf, apr_size_t *len)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-88" target="Documentation">apr_status_t apr_setsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-89" target="Documentation">apr_status_t apr_getsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-90" target="Documentation">apr_status_t apr_socket_addr_get(apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-91" target="Documentation">apr_status_t apr_sockaddr_port_set(apr_sockaddr_t *sockaddr, apr_port_t port)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-92" target="Documentation">apr_status_t apr_sockaddr_port_get(apr_port_t *port, apr_sockaddr_t *sockaddr)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-93" target="Documentation">apr_status_t apr_sockaddr_ip_set(apr_sockaddr_t *sockaddr, const char *addr)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-94" target="Documentation">apr_status_t apr_sockaddr_ip_get(char **addr, apr_sockaddr_t *sockaddr)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-95" target="Documentation">apr_status_t apr_poll_setup(apr_pollfd_t **new_poll, apr_int32_t num, apr_pool_t *cont)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-96" target="Documentation">apr_status_t apr_poll(apr_pollfd_t *aprset, apr_int32_t *nsds, apr_interval_time_t timeout)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-97" target="Documentation">apr_status_t apr_poll_socket_add(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t event)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-98" target="Documentation">apr_status_t apr_poll_socket_mask(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t events)</a>
  +<li><a href="APR_Network_library.html#apr_status_t-99" target="Documentation">apr_status_t apr_poll_socket_remove(apr_pollfd_t *aprset, apr_socket_t *sock)</a>
   </dir><a href="APR_Process_library.html" target="Documentation"><b>APR Process library</b></a><br>
     <dir>
  -<li><a href="APR_Process_library.html#apr_check_other_child" target="Documentation">void apr_check_other_child(void)</a>
  -<li><a href="APR_Process_library.html#apr_create_process" target="Documentation">apr_status_t apr_create_process(apr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, apr_procattr_t *attr, apr_pool_t *cont)</a>
  -<li><a href="APR_Process_library.html#apr_createprocattr_init" target="Documentation">apr_status_t apr_createprocattr_init(apr_procattr_t **new_attr, apr_pool_t *cont)</a>
  -<li><a href="APR_Process_library.html#apr_detach" target="Documentation">apr_status_t apr_detach(void)</a>
  -<li><a href="APR_Process_library.html#apr_fork" target="Documentation">apr_status_t apr_fork(apr_proc_t *proc, apr_pool_t *cont)</a>
  -<li><a href="APR_Process_library.html#apr_kill" target="Documentation">apr_status_t apr_kill(apr_proc_t *proc, int sig)</a>
  -<li><a href="APR_Process_library.html#apr_probe_writable_fds" target="Documentation">void apr_probe_writable_fds(void)</a>
  -<li><a href="APR_Process_library.html#apr_reap_other_child" target="Documentation">apr_status_t apr_reap_other_child(apr_proc_t *pid, int status)</a>
  -<li><a href="APR_Process_library.html#apr_register_other_child" target="Documentation">void apr_register_other_child(apr_proc_t *pid, void (*maintenance) (int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p)</a>
  -<li><a href="APR_Process_library.html#apr_setprocattr_childerr" target="Documentation">apr_status_t apr_setprocattr_childerr(struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err)</a>
  -<li><a href="APR_Process_library.html#apr_setprocattr_childin" target="Documentation">apr_status_t apr_setprocattr_childin(struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in)</a>
  -<li><a href="APR_Process_library.html#apr_setprocattr_childout" target="Documentation">apr_status_t apr_setprocattr_childout(struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out)</a>
  -<li><a href="APR_Process_library.html#apr_setprocattr_cmdtype" target="Documentation">apr_status_t apr_setprocattr_cmdtype(apr_procattr_t *attr, apr_cmdtype_e cmd)</a>
  -<li><a href="APR_Process_library.html#apr_setprocattr_detach" target="Documentation">apr_status_t apr_setprocattr_detach(apr_procattr_t *attr, apr_int32_t detach)</a>
  -<li><a href="APR_Process_library.html#apr_setprocattr_dir" target="Documentation">apr_status_t apr_setprocattr_dir(apr_procattr_t *attr, const char *dir)</a>
  -<li><a href="APR_Process_library.html#apr_setprocattr_io" target="Documentation">apr_status_t apr_setprocattr_io(apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err)</a>
  -<li><a href="APR_Process_library.html#apr_setprocattr_limit" target="Documentation">apr_status_t apr_setprocattr_limit(apr_procattr_t *attr, apr_int32_t what, struct rlimit *limit)</a>
  -<li><a href="APR_Process_library.html#apr_unregister_other_child" target="Documentation">void apr_unregister_other_child(void *data)</a>
  -<li><a href="APR_Process_library.html#apr_wait_all_procs" target="Documentation">apr_status_t apr_wait_all_procs(apr_proc_t *proc, apr_wait_t *status, apr_wait_how_e waithow, apr_pool_t *p)</a>
  -<li><a href="APR_Process_library.html#apr_wait_proc" target="Documentation">apr_status_t apr_wait_proc(apr_proc_t *proc, apr_wait_how_e waithow)</a>
  -<li><a href="APR_Process_library.html#void-30" target="Documentation">void apr_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how)</a>
  +<li><a href="APR_Process_library.html#-16" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Process_library.html#-17" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Process_library.html#-18" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Process_library.html#-19" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_Process_library.html#-20" target="Documentation">(void)</a>
  +<li><a href="APR_Process_library.html#apr_proc_detach" target="Documentation">apr_status_t apr_proc_detach(void)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-152" target="Documentation">apr_status_t apr_procattr_create(apr_procattr_t **new_attr, apr_pool_t *cont)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-153" target="Documentation">apr_status_t apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-154" target="Documentation">apr_status_t apr_procattr_child_in_set(struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-155" target="Documentation">apr_status_t apr_procattr_child_out_set(struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-156" target="Documentation">apr_status_t apr_procattr_child_err_set(struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-157" target="Documentation">apr_status_t apr_procattr_dir_set(apr_procattr_t *attr, const char *dir)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-158" target="Documentation">apr_status_t apr_procattr_cmdtype_set(apr_procattr_t *attr, apr_cmdtype_e cmd)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-159" target="Documentation">apr_status_t apr_procattr_detach_set(apr_procattr_t *attr, apr_int32_t detach)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-160" target="Documentation">apr_status_t apr_procattr_limit_set(apr_procattr_t *attr, apr_int32_t what, apr_int32_t what, struct rlimit *limit)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-161" target="Documentation">apr_status_t apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-162" target="Documentation">apr_status_t apr_proc_create(apr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, apr_procattr_t *attr, apr_pool_t *cont)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-163" target="Documentation">apr_status_t apr_proc_wait(apr_proc_t *proc, apr_wait_how_e waithow)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-164" target="Documentation">apr_status_t apr_proc_wait_all_procs(apr_proc_t *proc, apr_wait_t *status, apr_wait_how_e waithow, apr_pool_t *p)</a>
  +<li><a href="APR_Process_library.html#apr_status_t-165" target="Documentation">apr_status_t apr_proc_other_child_read(apr_proc_t *pid, int status);</a>
  +<li><a href="APR_Process_library.html#apr_status_t-166" target="Documentation">apr_status_t apr_proc_kill(apr_proc_t *proc, int sig)</a>
  +<li><a href="APR_Process_library.html#void-30" target="Documentation">void apr_proc_other_child_register(apr_proc_t *pid, void (*maintenance) (int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p)</a>
  +<li><a href="APR_Process_library.html#void-31" target="Documentation">void apr_proc_other_child_unregister(void *data)</a>
  +<li><a href="APR_Process_library.html#void-32" target="Documentation">void apr_proc_other_child_check();</a>
  +<li><a href="APR_Process_library.html#void-33" target="Documentation">void apr_proc_probe_writable_fds()</a>
  +<li><a href="APR_Process_library.html#void-34" target="Documentation">void apr_pool_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how)</a>
   </dir><a href="APR_Random_Functions.html" target="Documentation"><b>APR Random Functions</b></a><br>
     <dir>
  -<li><a href="APR_Random_Functions.html#apr_generate_random_bytes" target="Documentation">apr_status_t apr_generate_random_bytes(unsigned char * buf, int length)</a>
  -<li><a href="APR_Random_Functions.html#apr_initialize" target="Documentation">apr_status_t apr_initialize(void)</a>
  -<li><a href="APR_Random_Functions.html#apr_set_abort" target="Documentation">apr_status_t apr_set_abort(int (*apr_abort)(int retcode), apr_pool_t *cont)</a>
  -<li><a href="APR_Random_Functions.html#apr_terminate" target="Documentation">void apr_terminate(void)</a>
  +<li><a href="APR_Random_Functions.html#apr_status_t-48" target="Documentation">apr_status_t apr_generate_random_bytes(unsigned char * buf, int length)</a>
  +<li><a href="APR_Random_Functions.html#apr_status_t-49" target="Documentation">apr_status_t apr_initialize(void)</a>
  +<li><a href="APR_Random_Functions.html#apr_status_t-50" target="Documentation">apr_status_t apr_set_abort(int (*apr_abort)(int retcode), apr_pool_t *cont)</a>
  +<li><a href="APR_Random_Functions.html#void-2" target="Documentation">void apr_terminate(void)</a>
   </dir><a href="APR_Table_library.html" target="Documentation"><b>APR Table library</b></a><br>
     <dir>
   <li><a href="APR_Table_library.html#apr_array_header_t" target="Documentation">struct apr_array_header_t</a>
  -<li><a href="APR_Table_library.html#apr_btable_entry_t" target="Documentation">struct apr_btable_entry_t</a>
  -<li><a href="APR_Table_library.html#apr_btable_t" target="Documentation">struct apr_btable_t</a>
   <li><a href="APR_Table_library.html#apr_table_entry_t" target="Documentation">struct apr_table_entry_t</a>
   <li><a href="APR_Table_library.html#apr_table_t" target="Documentation">struct apr_table_t</a>
  -<li><a href="APR_Table_library.html#" target="Documentation">(apr_array_header_t *)</a>
  +<li><a href="APR_Table_library.html#-14" target="Documentation">(apr_array_header_t *)</a>
  +<li><a href="APR_Table_library.html#-15" target="Documentation">(apr_array_header_t *)</a>
   <li><a href="APR_Table_library.html#apr_array_header_t" target="Documentation">apr_array_header_t *apr_table_elts(apr_table_t *t)</a>
  -<li><a href="APR_Table_library.html#apr_array_header_t-2" target="Documentation">apr_array_header_t *apr_table_elts(apr_table_t *t)</a>
  -<li><a href="APR_Table_library.html#apr_array_header_t-3" target="Documentation">apr_array_header_t *apr_copy_array(apr_pool_t *p, const apr_array_header_t *arr)</a>
  -<li><a href="APR_Table_library.html#apr_array_header_t-4" target="Documentation">apr_array_header_t *apr_copy_array_hdr(apr_pool_t *p, const apr_array_header_t *arr)</a>
  -<li><a href="APR_Table_library.html#apr_array_header_t-5" target="Documentation">apr_array_header_t *apr_append_arrays(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)</a>
  -<li><a href="APR_Table_library.html#apr_btable_t" target="Documentation">apr_btable_t *apr_overlay_tables(apr_pool_t *p, const apr_btable_t *overlay, const apr_btable_t *base);</a>
  -<li><a href="APR_Table_library.html#apr_item_t" target="Documentation"> apr_item_t</a>
  -<li><a href="APR_Table_library.html#apr_table_t" target="Documentation">apr_table_t *apr_make_table(apr_pool_t *p, int nelts)</a>
  -<li><a href="APR_Table_library.html#apr_table_t-2" target="Documentation">apr_table_t *apr_make_btable(apr_pool_t *p, int nelts)</a>
  -<li><a href="APR_Table_library.html#apr_table_t-3" target="Documentation">apr_table_t *) apr_copy_table(apr_pool_t *p, const apr_table_t *t)</a>
  -<li><a href="APR_Table_library.html#apr_table_t-4" target="Documentation">apr_table_t *) apr_copy_btable(apr_pool_t *p, const apr_btable_t *t)</a>
  -<li><a href="APR_Table_library.html#apr_table_t-5" target="Documentation">apr_table_t *apr_overlay_tables(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base);</a>
  -<li><a href="APR_Table_library.html#char-8" target="Documentation">char *apr_array_pstrcat(apr_pool_t *p, const apr_array_header_t *arr, const char sep)</a>
  -<li><a href="APR_Table_library.html#const-2" target="Documentation">const char *apr_table_get(const apr_table_t *t, const char *key)</a>
  -<li><a href="APR_Table_library.html#const-3" target="Documentation">const apr_item_t *apr_btable_get(const apr_btable_t *t, const char *key)</a>
  -<li><a href="APR_Table_library.html#void-11" target="Documentation">void *apr_push_array(apr_array_header_t *arr)</a>
  -<li><a href="APR_Table_library.html#void-12" target="Documentation">void apr_array_cat(apr_array_header_t *dst, const apr_array_header_t *src)</a>
  -<li><a href="APR_Table_library.html#void-13" target="Documentation">void apr_clear_table(apr_table_t *t)</a>
  -<li><a href="APR_Table_library.html#void-14" target="Documentation">void apr_clear_btable(apr_btable_t *t)</a>
  -<li><a href="APR_Table_library.html#void-15" target="Documentation">void apr_table_set(apr_table_t *t, const char *key, const char *val)</a>
  -<li><a href="APR_Table_library.html#void-16" target="Documentation">void apr_btable_set(apr_btable_t *t, const char *key, size_t size, const void *val)</a>
  -<li><a href="APR_Table_library.html#void-17" target="Documentation">void apr_table_setn(apr_table_t *t, const char *key, const char *val)</a>
  -<li><a href="APR_Table_library.html#void-18" target="Documentation">void apr_btable_setn(apr_btable_t *t, const char *key, size_t size, const void *val)</a>
  -<li><a href="APR_Table_library.html#void-19" target="Documentation">void apr_table_unset(apr_table_t *t, const char *key)</a>
  -<li><a href="APR_Table_library.html#void-20" target="Documentation">void apr_btable_unset(apr_btable_t *t, const char *key)</a>
  -<li><a href="APR_Table_library.html#void-21" target="Documentation">void apr_table_merge(apr_table_t *t, const char *key, const char *val)</a>
  -<li><a href="APR_Table_library.html#void-22" target="Documentation">void apr_table_mergen(apr_table_t *t, const char *key, const char *val)</a>
  -<li><a href="APR_Table_library.html#void-23" target="Documentation">void apr_table_add(apr_table_t *t, const char *key, const char *val)</a>
  -<li><a href="APR_Table_library.html#void-24" target="Documentation">void apr_btable_add(apr_btable_t *t, const char *key, size_t size, const char *val)</a>
  -<li><a href="APR_Table_library.html#void-25" target="Documentation">void apr_table_addn(apr_table_t *t, const char *key, const char *val)</a>
  -<li><a href="APR_Table_library.html#void-26" target="Documentation">void apr_btable_addn(apr_btable_t *t, const char *key, size_t size, const char *val)</a>
  +<li><a href="APR_Table_library.html#apr_array_header_t-2" target="Documentation">apr_array_header_t *apr_array_make(struct apr_pool_t *p, int nelts, int elt_size)</a>
  +<li><a href="APR_Table_library.html#apr_array_header_t-3" target="Documentation">apr_array_header_t *apr_array_copy(apr_pool_t *p, const apr_array_header_t *arr)</a>
  +<li><a href="APR_Table_library.html#apr_array_header_t-4" target="Documentation">apr_array_header_t *apr_array_copy_hdr(apr_pool_t *p, const apr_array_header_t *arr)</a>
  +<li><a href="APR_Table_library.html#apr_array_header_t-5" target="Documentation">apr_array_header_t *apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)</a>
  +<li><a href="APR_Table_library.html#apr_table_t" target="Documentation">apr_table_t *apr_table_make(apr_pool_t *p, int nelts)</a>
  +<li><a href="APR_Table_library.html#apr_table_t-2" target="Documentation">apr_table_t *apr_table_copy(apr_pool_t *p, const apr_table_t *t)</a>
  +<li><a href="APR_Table_library.html#apr_table_t-3" target="Documentation">apr_table_t *apr_table_overlay(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base);</a>
  +<li><a href="APR_Table_library.html#char-9" target="Documentation">char *apr_array_pstrcat(apr_pool_t *p, const apr_array_header_t *arr, const char sep)</a>
  +<li><a href="APR_Table_library.html#const-4" target="Documentation">const char *apr_table_get(const apr_table_t *t, const char *key)</a>
  +<li><a href="APR_Table_library.html#int-10" target="Documentation">int apr_is_empty_table(apr_table_t *t)</a>
  +<li><a href="APR_Table_library.html#void-17" target="Documentation">void *apr_array_push(apr_array_header_t *arr)</a>
  +<li><a href="APR_Table_library.html#void-18" target="Documentation">void apr_array_cat(apr_array_header_t *dst, const apr_array_header_t *src)</a>
  +<li><a href="APR_Table_library.html#void-19" target="Documentation">void apr_table_clear(apr_table_t *t)</a>
  +<li><a href="APR_Table_library.html#void-20" target="Documentation">void apr_table_set(apr_table_t *t, const char *key, const char *val)</a>
  +<li><a href="APR_Table_library.html#void-21" target="Documentation">void apr_table_setn(apr_table_t *t, const char *key, const char *val)</a>
  +<li><a href="APR_Table_library.html#void-22" target="Documentation">void apr_table_unset(apr_table_t *t, const char *key)</a>
  +<li><a href="APR_Table_library.html#void-23" target="Documentation">void apr_table_merge(apr_table_t *t, const char *key, const char *val)</a>
  +<li><a href="APR_Table_library.html#void-24" target="Documentation">void apr_table_mergen(apr_table_t *t, const char *key, const char *val)</a>
  +<li><a href="APR_Table_library.html#void-25" target="Documentation">void apr_table_add(apr_table_t *t, const char *key, const char *val)</a>
  +<li><a href="APR_Table_library.html#void-26" target="Documentation">void apr_table_addn(apr_table_t *t, const char *key, const char *val)</a>
   <li><a href="APR_Table_library.html#void-27" target="Documentation">void apr_table_do(int (*comp) (void *, const char *, const char *), void *rec, const apr_table_t *t, ...)</a>
   <li><a href="APR_Table_library.html#void-28" target="Documentation">void apr_table_vdo(int (*comp) (void *, const char *, const char *), void *rec, const apr_table_t *t, va_list vp)</a>
  -<li><a href="APR_Table_library.html#void-29" target="Documentation">void apr_overlap_tables(apr_table_t *a, const apr_table_t *b, unsigned flags)</a>
  +<li><a href="APR_Table_library.html#void-29" target="Documentation">void apr_table_overlap(apr_table_t *a, const apr_table_t *b, unsigned flags)</a>
   </dir><a href="APR_Thread_library.html" target="Documentation"><b>APR Thread library</b></a><br>
     <dir>
   <li><a href="APR_Thread_library.html#apr_proc_t" target="Documentation">struct apr_proc_t</a>
   <li><a href="APR_Thread_library.html#process_chain" target="Documentation">struct process_chain</a>
  -<li><a href="APR_Thread_library.html#apr_create_thread" target="Documentation">apr_status_t apr_create_thread(apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont)</a>
  -<li><a href="APR_Thread_library.html#apr_create_thread_private" target="Documentation">apr_status_t apr_create_thread_private(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *cont)</a>
  -<li><a href="APR_Thread_library.html#apr_create_threadattr" target="Documentation">apr_status_t apr_create_threadattr(apr_threadattr_t **new_attr, apr_pool_t *cont)</a>
  -<li><a href="APR_Thread_library.html#apr_delete_thread_private" target="Documentation">apr_status_t apr_delete_thread_private(apr_threadkey_t *key)</a>
  -<li><a href="APR_Thread_library.html#apr_get_thread_private" target="Documentation">apr_status_t apr_get_thread_private(void **new_mem, apr_threadkey_t *key)</a>
  -<li><a href="APR_Thread_library.html#apr_get_threaddata" target="Documentation">apr_status_t apr_get_threaddata(void **data, const char *key, apr_thread_t *thread)</a>
  -<li><a href="APR_Thread_library.html#apr_get_threadkeydata" target="Documentation">apr_status_t apr_get_threadkeydata(void **data, const char *key, apr_threadkey_t *threadkey)</a>
  -<li><a href="APR_Thread_library.html#apr_getthreadattr_detach" target="Documentation">apr_status_t apr_getthreadattr_detach(apr_threadattr_t *attr)</a>
  -<li><a href="APR_Thread_library.html#apr_set_thread_private" target="Documentation">apr_status_t apr_set_thread_private(void *priv, apr_threadkey_t *key)</a>
  -<li><a href="APR_Thread_library.html#apr_set_threaddata" target="Documentation">apr_status_t apr_set_threaddata(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_thread_t *thread)</a>
  -<li><a href="APR_Thread_library.html#apr_set_threadkeydata" target="Documentation">apr_status_t apr_set_threadkeydata(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_threadkey_t *threadkey)</a>
  -<li><a href="APR_Thread_library.html#apr_setthreadattr_detach" target="Documentation">apr_status_t apr_setthreadattr_detach(apr_threadattr_t *attr, apr_int32_t on)</a>
  -<li><a href="APR_Thread_library.html#apr_thread_detach" target="Documentation">apr_status_t apr_thread_detach(apr_thread_t *thd)</a>
  -<li><a href="APR_Thread_library.html#apr_thread_exit" target="Documentation">apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t *retval)</a>
  -<li><a href="APR_Thread_library.html#apr_thread_join" target="Documentation">apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-137" target="Documentation">apr_status_t apr_threadattr_create(apr_threadattr_t **new_attr, apr_pool_t *cont)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-138" target="Documentation">apr_status_t apr_threadattr_detach_get(apr_threadattr_t *attr, apr_int32_t on)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-139" target="Documentation">apr_status_t apr_threadattr_detach_set(apr_threadattr_t *attr)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-140" target="Documentation">apr_status_t apr_thread_create(apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-141" target="Documentation">apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t *retval)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-142" target="Documentation">apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd);</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-143" target="Documentation">apr_status_t apr_thread_detach(apr_thread_t *thd)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-144" target="Documentation">apr_status_t apr_thread_data_get(void **data, const char *key, apr_thread_t *thread)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-145" target="Documentation">apr_status_t apr_thread_data_set(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_thread_t *thread)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-146" target="Documentation">apr_status_t apr_threadkey_private_create(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *cont)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-147" target="Documentation">apr_status_t apr_threadkey_private_get(void **new_mem, apr_threadkey_t *key)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-148" target="Documentation">apr_status_t apr_threadkey_private_set(void *priv, apr_threadkey_t *key)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-149" target="Documentation">apr_status_t apr_threadkey_private_delete(apr_threadkey_t *key)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-150" target="Documentation">apr_status_t apr_threadkey_data_get(void **data, const char *key, apr_threadkey_t *threadkey)</a>
  +<li><a href="APR_Thread_library.html#apr_status_t-151" target="Documentation">apr_status_t apr_threadkey_data_set(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_threadkey_t *threadkey)</a>
   </dir><a href="APR_Time_library.html" target="Documentation"><b>APR Time library</b></a><br>
     <dir>
   <li><a href="APR_Time_library.html#apr_exploded_time_t" target="Documentation">struct apr_exploded_time_t</a>
  -<li><a href="APR_Time_library.html#apr_ansi_time_to_apr_time" target="Documentation">apr_status_t apr_ansi_time_to_apr_time(apr_time_t *result, time_t input)</a>
  -<li><a href="APR_Time_library.html#apr_ctime" target="Documentation">apr_status_t apr_ctime(char *date_str, apr_time_t t)</a>
  -<li><a href="APR_Time_library.html#apr_explode_gmt" target="Documentation">apr_status_t apr_explode_gmt(apr_exploded_time_t *result, apr_time_t input)</a>
  -<li><a href="APR_Time_library.html#apr_explode_localtime" target="Documentation">apr_status_t apr_explode_localtime(apr_exploded_time_t *result, apr_time_t input)</a>
  -<li><a href="APR_Time_library.html#apr_implode_time" target="Documentation">apr_status_t apr_implode_time(apr_time_t *result, apr_exploded_time_t *input)</a>
  -<li><a href="APR_Time_library.html#apr_now" target="Documentation">apr_time_t apr_now(void)</a>
  -<li><a href="APR_Time_library.html#apr_rfc822_date" target="Documentation">apr_status_t apr_rfc822_date(char *date_str, apr_time_t t)</a>
  -<li><a href="APR_Time_library.html#apr_sleep" target="Documentation">void apr_sleep(apr_interval_time_t t)</a>
  -<li><a href="APR_Time_library.html#apr_strftime" target="Documentation">apr_status_t apr_strftime(char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_exploded_time_t *tm)</a>
  +<li><a href="APR_Time_library.html#-21" target="Documentation">(void)</a>
  +<li><a href="APR_Time_library.html#apr_status_t-167" target="Documentation">apr_status_t apr_ansi_time_to_apr_time(apr_time_t *result, time_t input)</a>
  +<li><a href="APR_Time_library.html#apr_status_t-168" target="Documentation">apr_status_t apr_explode_gmt(apr_exploded_time_t *result, apr_time_t input)</a>
  +<li><a href="APR_Time_library.html#apr_status_t-169" target="Documentation">apr_status_t apr_explode_localtime(apr_exploded_time_t *result, apr_time_t input)</a>
  +<li><a href="APR_Time_library.html#apr_status_t-170" target="Documentation">apr_status_t apr_implode_time(apr_time_t *result, apr_exploded_time_t *input)</a>
  +<li><a href="APR_Time_library.html#apr_status_t-171" target="Documentation">apr_status_t apr_rfc822_date(char *date_str, apr_time_t t)</a>
  +<li><a href="APR_Time_library.html#apr_status_t-172" target="Documentation">apr_status_t apr_ctime(char *date_str, apr_time_t t)</a>
  +<li><a href="APR_Time_library.html#apr_status_t-173" target="Documentation">apr_status_t apr_strftime(char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_exploded_time_t *tm)</a>
  +<li><a href="APR_Time_library.html#apr_time_t" target="Documentation">apr_time_t apr_time_now(void)</a>
  +<li><a href="APR_Time_library.html#void-35" target="Documentation">void apr_sleep(apr_interval_time_t t)</a>
   </dir><a href="APR_UUID_Handling.html" target="Documentation"><b>APR UUID Handling</b></a><br>
     <dir>
  -<li><a href="APR_UUID_Handling.html#apr_status_t-15" target="Documentation">apr_status_t apr_parse_uuid(apr_uuid_t *uuid, const char *uuid_str)</a>
  -<li><a href="APR_UUID_Handling.html#void-31" target="Documentation">void apr_get_uuid(apr_uuid_t *uuid)</a>
  -<li><a href="APR_UUID_Handling.html#void-32" target="Documentation">void apr_format_uuid(apr_pool_t *p, const apr_uuid_t *uuid)</a>
  +<li><a href="APR_UUID_Handling.html#apr_status_t-174" target="Documentation">apr_status_t apr_uuid_parse(apr_uuid_t *uuid, const char *uuid_str)</a>
  +<li><a href="APR_UUID_Handling.html#void-36" target="Documentation">void apr_uuid_get(apr_uuid_t *uuid)</a>
  +<li><a href="APR_UUID_Handling.html#void-37" target="Documentation">void apr_uuid_format(char *buffer, const apr_uuid_t *uuid)</a>
   </dir><a href="APR_command_arguments.html" target="Documentation"><b>APR command arguments</b></a><br>
     <dir>
   <li><a href="APR_command_arguments.html#apr_getopt_option_t" target="Documentation">struct apr_getopt_option_t</a>
   <li><a href="APR_command_arguments.html#apr_getopt_t" target="Documentation">struct apr_getopt_t</a>
  -<li><a href="APR_command_arguments.html#apr_status_t-2" target="Documentation">apr_status_t apr_initopt(apr_getopt_t **os, apr_pool_t *cont,int argc, char *const *argv)</a>
  -<li><a href="APR_command_arguments.html#apr_status_t-3" target="Documentation">apr_status_t apr_getopt(apr_getopt_t *os, const char *opts, char *optch, const char **optarg)</a>
  -<li><a href="APR_command_arguments.html#apr_status_t-4" target="Documentation">apr_status_t apr_getopt_long(apr_getopt_t *os, const apr_getopt_option_t *opts, int *optch, const char **optarg)</a>
  +<li><a href="APR_command_arguments.html#apr_status_t-51" target="Documentation">apr_status_t apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont,int argc, char *const *argv)</a>
  +<li><a href="APR_command_arguments.html#apr_status_t-52" target="Documentation">apr_status_t apr_getopt(apr_getopt_t *os, const char *opts, char *optch, const char **optarg)</a>
  +<li><a href="APR_command_arguments.html#apr_status_t-53" target="Documentation">apr_status_t apr_getopt_long(apr_getopt_t *os, const apr_getopt_option_t *opts, int *optch, const char **optarg)</a>
   </dir><a href="APR_general-purpose_library.html" target="Documentation"><b>APR general-purpose library</b></a><br>
     <dir>
   <li><a href="APR_general-purpose_library.html#apr_vformatter_buff_t" target="Documentation">struct apr_vformatter_buff_t</a>
  -<li><a href="APR_general-purpose_library.html#apr_status_t-5" target="Documentation">apr_status_t apr_validate_password(const char *passwd, const char *hash)</a>
  -<li><a href="APR_general-purpose_library.html#apr_status_t-6" target="Documentation">apr_status_t apr_getpass(const char *prompt, char *pwbuf, size_t *bufsize)</a>
  -<li><a href="APR_general-purpose_library.html#const" target="Documentation">const char * apr_filename_of_pathname(const char *pathname)</a>
  -<li><a href="APR_general-purpose_library.html#int-3" target="Documentation">int apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), apr_vformatter_buff_t *c, const char *fmt, va_list ap)</a>
  -<li><a href="APR_general-purpose_library.html#int-4" target="Documentation">int apr_snprintf(char *buf, size_t len, const char *format, ...)</a>
  -<li><a href="APR_general-purpose_library.html#int-5" target="Documentation">int apr_vsnprintf(char *buf, size_t len, const char *format, va_list ap)</a>
  +<li><a href="APR_general-purpose_library.html#apr_status_t-54" target="Documentation">apr_status_t apr_password_validate(const char *passwd, const char *hash)</a>
  +<li><a href="APR_general-purpose_library.html#apr_status_t-55" target="Documentation">apr_status_t apr_password_get(const char *prompt, char *pwbuf, size_t *bufsize)</a>
  +<li><a href="APR_general-purpose_library.html#const-2" target="Documentation">const char * apr_filename_of_pathname(const char *pathname)</a>
  +<li><a href="APR_general-purpose_library.html#int-4" target="Documentation">int apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), apr_vformatter_buff_t *c, const char *fmt, va_list ap)</a>
   </dir><a href="APR_lock_library.html" target="Documentation"><b>APR lock library</b></a><br>
     <dir>
  -<li><a href="APR_lock_library.html#apr_child_init_lock" target="Documentation">apr_status_t apr_child_init_lock(apr_lock_t **lock, const char *fname, apr_pool_t *cont)</a>
  -<li><a href="APR_lock_library.html#apr_create_lock" target="Documentation">apr_status_t apr_create_lock(apr_lock_t **lock, apr_locktype_e type, apr_lockscope_e scope, const char *fname, apr_pool_t *cont)</a>
  -<li><a href="APR_lock_library.html#apr_destroy_lock" target="Documentation">apr_status_t apr_destroy_lock(apr_lock_t *lock)</a>
  -<li><a href="APR_lock_library.html#apr_get_lockdata" target="Documentation">apr_status_t apr_get_lockdata(apr_lock_t *lock, const char *key, void *data)</a>
  -<li><a href="APR_lock_library.html#apr_lock" target="Documentation">apr_status_t apr_lock(apr_lock_t *lock)</a>
  -<li><a href="APR_lock_library.html#apr_set_lockdata" target="Documentation">apr_status_t apr_set_lockdata(apr_lock_t *lock, void *data, const char *key, apr_status_t (*cleanup) (void *))</a>
  -<li><a href="APR_lock_library.html#apr_unlock" target="Documentation">apr_status_t apr_unlock(apr_lock_t *lock)</a>
  +<li><a href="APR_lock_library.html#-4" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_lock_library.html#apr_status_t-56" target="Documentation">apr_status_t apr_lock_create(apr_lock_t **lock, apr_locktype_e type, apr_lockscope_e scope, const char *fname, apr_pool_t *cont)</a>
  +<li><a href="APR_lock_library.html#apr_status_t-57" target="Documentation">apr_status_t apr_lock_aquire(apr_lock_t *lock)</a>
  +<li><a href="APR_lock_library.html#apr_status_t-58" target="Documentation">apr_status_t apr_lock_release(apr_lock_t *lock)</a>
  +<li><a href="APR_lock_library.html#apr_status_t-59" target="Documentation">apr_status_t apr_lock_destroy(apr_lock_t *lock)</a>
  +<li><a href="APR_lock_library.html#apr_status_t-60" target="Documentation">apr_status_t apr_lock_child_init(apr_lock_t **lock, const char *fname, apr_pool_t *cont)</a>
  +<li><a href="APR_lock_library.html#apr_status_t-61" target="Documentation">apr_status_t apr_lock_data_get(apr_lock_t *lock, const char *key, void *data)</a>
  +<li><a href="APR_lock_library.html#apr_status_t-62" target="Documentation">apr_status_t apr_lock_data_set(apr_lock_t *lock, void *data, const char *key, apr_status_t (*cleanup)(void *))</a>
   </dir><a href="APR_memory_allocation.html" target="Documentation"><b>APR memory allocation</b></a><br>
     <dir>
   <li><a href="APR_memory_allocation.html#apr_pool_t" target="Documentation">struct apr_pool_t</a>
   <li><a href="APR_memory_allocation.html#apr_pool_t-apr_pool_t" target="Documentation">struct apr_pool_t</a>
   <li><a href="APR_memory_allocation.html#apr_pool_t-cleanup" target="Documentation">struct cleanup</a>
   <li><a href="APR_memory_allocation.html#apr_pool_t-process_chain" target="Documentation">struct process_chain</a>
  -<li><a href="APR_memory_allocation.html#apr_create_pool" target="Documentation">apr_status_t apr_create_pool(apr_pool_t **newcont, apr_pool_t *cont)</a>
  -<li><a href="APR_memory_allocation.html#apr_get_userdata" target="Documentation">apr_status_t apr_get_userdata(void **data, const char *key, apr_pool_t *cont)</a>
  -<li><a href="APR_memory_allocation.html#apr_init_alloc" target="Documentation">apr_status_t apr_init_alloc(void)</a>
  -<li><a href="APR_memory_allocation.html#apr_pool_t" target="Documentation">apr_pool_t *apr_make_sub_pool(apr_pool_t *p, int (*apr_abort)(int retcode))</a>
  -<li><a href="APR_memory_allocation.html#apr_set_userdata" target="Documentation">apr_status_t apr_set_userdata(const void *data, const char *key, apr_status_t (*cleanup) (void *), apr_pool_t *cont)</a>
  -<li><a href="APR_memory_allocation.html#apr_size_t" target="Documentation">apr_size_t apr_bytes_in_pool(apr_pool_t *p)</a>
  -<li><a href="APR_memory_allocation.html#apr_size_t-2" target="Documentation">apr_size_t apr_bytes_in_free_blocks(void)</a>
  -<li><a href="APR_memory_allocation.html#apr_status_t-12" target="Documentation">apr_status_t apr_run_cleanup(apr_pool_t *p, void *data, apr_status_t (*cleanup) (void *))</a>
  -<li><a href="APR_memory_allocation.html#apr_status_t-13" target="Documentation">apr_status_t apr_null_cleanup(void *data)</a>
  -<li><a href="APR_memory_allocation.html#apr_term_alloc" target="Documentation">void apr_term_alloc(void)</a>
  -<li><a href="APR_memory_allocation.html#int-6" target="Documentation">int apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b)</a>
  -<li><a href="APR_memory_allocation.html#void-10" target="Documentation">void apr_cleanup_for_exec(void)</a>
  -<li><a href="APR_memory_allocation.html#void-4" target="Documentation">void apr_clear_pool(apr_pool_t *p)</a>
  -<li><a href="APR_memory_allocation.html#void-5" target="Documentation">void apr_destroy_pool(apr_pool_t *p)</a>
  -<li><a href="APR_memory_allocation.html#void-6" target="Documentation">void *apr_palloc(apr_pool_t *c, apr_size_t reqsize)</a>
  -<li><a href="APR_memory_allocation.html#void-7" target="Documentation">void *apr_pcalloc(apr_pool_t *p, apr_size_t size)</a>
  -<li><a href="APR_memory_allocation.html#void-8" target="Documentation">void apr_register_cleanup(apr_pool_t *p, const void *data, apr_status_t (*plain_cleanup) (void *), apr_status_t (*child_cleanup) (void *))</a>
  -<li><a href="APR_memory_allocation.html#void-9" target="Documentation">void apr_kill_cleanup(apr_pool_t *p, const void *data, apr_status_t (*cleanup) (void *))</a>
  +<li><a href="APR_memory_allocation.html#apr_pool_t-2" target="Documentation">apr_pool_t *apr_pool_sub_make(apr_pool_t *p, int (*apr_abort)(int retcode))</a>
  +<li><a href="APR_memory_allocation.html#apr_size_t" target="Documentation">apr_size_t apr_pool_num_bytes(apr_pool_t *p)</a>
  +<li><a href="APR_memory_allocation.html#apr_size_t-2" target="Documentation">apr_size_t apr_pool_free_blocks_num_bytes(void)</a>
  +<li><a href="APR_memory_allocation.html#apr_status_t-106" target="Documentation">apr_status_t apr_pool_alloc_init(apr_pool_t *globalp)</a>
  +<li><a href="APR_memory_allocation.html#apr_status_t-107" target="Documentation">apr_status_t apr_pool_create(apr_pool_t **newcont, apr_pool_t *cont)</a>
  +<li><a href="APR_memory_allocation.html#apr_status_t-108" target="Documentation">apr_status_t apr_pool_userdata_set(const void *data, const char *key, apr_status_t (*cleanup)(void *), apr_pool_t *cont)</a>
  +<li><a href="APR_memory_allocation.html#apr_status_t-109" target="Documentation">apr_status_t apr_pool_userdata_get(void **data, const char *key, apr_pool_t *cont)</a>
  +<li><a href="APR_memory_allocation.html#apr_status_t-110" target="Documentation">apr_status_t apr_pool_cleanup_run(apr_pool_t *p, void *data, apr_status_t (*cleanup)(void *))</a>
  +<li><a href="APR_memory_allocation.html#apr_status_t-111" target="Documentation">apr_status_t apr_pool_cleanup_null(void *data)</a>
  +<li><a href="APR_memory_allocation.html#int-5" target="Documentation">int apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b)</a>
  +<li><a href="APR_memory_allocation.html#void-10" target="Documentation">void *apr_palloc(apr_pool_t *c, apr_size_t reqsize)</a>
  +<li><a href="APR_memory_allocation.html#void-11" target="Documentation">void *apr_pcalloc(apr_pool_t *p, apr_size_t size)</a>
  +<li><a href="APR_memory_allocation.html#void-12" target="Documentation">void apr_pool_cleanup_register(apr_pool_t *p, const void *data, apr_status_t (*plain_cleanup)(void *), apr_status_t (*child_cleanup)(void *))</a>
  +<li><a href="APR_memory_allocation.html#void-13" target="Documentation">void apr_pool_cleanup_kill(apr_pool_t *p, const void *data, apr_status_t (*cleanup)(void *))</a>
  +<li><a href="APR_memory_allocation.html#void-14" target="Documentation">void apr_pool_cleanup_for_exec(void)</a>
  +<li><a href="APR_memory_allocation.html#void-7" target="Documentation">void apr_pool_alloc_term(apr_pool_t *globalp)</a>
  +<li><a href="APR_memory_allocation.html#void-8" target="Documentation">void apr_clear_pool(apr_pool_t *p)</a>
  +<li><a href="APR_memory_allocation.html#void-9" target="Documentation">void apr_pool_destroy(apr_pool_t *p)</a>
   </dir><a href="APR_portability_Routines.html" target="Documentation"><b>APR portability Routines</b></a><br>
     <dir>
   <li><a href="APR_portability_Routines.html#apr_os_sock_info_t" target="Documentation">struct apr_os_sock_info_t</a>
  -<li><a href="APR_portability_Routines.html#apr_get_os_dir" target="Documentation">apr_status_t apr_get_os_dir(apr_os_dir_t **thedir, apr_dir_t *dir)</a>
  -<li><a href="APR_portability_Routines.html#apr_get_os_exp_time" target="Documentation">apr_status_t apr_get_os_exp_time(apr_os_exp_time_t **ostime, apr_exploded_time_t *aprtime)</a>
  -<li><a href="APR_portability_Routines.html#apr_get_os_file" target="Documentation">apr_status_t apr_get_os_file(apr_os_file_t *thefile, apr_file_t *file)</a>
  -<li><a href="APR_portability_Routines.html#apr_get_os_imp_time" target="Documentation">apr_status_t apr_get_os_imp_time(apr_os_imp_time_t **ostime, apr_time_t *aprtime)</a>
  -<li><a href="APR_portability_Routines.html#apr_get_os_lock" target="Documentation">apr_status_t apr_get_os_lock(apr_os_lock_t *oslock, apr_lock_t *lock)</a>
  -<li><a href="APR_portability_Routines.html#apr_get_os_sock" target="Documentation">apr_status_t apr_get_os_sock(apr_os_sock_t *thesock, apr_socket_t *sock)</a>
  -<li><a href="APR_portability_Routines.html#apr_get_os_thread" target="Documentation">apr_status_t apr_get_os_thread(apr_os_thread_t **thethd, apr_thread_t *thd)</a>
  -<li><a href="APR_portability_Routines.html#apr_get_os_threadkey" target="Documentation">apr_status_t apr_get_os_threadkey(apr_os_threadkey_t *thekey, apr_threadkey_t *key)</a>
  -<li><a href="APR_portability_Routines.html#apr_make_os_sock" target="Documentation">apr_status_t apr_make_os_sock(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont)</a>
  -<li><a href="APR_portability_Routines.html#apr_put_os_dir" target="Documentation">apr_status_t apr_put_os_dir(apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont)</a>
  -<li><a href="APR_portability_Routines.html#apr_put_os_exp_time" target="Documentation">apr_status_t apr_put_os_exp_time(apr_exploded_time_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont)</a>
  -<li><a href="APR_portability_Routines.html#apr_put_os_file" target="Documentation">apr_status_t apr_put_os_file(apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont)</a>
  -<li><a href="APR_portability_Routines.html#apr_put_os_imp_time" target="Documentation">apr_status_t apr_put_os_imp_time(apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont)</a>
  -<li><a href="APR_portability_Routines.html#apr_put_os_lock" target="Documentation">apr_status_t apr_put_os_lock(apr_lock_t **lock, apr_os_lock_t *thelock, apr_pool_t *cont)</a>
  -<li><a href="APR_portability_Routines.html#apr_put_os_sock" target="Documentation">apr_status_t apr_put_os_sock(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont)</a>
  -<li><a href="APR_portability_Routines.html#apr_put_os_thread" target="Documentation">apr_status_t apr_put_os_thread(apr_thread_t **thd, apr_os_thread_t *thethd, apr_pool_t *cont)</a>
  -<li><a href="APR_portability_Routines.html#apr_put_os_threadkey" target="Documentation">apr_status_t apr_put_os_threadkey(apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont)</a>
  +<li><a href="APR_portability_Routines.html#-11" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_portability_Routines.html#-12" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_portability_Routines.html#-13" target="Documentation">(apr_status_t)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-112" target="Documentation">apr_status_t apr_os_file_get(apr_os_file_t *thefile, apr_file_t *file)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-113" target="Documentation">apr_status_t apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-114" target="Documentation">apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-115" target="Documentation">apr_status_t apr_os_lock_get(apr_os_lock_t *oslock, apr_lock_t *lock)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-116" target="Documentation">apr_status_t apr_os_exp_time_get(apr_os_exp_time_t **ostime, apr_exploded_time_t *aprtime)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-117" target="Documentation">apr_status_t apr_os_imp_time_get(apr_os_imp_time_t **ostime, apr_time_t *aprtime)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-118" target="Documentation">apr_status_t apr_os_thread_get(apr_os_thread_t **thethd, apr_thread_t *thd)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-119" target="Documentation">apr_status_t apr_os_threadkey_get(apr_os_threadkey_t *thekey, apr_threadkey_t *key)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-120" target="Documentation">apr_status_t apr_os_file_put(apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-121" target="Documentation">apr_status_t apr_os_dir_put(apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-122" target="Documentation">apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-123" target="Documentation">apr_status_t apr_os_sock_make(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-124" target="Documentation">apr_status_t apr_os_lock_put(apr_lock_t **lock, apr_os_lock_t *thelock, apr_pool_t *cont)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-125" target="Documentation">apr_status_t apr_os_imp_time_put(apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-126" target="Documentation">apr_status_t apr_os_exp_time_put(apr_exploded_time_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont)</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-127" target="Documentation">apr_status_t apr_os_thread_put(apr_thread_t **thd, apr_os_thread_t *thethd,</a>
  +<li><a href="APR_portability_Routines.html#apr_status_t-128" target="Documentation">apr_status_t apr_os_threadkey_put(apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont)</a>
  +</dir><a href="APR_signal_handling.html" target="Documentation"><b>APR signal handling</b></a><br>
  +  <dir>
  +<li><a href="APR_signal_handling.html#apr_signal_init(apr_pool_t" target="Documentation">apr_signal_init(apr_pool_t *pglobal)</a>
  +<li><a href="APR_signal_handling.html#const-3" target="Documentation">const char *apr_signal_get_description(int signum)</a>
   </dir><a href="APR_strings_library.html" target="Documentation"><b>APR strings library</b></a><br>
     <dir>
  -<li><a href="APR_strings_library.html#apr_status_t-14" target="Documentation">apr_status_t apr_tokenize_to_argv(const char *arg_str, char ***argv_out, apr_pool_t *token_context);</a>
  -<li><a href="APR_strings_library.html#apr_strnatcasecmp" target="Documentation">int apr_strnatcasecmp(char const *a, char const *b)</a>
  -<li><a href="APR_strings_library.html#apr_strnatcmp" target="Documentation">int apr_strnatcmp(char const *a, char const *b)</a>
  -<li><a href="APR_strings_library.html#char" target="Documentation">char *apr_pstrdup(apr_pool_t *p, const char *s)</a>
  -<li><a href="APR_strings_library.html#char-2" target="Documentation">char *apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n)</a>
  -<li><a href="APR_strings_library.html#char-3" target="Documentation">char *apr_pstrcat(apr_pool_t *p, ...)</a>
  -<li><a href="APR_strings_library.html#char-4" target="Documentation">char *apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap)</a>
  -<li><a href="APR_strings_library.html#char-5" target="Documentation">char *apr_psprintf(apr_pool_t *p, const char *fmt, ...)</a>
  -<li><a href="APR_strings_library.html#char-6" target="Documentation">char *apr_cpystrn(char *dst, const char *src, size_t dst_size)</a>
  -<li><a href="APR_strings_library.html#char-7" target="Documentation">char *apr_collapse_spaces(char *dest, const char *src)</a>
  +<li><a href="APR_strings_library.html#apr_status_t-136" target="Documentation">apr_status_t apr_tokenize_to_argv(const char *arg_str, char ***argv_out, apr_pool_t *token_context);</a>
  +<li><a href="APR_strings_library.html#char-2" target="Documentation">char *apr_pstrdup(apr_pool_t *p, const char *s)</a>
  +<li><a href="APR_strings_library.html#char-3" target="Documentation">char *apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n)</a>
  +<li><a href="APR_strings_library.html#char-4" target="Documentation">char *apr_pstrcat(apr_pool_t *p, ...)</a>
  +<li><a href="APR_strings_library.html#char-5" target="Documentation">char *apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap)</a>
  +<li><a href="APR_strings_library.html#char-6" target="Documentation">char *apr_psprintf(apr_pool_t *p, const char *fmt, ...)</a>
  +<li><a href="APR_strings_library.html#char-7" target="Documentation">char *apr_cpystrn(char *dst, const char *src, size_t dst_size)</a>
  +<li><a href="APR_strings_library.html#char-8" target="Documentation">char *apr_collapse_spaces(char *dest, const char *src)</a>
  +<li><a href="APR_strings_library.html#int-6" target="Documentation">int apr_strnatcmp(char const *a, char const *b)</a>
  +<li><a href="APR_strings_library.html#int-7" target="Documentation">int apr_strnatcasecmp(char const *a, char const *b)</a>
  +<li><a href="APR_strings_library.html#int-8" target="Documentation">int apr_snprintf(char *buf, size_t len, const char *format, ...)</a>
  +<li><a href="APR_strings_library.html#int-9" target="Documentation">int apr_vsnprintf(char *buf, size_t len, const char *format, va_list ap)</a>
  +</dir><a href="APR_user_id_services.html" target="Documentation"><b>APR user id services</b></a><br>
  +  <dir>
  +<li><a href="APR_user_id_services.html#apr_gid_t" target="Documentation">apr_gid_t </a>
  +<li><a href="APR_user_id_services.html#apr_uid_t" target="Documentation">apr_uid_t </a>
   </dir><a href="Dynamic_Object_Handling.html" target="Documentation"><b>Dynamic Object Handling</b></a><br>
     <dir>
  -<li><a href="Dynamic_Object_Handling.html#apr_dso_error" target="Documentation">const char *apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize)</a>
   <li><a href="Dynamic_Object_Handling.html#apr_dso_handle_sym_t" target="Documentation">apr_dso_handle_sym_t </a>
   <li><a href="Dynamic_Object_Handling.html#apr_dso_handle_t" target="Documentation">apr_dso_handle_t </a>
  -<li><a href="Dynamic_Object_Handling.html#apr_dso_load" target="Documentation">apr_status_t apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx)</a>
  -<li><a href="Dynamic_Object_Handling.html#apr_dso_sym" target="Documentation">apr_status_t apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname)</a>
  -<li><a href="Dynamic_Object_Handling.html#apr_dso_unload" target="Documentation">apr_status_t apr_dso_unload(apr_dso_handle_t *handle)</a>
  +<li><a href="Dynamic_Object_Handling.html#apr_status_t" target="Documentation">apr_status_t apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx)</a>
  +<li><a href="Dynamic_Object_Handling.html#apr_status_t-2" target="Documentation">apr_status_t apr_dso_unload(apr_dso_handle_t *handle)</a>
  +<li><a href="Dynamic_Object_Handling.html#apr_status_t-3" target="Documentation">apr_status_t apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname)</a>
  +<li><a href="Dynamic_Object_Handling.html#const" target="Documentation">const char *apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize)</a>
   </dir><a href="Error_Codes.html" target="Documentation"><b>Error Codes</b></a><br>
     <dir>
  -<li><a href="Error_Codes.html#apr_canonical_error" target="Documentation">int apr_canonical_error(apr_status_t err)</a>
  -<li><a href="Error_Codes.html#apr_strerror" target="Documentation">char *apr_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize)</a>
  +<li><a href="Error_Codes.html#apr_status_t-4" target="Documentation">apr_status_t APR_FROM_OS_ERROR(os_err_type syserr)</a>
  +<li><a href="Error_Codes.html#apr_status_t-5" target="Documentation">apr_status_t apr_get_os_error()</a>
  +<li><a href="Error_Codes.html#apr_status_t-6" target="Documentation">apr_status_t apr_get_netos_error()</a>
  +<li><a href="Error_Codes.html#char" target="Documentation">char *apr_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize)</a>
  +<li><a href="Error_Codes.html#int" target="Documentation">int APR_STATUS_IS_status(apr_status_t statcode)</a>
  +<li><a href="Error_Codes.html#os_err_type" target="Documentation">os_err_type APR_TO_OS_ERROR(apr_status_t statcode)</a>
  +<li><a href="Error_Codes.html#void" target="Documentation">void apr_set_os_error(apr_status_t statcode)</a>
   </dir><a href="Fnmatch_functions.html" target="Documentation"><b>Fnmatch functions</b></a><br>
     <dir>
  -<li><a href="Fnmatch_functions.html#apr_status_t" target="Documentation">apr_status_t apr_fnmatch(const char *pattern, const char *strings, int flags)</a>
  -<li><a href="Fnmatch_functions.html#int-2" target="Documentation">int apr_is_fnmatch(const char *pattern)</a>
  +<li><a href="Fnmatch_functions.html#apr_status_t-47" target="Documentation">apr_status_t apr_fnmatch(const char *pattern, const char *strings, int flags)</a>
  +<li><a href="Fnmatch_functions.html#int-3" target="Documentation">int apr_is_fnmatch(const char *pattern)</a>
   </dir><a href="Hash_Tables.html" target="Documentation"><b>Hash Tables</b></a><br>
     <dir>
   <li><a href="Hash_Tables.html#apr_hash_index_t" target="Documentation">apr_hash_index_t </a>
   <li><a href="Hash_Tables.html#apr_hash_index_t-2" target="Documentation">apr_hash_index_t *apr_hash_first(apr_hash_t *ht)</a>
   <li><a href="Hash_Tables.html#apr_hash_index_t-3" target="Documentation">apr_hash_index_t *apr_hash_next(apr_hash_index_t *hi)</a>
   <li><a href="Hash_Tables.html#apr_hash_t" target="Documentation">apr_hash_t </a>
  -<li><a href="Hash_Tables.html#apr_hash_t-2" target="Documentation">apr_hash_t *apr_make_hash(apr_pool_t *pool)</a>
  -<li><a href="Hash_Tables.html#void" target="Documentation">void apr_hash_set(apr_hash_t *ht, const void *key, apr_size_t klen, const void *val)</a>
  -<li><a href="Hash_Tables.html#void-2" target="Documentation">void *apr_hash_get(apr_hash_t *ht, const void *key, apr_size_t klen)</a>
  -<li><a href="Hash_Tables.html#void-3" target="Documentation">void apr_hash_this(apr_hash_index_t *hi, const void **key, apr_size_t *klen, void **val);</a>
  +<li><a href="Hash_Tables.html#apr_hash_t-2" target="Documentation">apr_hash_t *apr_hash_make(apr_pool_t *pool)</a>
  +<li><a href="Hash_Tables.html#void-3" target="Documentation">void apr_hash_set(apr_hash_t *ht, const void *key, apr_size_t klen, const void *val)</a>
  +<li><a href="Hash_Tables.html#void-4" target="Documentation">void *apr_hash_get(apr_hash_t *ht, const void *key, apr_size_t klen)</a>
  +<li><a href="Hash_Tables.html#void-5" target="Documentation">void apr_hash_this(apr_hash_index_t *hi, const void **key, apr_size_t *klen, void **val);</a>
  +<li><a href="Hash_Tables.html#void-6" target="Documentation">void apr_hash_count(apr_hash_t *ht, apr_size_t *count);</a>
   </dir><a href="Shared_Memory_library.html" target="Documentation"><b>Shared Memory library</b></a><br>
     <dir>
  -<li><a href="Shared_Memory_library.html#apr_get_shm_name" target="Documentation">apr_status_t apr_get_shm_name(apr_shmem_t *c, apr_shm_name_t **name)</a>
  -<li><a href="Shared_Memory_library.html#apr_open_shmem" target="Documentation">apr_status_t apr_open_shmem(apr_shmem_t *c)</a>
  -<li><a href="Shared_Memory_library.html#apr_set_shm_name" target="Documentation">apr_status_t apr_set_shm_name(apr_shmem_t *c, apr_shm_name_t *name)</a>
  -<li><a href="Shared_Memory_library.html#apr_shm_avail" target="Documentation">apr_status_t apr_shm_avail(apr_shmem_t *c, apr_size_t *avail)</a>
  -<li><a href="Shared_Memory_library.html#apr_shm_calloc" target="Documentation">void *apr_shm_calloc(apr_shmem_t *shared, apr_size_t size)</a>
  -<li><a href="Shared_Memory_library.html#apr_shm_destroy" target="Documentation">apr_status_t apr_shm_destroy(apr_shmem_t *m)</a>
  -<li><a href="Shared_Memory_library.html#apr_shm_free" target="Documentation">apr_status_t apr_shm_free(apr_shmem_t *shared, void *entity)</a>
  -<li><a href="Shared_Memory_library.html#apr_shm_init" target="Documentation">apr_status_t apr_shm_init(apr_shmem_t **m, apr_size_t reqsize, const char *file, apr_pool_t *cont)</a>
  -<li><a href="Shared_Memory_library.html#apr_shm_malloc" target="Documentation">void *apr_shm_malloc(apr_shmem_t *c, apr_size_t reqsize)</a>
  +<li><a href="Shared_Memory_library.html#apr_status_t-129" target="Documentation">apr_status_t apr_shm_init(apr_shmem_t **m, apr_size_t reqsize, const char *file, apr_pool_t *cont)</a>
  +<li><a href="Shared_Memory_library.html#apr_status_t-130" target="Documentation">apr_status_t apr_shm_destroy(apr_shmem_t *m)</a>
  +<li><a href="Shared_Memory_library.html#apr_status_t-131" target="Documentation">apr_status_t apr_shm_free(apr_shmem_t *shared, void *entity)</a>
  +<li><a href="Shared_Memory_library.html#apr_status_t-132" target="Documentation">apr_status_t apr_shm_name_get(apr_shmem_t *c, apr_shm_name_t **name)</a>
  +<li><a href="Shared_Memory_library.html#apr_status_t-133" target="Documentation">apr_status_t apr_shm_name_set(apr_shmem_t *c, apr_shm_name_t *name)</a>
  +<li><a href="Shared_Memory_library.html#apr_status_t-134" target="Documentation">apr_status_t apr_shm_open(apr_shmem_t *c)</a>
  +<li><a href="Shared_Memory_library.html#apr_status_t-135" target="Documentation">apr_status_t apr_shm_avail(apr_shmem_t *c, apr_size_t *avail)</a>
  +<li><a href="Shared_Memory_library.html#void-15" target="Documentation">void *apr_shm_malloc(apr_shmem_t *c, apr_size_t reqsize)</a>
  +<li><a href="Shared_Memory_library.html#void-16" target="Documentation">void *apr_shm_calloc(apr_shmem_t *shared, apr_size_t size)</a>
   </dir>
             <a href="to-do.html" target="Documentation"><b>To-Do List</b></a><br>
           </nobr>
  
  
  
  1.4       +3 -1      apr-site/docs/packages.html
  
  Index: packages.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/packages.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- packages.html	2000/12/04 18:14:05	1.3
  +++ packages.html	2001/02/11 02:54:59	1.4
  @@ -25,7 +25,9 @@
   <a href = "APR_lock_library.html">APR lock library</a><br>
   <a href = "APR_memory_allocation.html">APR memory allocation</a><br>
   <a href = "APR_portability_Routines.html">APR portability Routines</a><br>
  +<a href = "APR_signal_handling.html">APR signal handling</a><br>
   <a href = "APR_strings_library.html">APR strings library</a><br>
  +<a href = "APR_user_id_services.html">APR user id services</a><br>
   <a href = "Dynamic_Object_Handling.html">Dynamic Object Handling</a><br>
   <a href = "Error_Codes.html">Error Codes</a><br>
   <a href = "Fnmatch_functions.html">Fnmatch functions</a><br>
  @@ -36,7 +38,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>
  
  
  
  1.4       +1 -1      apr-site/docs/to-do.html
  
  Index: to-do.html
  ===================================================================
  RCS file: /home/cvs/apr-site/docs/to-do.html,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -d -b -w -u -r1.3 -r1.4
  --- to-do.html	2000/12/04 18:14:05	1.3
  +++ to-do.html	2001/02/11 02:54:59	1.4
  @@ -11,7 +11,7 @@
       <hr size=4>
       &copy 2000 [Apache Software Foundation]<br>
       Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
  -    Last Updated: Mon Dec  4 10:10:38 2000
  +    Last Updated: Sat Feb 10 18:42:17 2001
   <br>
     </body>
   </html>