apr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r..@locus.apache.org
Subject 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 index.html master.html packages.html to-do.html
Date Fri, 17 Nov 2000 21:38:16 GMT
rbb         00/11/17 13:38:16

  Added:       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
                        index.html master.html packages.html to-do.html
  Log:
  Add the docs back to the web page, but this time the file names have
  no spaces.
  
  Revision  Changes    Path
  1.1                  apr-site/docs/APR_File_handling.html
  
  Index: APR_File_handling.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR File handling</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR File handling</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <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-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-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-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>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_finfo_t"></a>
    <h1>struct apr_finfo_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_io.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-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-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-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>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="atime"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_time_t atime;</b>
  <dd>
  The time the file was last accessed
  <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>
  <dd>
  The time the file was last changed
  <p><dl>
  </dl></dl>
  
    <a name="device"></a>
      <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?)
  <p><dl>
  </dl></dl>
  
    <a name="filetype"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_filetype_e filetype;</b>
  <dd>
  The type of file.  One of APR_NOFILE, APR_REG, APR_DIR, APR_CHR, 
   APR_BLK, APR_PIPE, APR_LNK, APR_SOCK
  <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>
  <dd>
  The group id that owns the file
  <p><dl>
  </dl></dl>
  
    <a name="inode"></a>
      <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?)
  <p><dl>
  </dl></dl>
  
    <a name="mtime"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_time_t mtime;</b>
  <dd>
  The time the file was last modified
  <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.
  <p><dl>
  </dl></dl>
  
    <a name="size"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_off_t size;</b>
  <dd>
  The size of the file
  <p><dl>
  </dl></dl>
  
    <a name="user"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_uid_t user;</b>
  <dd>
  The user id that owns the file
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_close"></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>
    <dd>
  Close the specified file.
  <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>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_closedir(apr_dir_t *thedir);</b>
    <dd>
  close the specified directory.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	thedir</th><td>the directory descriptor to close.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_create_namedpipe"></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>
    <dd>
  Create a named pipe.
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_create_pipe"></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>
    <dd>
  Create an anonymous pipe.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	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 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%">
  <tr valign=top><th align=right>
  	type</th><td>the file type of the directory entry.
  </td></tr>
  <tr valign=top><th align=right>
  	thedir</th><td>the currently open directory.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_dir_entry_mtime"></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>
    <dd>
  Get the last modified time of the current directory entry.
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_dir_entry_size"></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>
    <dd>
  Get the size of the current directory entry.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	thedir</th><td>the currently open directory.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_dupfile"></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>
    <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
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	old_file</th><td>The file to duplicate.
  </td></tr>
  <tr valign=top><th align=right>
  	p</th><td>The pool to use for the new file.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_eof"></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>
    <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.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	fptr</th><td>The apr file we are testing.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_ferror"></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>
    <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.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	fptr</th><td>The apr file we are testing.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_fgets"></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>
    <dd>
  Get a string from a specified file.
  <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
  </td></tr>
  <tr valign=top><th align=right>
  	thefile</th><td>The file descriptor to read from</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_flush"></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>
    <dd>
  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 descriptor to flush</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_full_read"></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>
    <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, 
       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>
  	thefile</th><td>The file descriptor to read from.
  </td></tr>
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_full_write"></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>
    <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, 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>
  	thefile</th><td>The file descriptor to write to.
  </td></tr>
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_get_dir_filename"></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>
    <dd>
  Get the file name of the current directory entry.
  <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.
  </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.
  </td></tr>
  <tr valign=top><th align=right>
  	key</th><td>The key to use for retreiving data associated with this file.
  </td></tr>
  <tr valign=top><th align=right>
  	file</th><td>The currently open file.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_filename"></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>
    <dd>
  return the file name of the current 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.
  </td></tr>
  <tr valign=top><th align=right>
  	thefile</th><td>The currently open file.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_pipe_timeout"></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>
    <dd>
  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>
  	thepipe</th><td>The pipe we are getting a timeout for.
  </td></tr>
  <tr valign=top><th align=right>
  	timeout</th><td>The current timeout value in microseconds.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_getc"></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>
    <dd>
  get a character from the specified 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>
  </table>
    </dl></dl>
  
  <a name="apr_getfileinfo"></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>
    <dd>
  get the specified file's stats.
  <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.
  </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>
  Returns APR_SUCCESS if canon_name is absolute.  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>
  </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>
  Returns APR_SUCCESS if canon_name is absolute.  Do not trust
   !apr_is_relative to determine if the path is absolute.
  <p><dl>
  </dl></dl>
  
  <a name="apr_is_virtualroot"></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>
    <dd>
  Returns APR_SUCCESS 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.
  <p><dl>
  </dl></dl>
  
  <a name="apr_lstat"></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>
    <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.
  <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.
  </td></tr>
  <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_make_canonical_name"></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>
    <dd>
  Require the trusted_name+child_name result is an absolute product 
  or fail with error for the make and merge canonical name functions.
   Allow that the trusted_name+child_name result may be a relative result
  for the make and merge canonical name functions.
   Require the trusted_name+child_name result is not an absolute path
  or fail with error for the make and merge canonical name functions.
   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.
   If file path elements exist (can stat) then fold the element's name 
  to lowercase for the make and merge canonical name functions.
   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.
   Canonicalize the path and name.
  <p><img src="../images//tip.gif"> A canonical name is a name stipped 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.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	options</th><td>See the APR_CANON_ bit flags documentation for options
  </td></tr>
  <tr valign=top><th align=right>
  	pool</th><td>The context in which to allocate the new_name apr_canon_t</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_make_dir"></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>
    <dd>
  Create a new directory on the file system.
  <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)
  </td></tr>
  <tr valign=top><th align=right>
  	perm</th><td>Permissions for the new direcoty.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>the pool to use.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_open"></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>
    <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)
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_open_stderr"></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>
    <dd>
  open standard error 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 apr file to use as stderr.
  </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_opendir"></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>
    <dd>
  Open the specified directory.
  <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)
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_putc"></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>
    <dd>
  put a character into the specified 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>
  </table>
    </dl></dl>
  
  <a name="apr_puts"></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>
    <dd>
  Put the string into a specified file.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	str</th><td>The string to write.
  </td></tr>
  <tr valign=top><th align=right>
  	thefile</th><td>The file descriptor to write to</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_read"></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>
    <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.
  <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.
  </td></tr>
  <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>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>
  </table>
    </dl></dl>
  
  <a name="apr_remove_dir"></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>
    <dd>
  Remove directory from the file system.
  <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)
  </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%">
  <tr valign=top><th align=right>
  	path</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 use.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_rename_file"></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>
    <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.
  <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)
  </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>
  </table>
    </dl></dl>
  
  <a name="apr_seek"></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>
    <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.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	thefile</th><td>The file descriptor
  </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
  </td></tr>
  <tr valign=top><th align=right>
  	offset</th><td>The offset to move the pointer to.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_set_filedata"></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>
    <dd>
  Set the data associated with the current file.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	cleanup</th><td>The cleanup routine to use when the file is destroyed.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_set_pipe_timeout"></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>
    <dd>
  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>
  	thepipe</th><td>The pipe we are setting a timeout on.
  </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.
  </td></tr>
  <tr valign=top><th align=right>
  	perms</th><td>The permission bits to apply to the file.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_stat"></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>
    <dd>
  get the specified file's stats.  The file is specified by filename, 
  instead of using a pre-opened 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, which is
  never touched if the call fails.
  </td></tr>
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	thefile</th><td>The file descriptor to write to</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%">
  <tr valign=top><th align=right>
  	thefile</th><td>The file descriptor to write to.
  </td></tr>
  <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>On entry, the number of bytes to write; on exit, the number of bytes written.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_writev"></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>
    <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().
  <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.
  </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.
  </td></tr>
  <tr valign=top><th align=right>
  	nbytes</th><td>The number of bytes written.</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_fprintf(apr_file_t *fptr, const char *format, ...);</b>
    <dd>
  Write a string to a file using a printf format.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	fptr</th><td>The file to write to.
  </td></tr>
  <tr valign=top><th align=right>
  	format</th><td>The format string
  ... The values to substitute in the format string</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The number of bytes written<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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_I18N_translation_library.html
  
  Index: APR_I18N_translation_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR I18N translation library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR I18N translation library</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_xlate_close"></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>
    <dd>
  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 codepage translation handle to close</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_xlate_conv_buffer"></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>
    <dd>
  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
  </td></tr>
  <tr valign=top><th align=right>
  	inbuf</th><td>The address of the source buffer
  </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
  </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_conv_byte"></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><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>
  
    <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>
  	inchar</th><td>The single-byte character to convert.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_xlate_conv_char"></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>
    <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.
  <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>
  	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_get_sb"></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>
    <dd>
  Find out whether or not the specified conversion is single-byte-only.
  <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>
  	onoff</th><td>Output: whether or not the conversion is single-byte-only</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_xlate_open"></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>
    <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>
  <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>
  </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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_MD5_Library.html
  
  Index: APR_MD5_Library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR MD5 Library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR MD5 Library</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR MD5 Library.html#apr_md5_ctx_t">struct apr_md5_ctx_t</h3></a>
    <ul>
  <li><a href="APR MD5 Library.html#apr_md5_ctx_t-buffer">buffer[64]</a>
  <li><a href="APR MD5 Library.html#apr_md5_ctx_t-count">count[2]</a>
  <li><a href="APR MD5 Library.html#apr_md5_ctx_t-state">state[4]</a>
  <li><a href="APR MD5 Library.html#apr_md5_ctx_t-xlate">xlate</a>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_md5_ctx_t"></a>
    <h1>struct apr_md5_ctx_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_md5.h</td></tr></tr>
  </table>
  <p>
  MD5 context.<h2>Member Index</h2>
  <ul><li><a href="APR MD5 Library.html#apr_md5_ctx_t-buffer">    unsigned char buffer[64]</a>
  	<li><a href="APR MD5 Library.html#apr_md5_ctx_t-count">    UINT4 count[2]</a>
  	<li><a href="APR MD5 Library.html#apr_md5_ctx_t-state">    UINT4 state[4]</a>
  	<li><a href="APR MD5 Library.html#apr_md5_ctx_t-xlate">    apr_xlate_t *xlate</a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="buffer"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    unsigned char buffer[64];</b>
  <dd>
  input buffer
  <p><dl>
  </dl></dl>
  
    <a name="count"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    UINT4 count[2];</b>
  <dd>
  number of bits, modulo 2^64 (lsb first)
  <p><dl>
  </dl></dl>
  
    <a name="state"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    UINT4 state[4];</b>
  <dd>
  state (ABCD)
  <p><dl>
  </dl></dl>
  
    <a name="xlate"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_xlate_t *xlate;</b>
  <dd>
  translation handle
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Functions</h2>
    <blockquote>
  
  <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_MD5Final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context);</b>
    <dd>
  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>
  	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>
  </table>
    </dl></dl>
  
  <a name="apr_status_t-11"></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>
    <dd>
  Encode a password using an MD5 algorithm
  <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
  </td></tr>
  <tr valign=top><th align=right>
  	nbytes</th><td>The length of the string</td></tr>
  </table>
    </dl></dl>
  
  <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_MD5Init(apr_md5_ctx_t *context);</b>
    <dd>
  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>
  	context</th><td>The MD5 context to initialize.</td></tr>
  </table>
    </dl></dl>
  
  <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_MD5SetXlate(apr_md5_ctx_t *context, apr_xlate_t *xlate);</b>
    <dd>
  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>
  	context</th><td>The MD5 content to set the translation for.
  </td></tr>
  <tr valign=top><th align=right>
  	xlate</th><td>The translation handle to use for this MD5 context</td></tr>
  </table>
    </dl></dl>
  
  <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_MD5Update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen);</b>
    <dd>
  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 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>
  </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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_MMAP_library.html
  
  Index: APR_MMAP_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR MMAP library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR MMAP library</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR MMAP library.html#apr_mmap_t">struct apr_mmap_t</h3></a>
    <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-mm">mm</a>
  <li><a href="APR MMAP library.html#apr_mmap_t-size">size</a>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_mmap_t"></a>
    <h1>struct apr_mmap_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_mmap.h</td></tr></tr>
  </table>
  <p>
  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-mm">    void *mm</a>
  	<li><a href="APR MMAP library.html#apr_mmap_t-size">    size_t size</a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="area"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    area_id area;</b>
  <dd>
  An area ID.  Only valid on BeOS
  <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>
  The pool the mmap structure was allocated out of.
  <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>
  <dd>
  The start of the memory mapped area
  <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>
  <dd>
  The amount of data in the mmap
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_mmap_create"></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>
    <dd>
  Create a new mmap'ed file out of an existing APR file.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	newmmap</th><td>The newly created mmap'ed file.
  </td></tr>
  <tr valign=top><th align=right>
  	file</th><td>The file turn into an mmap.
  </td></tr>
  <tr valign=top><th align=right>
  	offset</th><td>The offset into the file to start the data pointer at.
  </td></tr>
  <tr valign=top><th align=right>
  	size</th><td>The size of the file
  </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>
  <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>
    <dd>
  Remove a mmap'ed.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	mmap</th><td>The mmap'ed file.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_mmap_offset"></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>
    <dd>
  Move the pointer into the mmap'ed file to the specified offset.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	addr</th><td>The pointer to the offset specified.
  </td></tr>
  <tr valign=top><th align=right>
  	mmap</th><td>The mmap'ed file.
  </td></tr>
  <tr valign=top><th align=right>
  	offset</th><td>The offset to move to.</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_Network_library.html
  
  Index: APR_Network_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR Network library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR Network library</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR Network library.html#apr_hdtr_t">struct apr_hdtr_t</h3></a>
    <ul>
  <li><a href="APR Network library.html#apr_hdtr_t-iovec">iovec</a>
  <li><a href="APR Network library.html#apr_hdtr_t-iovec-2">iovec</a>
  <li><a href="APR Network library.html#apr_hdtr_t-numheaders">numheaders</a>
  <li><a href="APR Network library.html#apr_hdtr_t-numtrailers">numtrailers</a>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_hdtr_t"></a>
    <h1>struct apr_hdtr_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_network_io.h</td></tr></tr>
  </table>
  <p>
  A structure to encapsulate headers and trailers for apr_sendfile<h2>Member Index</h2>
  <ul><li><a href="APR Network library.html#apr_hdtr_t-iovec">iovec *headers </a>
  	<li><a href="APR Network library.html#apr_hdtr_t-iovec-2">iovec *trailers </a>
  	<li><a href="APR Network library.html#apr_hdtr_t-numheaders">    int numheaders</a>
  	<li><a href="APR Network library.html#apr_hdtr_t-numtrailers">    int numtrailers</a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="iovec"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>iovec *headers ;</b>
  <dd>
  An iovec to store the headers sent before the file.
  <p><dl>
  </dl></dl>
  
    <a name="iovec"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>iovec *trailers ;</b>
  <dd>
  An iovec to store the trailers sent before the file.
  <p><dl>
  </dl></dl>
  
    <a name="numheaders"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int numheaders;</b>
  <dd>
  number of headers in the iovec
  <p><dl>
  </dl></dl>
  
    <a name="numtrailers"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int numtrailers;</b>
  <dd>
  number of trailers in the iovec
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_accept"></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>
    <dd>
  Accept a new connection request
  <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.
  </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_add_poll_socket"></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 *socket, apr_int16_t event);</b>
    <dd>
  Add a socket to the poll structure.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	socket</th><td>The socket to add to the current poll structure.
  </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>
  </table>
    </dl></dl>
  
  <a name="apr_bind"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_bind(apr_socket_t *sock);</b>
    <dd>
  Bind the socket to its associated port
  <p><img src="../images//tip.gif"> This is 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>
  	sock</th><td>The socket to bind</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_clear_poll_sockets"></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>
    <dd>
  Remove all sockets from the poll structure.
  <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.
  </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>
  </table>
    </dl></dl>
  
  <a name="apr_close_socket"></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>
    <dd>
  Close a tcp socket.
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_connect"></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>
    <dd>
  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>
  	sock</th><td>The socket we wish to use for our side of the connection
  </td></tr>
  <tr valign=top><th align=right>
  	hostname</th><td>The hostname 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_create_socket"></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>
    <dd>
  Create a socket.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	new_sock</th><td>The new socket that has been set up.
  </td></tr>
  <tr valign=top><th align=right>
  	family</th><td>The address family of the socket (e.g., AF_INET).
  </td></tr>
  <tr valign=top><th align=right>
  	type</th><td>The type of the socket (e.g., SOCK_STREAM).
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_create_tcp_socket"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_tcp_socket(apr_socket_t **new_sock, apr_pool_t *cont);</b>
    <dd>
  Create a socket for tcp communication.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	new_sock</th><td>The new socket that has been setup.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_hostname"></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>
    <dd>
  Get name of a machine we are currently connected to.
  <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?
  </td></tr>
  <tr valign=top><th align=right>
  	sock</th><td>The socket to examine.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_inaddr"></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>
    <dd>
  Given a hostname and a port, create an apr_in_addr for it...
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_get_ipaddr"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_ipaddr(char **addr, apr_interface_e which, apr_socket_t *sock);</b>
    <dd>
  Return the IP address associated with an apr socket.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	addr</th><td>The local IP address associated with the socket.
  </td></tr>
  <tr valign=top><th align=right>
  	sock</th><td>The socket to use</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_local_name"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_local_name(struct sockaddr_in **name, apr_socket_t *sock);</b>
    <dd>
  Return the local socket name as a BSD style struct sockaddr_in.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	name</th><td>The local name associated with the socket.
  </td></tr>
  <tr valign=top><th align=right>
  	sock</th><td>The socket to use</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_polldata"></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>
    <dd>
  Return the data associated with the current poll.
  <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.
  </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_get_port"></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_interface_e which, apr_socket_t *sock);</b>
    <dd>
  Return the port associated with a socket.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	port</th><td>The local port this socket is associated with.
  </td></tr>
  <tr valign=top><th align=right>
  	which</th><td>Which interface are we getting the port for?
  </td></tr>
  <tr valign=top><th align=right>
  	sock</th><td>The socket to enquire about.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_remote_name"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_remote_name(struct sockaddr_in **name, apr_socket_t *sock);</b>
    <dd>
  Return the remote socket name as a BSD style struct sockaddr_in.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	name</th><td>The remote name associated with the socket.
  </td></tr>
  <tr valign=top><th align=right>
  	sock</th><td>The socket to use</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_revents"></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>
    <dd>
  Get the return events for the specified socket.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	aprset</th><td>The poll structure we will be using.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_socket_inaddr"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_socket_inaddr(apr_in_addr_t *addr, apr_interface_e which, apr_socket_t *sock);</b>
    <dd>
  Given an apr_socket_t get the apr_in_addr_t for the requested interface
  <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>
  	which</th><td>The interface to return for
  </td></tr>
  <tr valign=top><th align=right>
  	sock</th><td>The apr_socket_t to use</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_socketdata"></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>
    <dd>
  Return the pool associated with the current socket>
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	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_getaddrinfo"></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>
    <dd>
  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 new apr_sockaddr_t.
  </td></tr>
  <tr valign=top><th align=right>
  	hostname</th><td>The hostname or numeric address string to resolve/parse.
  </td></tr>
  <tr valign=top><th align=right>
  	family</th><td>The address family to use, or AF_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_gethostname"></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>
    <dd>
  Get name of the current machine
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	buf</th><td>A buffer to store the hostname in.
  </td></tr>
  <tr valign=top><th align=right>
  	len</th><td>The maximum length of the hostname that can be stored in the
             buffer provided.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_getsocketopt"></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>
    <dd>
  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 query
  </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>
  </td></tr>
  <tr valign=top><th align=right>
  	on</th><td>Socket option returned on the call.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_listen"></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>
    <dd>
  Listen to a bound socket for connections.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	sock</th><td>The socket to listen on
  </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>
  </table>
    </dl></dl>
  
  <a name="apr_mask_poll_socket"></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>
    <dd>
  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>
  	aprset</th><td>The poll structure we will be using.
  </td></tr>
  <tr valign=top><th align=right>
  	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:
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_poll"></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>
    <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>
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	nsds</th><td>The number of sockets we are polling.
  </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>
  </table>
    </dl></dl>
  
  <a name="apr_recv"></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>
  	<table width="85%">
  <tr valign=top><th align=right>
  	sock</th><td>The socket to read the data from.
  </td></tr>
  <tr valign=top><th align=right>
  	buf</th><td>The buffer to store the data in.
  </td></tr>
  <tr valign=top><th align=right>
  	len</th><td>On entry, the number of bytes to receive; on exit, the number
             of bytes received.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_remove_poll_socket"></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>
    <dd>
  Remove a socket from the poll structure.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	sock</th><td>The socket to remove from the current poll structure.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_send"></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>
    <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>
  <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>
  	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_sendfile"></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>
    <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.
  <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
  </td></tr>
  <tr valign=top><th align=right>
  	len</th><td>Number of bytes to send from the file
  </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_sendv"></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>
    <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>
  <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
  </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_set_ipaddr"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_ipaddr(apr_socket_t *sock, apr_interface_e which, const char *addr);</b>
    <dd>
  Associate a socket addr with an apr socket.
  <p><img src="../images//tip.gif"> This does not bind the two together, it is just telling apr 
       that this socket is going to use this address if possible.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	sock</th><td>The socket to use
  </td></tr>
  <tr valign=top><th align=right>
  	which</th><td>Which interface should we set?
  </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>
  </table>
    </dl></dl>
  
  <a name="apr_set_polldata"></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>
    <dd>
  Set the data associated with the current poll.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	cleanup</th><td>The cleanup function</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_set_port"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_port(apr_socket_t *sock, apr_interface_e which, apr_port_t port);</b>
    <dd>
  Associate a port with a socket.
  <p><img src="../images//tip.gif"> This does not bind the two together, it is just telling apr 
       that this socket is going to use this port if possible.  If
       the port is already used, we won't find out about it here.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	sock</th><td>The socket to set.
  </td></tr>
  <tr valign=top><th align=right>
  	which</th><td>Which socket do we want to set the port for?
  </td></tr>
  <tr valign=top><th align=right>
  	port</th><td>The local port this socket will be dealing with.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_set_socketdata"></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>
    <dd>
  Set the pool 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 currently open socket.
  </td></tr>
  <tr valign=top><th align=right>
  	data</th><td>The user data to associate with the socket.
  </td></tr>
  <tr valign=top><th align=right>
  	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_setsocketopt"></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>
    <dd>
  Setup 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 set up.
  </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>
  </td></tr>
  <tr valign=top><th align=right>
  	on</th><td>Are we turning the option on or off.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_setup_poll"></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>
    <dd>
  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>
  	new_poll</th><td>The poll structure to be used.
  </td></tr>
  <tr valign=top><th align=right>
  	num</th><td>The number of socket descriptors to be polled.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to operate on.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_shutdown"></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>
    <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.
  <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>
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_socket_from_file"></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>
    <dd>
  Convert a File type to a socket so that it can be used in a poll operation.
  <p><img src="../images//tip.gif"> 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>
  
    <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.
  </td></tr>
  <tr valign=top><th align=right>
  	file</th><td>the file to mask as a socket.</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_Process_library.html
  
  Index: APR_Process_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR Process library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR Process library</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_check_other_child"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_check_other_child(void);</b>
    <dd>
  Loop through all registered other_children and call the appropriate 
  maintenance function when necessary.
  <p><dl>
  </dl></dl>
  
  <a name="apr_create_process"></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, char *const *args, char **env, apr_procattr_t *attr, apr_pool_t *cont);</b>
    <dd>
  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>
  	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 apr_table_t 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>
  <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>
    <dd>
  Create and initialize a new procattr variable
  <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>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_detach(void);</b>
    <dd>
  Detach the process from the controlling terminal.
  <p><dl>
  </dl></dl>
  
  <a name="apr_fork"></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>
    <dd>
  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>
  	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>
    </dl></dl>
  
  <a name="apr_kill"></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>
    <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="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>
  <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>
    <dd>
  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>
  	pid</th><td>The process to check.
  </td></tr>
  <tr valign=top><th align=right>
  	status</th><td>The status to pass to the maintenance function.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_register_other_child"></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>
    <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="apr_setprocattr_childerr"></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>
    <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.
  <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>
  	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_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_childin"></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>
    <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.
  <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>
  	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>
  	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_childout"></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>
    <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.
  <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>
  	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>
  </table>
    </dl></dl>
  
  <a name="apr_setprocattr_cmdtype"></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>
    <dd>
  Set what type of command the child process will call.
  <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>
  	cmd</th><td>The type of command.  One of:
  <PRE>
             APR_SHELLCMD --  Shell script
             APR_PROGRAM  --  Executable program   (default) 
  </PRE></td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_setprocattr_detach"></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>
    <dd>
  Determine if the chlid should start in detached state.
  <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>
  	detach</th><td>Should the child start in detached state?  Default is no.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_setprocattr_dir"></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>
    <dd>
  Set which directory the child process should start executing in.
  <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>
  	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_io"></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>
    <dd>
  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>
  	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?
  </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_setprocattr_limit"></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>
    <dd>
  Set the Resource Utilization limits when starting a new 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.
  </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>
  </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_unregister_other_child"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_unregister_other_child(void *data);</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.
  <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="apr_wait_all_procs"></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>
    <dd>
  Wait for any current child process to die and return information 
  about that child.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	proc</th><td>Pointer to NULL on entry, will be filled out with child's 
              information
  </td></tr>
  <tr valign=top><th align=right>
  	status</th><td>The returned exit status of the child, if a child process dies
                On platforms that don't support obtaining this information, 
                the status parameter will be returned as APR_ENOTIMPL.
  </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>
  <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>
  <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>
    <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>
  <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
  </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>
  </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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_Random_Functions.html
  
  Index: APR_Random_Functions.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR Random Functions</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR Random Functions</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_generate_random_bytes"></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>
    <dd>
  Generate a string of random bytes.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	buf</th><td>Random bytes go here
  </td></tr>
  <tr valign=top><th align=right>
  	length</th><td>size of the buffer</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_Table_library.html
  
  Index: APR_Table_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR Table library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR Table library</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR Table library.html#apr_array_header_t">struct apr_array_header_t</h3></a>
    <ul>
  <li><a href="APR Table library.html#apr_array_header_t-cont">cont</a>
  <li><a href="APR Table library.html#apr_array_header_t-elt_size">elt_size</a>
  <li><a href="APR Table library.html#apr_array_header_t-elts">elts</a>
  <li><a href="APR Table library.html#apr_array_header_t-nalloc">nalloc</a>
  <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>
  <li><a href="APR Table library.html#apr_table_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_table_t">struct apr_table_t</h3></a>
    <ul>
  <li><a href="APR Table library.html#apr_table_t-a">a</a>
  <li><a href="APR Table library.html#apr_table_t-creator">creator</a>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_array_header_t"></a>
    <h1>struct apr_array_header_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>
  An opaque array type<h2>Member Index</h2>
  <ul><li><a href="APR Table library.html#apr_array_header_t-cont">    apr_pool_t *cont</a>
  	<li><a href="APR Table library.html#apr_array_header_t-elt_size">    int elt_size</a>
  	<li><a href="APR Table library.html#apr_array_header_t-elts">    char *elts</a>
  	<li><a href="APR Table library.html#apr_array_header_t-nalloc">    int nalloc</a>
  	<li><a href="APR Table library.html#apr_array_header_t-nelts">    int nelts</a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="cont"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_pool_t *cont;</b>
  <dd>
  The pool the array is allocated out of
  <p><dl>
  </dl></dl>
  
    <a name="elt_size"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int elt_size;</b>
  <dd>
  The amount of memory allocated for each element of the array
  <p><dl>
  </dl></dl>
  
    <a name="elts"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    char *elts;</b>
  <dd>
  The elements in the array
  <p><dl>
  </dl></dl>
  
    <a name="nalloc"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int nalloc;</b>
  <dd>
  The number of elements allocated in the array
  <p><dl>
  </dl></dl>
  
    <a name="nelts"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int nelts;</b>
  <dd>
  The number of active elements in the array
  <p><dl>
  </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">
      <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) structure for string-content tables.
   The type for each entry in a string-content table<h2>Member Index</h2>
  <ul><li><a href="APR Table library.html#apr_table_entry_t-key">    char *key</a>
  	<li><a href="APR Table library.html#apr_table_entry_t-val">    char *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>    char *val;</b>
  <dd>
  The value for the current table entry
  <p><dl>
  </dl></dl>
  </blockquote>
  <hr size="4">
    <a name="apr_table_t"></a>
    <h1>struct apr_table_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 string-content table type<h2>Member Index</h2>
  <ul><li><a href="APR Table library.html#apr_table_t-a">    apr_array_header_t a</a>
  	<li><a href="APR Table library.html#apr_table_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>
  <h2>Global Variables</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>
  <dd>
  The (opaque) structure for binary-content tables.
   A transparent type for items stored in binary-content tables, and
  possibly elsewhere.
  <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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_Thread_library.html
  
  Index: APR_Thread_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR Thread library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR Thread library</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR Thread library.html#apr_proc_t">struct apr_proc_t</h3></a>
    <ul>
  <li><a href="APR Thread library.html#apr_proc_t-in">in</a>
  <li><a href="APR Thread library.html#apr_proc_t-out">out</a>
  <li><a href="APR Thread library.html#apr_proc_t-pid">pid</a>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_proc_t"></a>
    <h1>struct apr_proc_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_thread_proc.h</td></tr></tr>
  </table>
  <p>
  The APR process type<h2>Member Index</h2>
  <ul><li><a href="APR Thread library.html#apr_proc_t-in">    apr_file_t *in</a>
  	<li><a href="APR Thread library.html#apr_proc_t-out">    apr_file_t *out</a>
  	<li><a href="APR Thread library.html#apr_proc_t-pid">    pid_t pid</a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="in"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_file_t *in;</b>
  <dd>
  Parent's side of pipe to child's stdin
  <p><dl>
  </dl></dl>
  
    <a name="out"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_file_t *out;</b>
  <dd>
  Parent's side of pipe to child's stdout
  <p><dl>
  </dl></dl>
  
    <a name="pid"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    pid_t pid;</b>
  <dd>
  The process ID
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_create_thread"></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>
    <dd>
  Create a new thread of execution
  <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
  </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>
  <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>
    <dd>
  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>
  	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.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_create_threadattr"></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>
    <dd>
  Create and initialize a new threadattr variable
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_delete_thread_private"></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>
    <dd>
  Free the thread private memory
  <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%">
  <tr valign=top><th align=right>
  	new_mem</th><td>The data stored in private memory
  </td></tr>
  <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_threaddata"></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>
    <dd>
  Return the pool associated with 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
  </td></tr>
  <tr valign=top><th align=right>
  	thread</th><td>The currently open thread.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_threadkeydata"></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>
    <dd>
  Return the pool associated with the current threadkey.
  <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
  </td></tr>
  <tr valign=top><th align=right>
  	threadkey</th><td>The currently open threadkey.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_getthreadattr_detach"></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>
    <dd>
  Get the detach mode for this threadattr.
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_set_thread_private"></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>
    <dd>
  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>
  	priv</th><td>The data to be stored in private memory
  </td></tr>
  <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_set_threaddata"></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>
    <dd>
  Return the pool associated with 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 to associate with the thread.
  </td></tr>
  <tr valign=top><th align=right>
  	key</th><td>The key to use for associating the data with the tread
  </td></tr>
  <tr valign=top><th align=right>
  	cleanup</th><td>The cleanup routine to use when the thread is destroyed.
  </td></tr>
  <tr valign=top><th align=right>
  	thread</th><td>The currently open thread.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_set_threadkeydata"></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>
    <dd>
  Return the pool associated with the current threadkey.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	data</th><td>The data to set.
  </td></tr>
  <tr valign=top><th align=right>
  	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>
  
  <a name="apr_setthreadattr_detach"></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>
    <dd>
  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>
  	attr</th><td>The threadattr to affect
  </td></tr>
  <tr valign=top><th align=right>
  	on</th><td>Thread detach state on or off</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_thread_detach"></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>
    <dd>
  detach a thread
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_thread_exit"></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>
    <dd>
  stop the current thread
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	thd</th><td>The thread to stop
  </td></tr>
  <tr valign=top><th align=right>
  	retval</th><td>The return value to pass back to any thread that cares</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_thread_join"></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>
    <dd>
  block until the desired thread stops executing.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	thd</th><td>The thread to join</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_Time_library.html
  
  Index: APR_Time_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR Time library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR Time library</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR Time library.html#apr_exploded_time_t">struct apr_exploded_time_t</h3></a>
    <ul>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_gmtoff">tm_gmtoff</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_hour">tm_hour</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_isdst">tm_isdst</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_mday">tm_mday</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_min">tm_min</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_mon">tm_mon</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_sec">tm_sec</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_usec">tm_usec</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_wday">tm_wday</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_yday">tm_yday</a>
  <li><a href="APR Time library.html#apr_exploded_time_t-tm_year">tm_year</a>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_exploded_time_t"></a>
    <h1>struct apr_exploded_time_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_time.h</td></tr></tr>
  </table>
  <p>
  a structure similar to ANSI struct tm with the following differences:
   - tm_usec isn't an ANSI field
   - tm_gmtoff isn't an ANSI field (it's a bsdism)<h2>Member Index</h2>
  <ul><li><a href="APR Time library.html#apr_exploded_time_t-tm_gmtoff">    apr_int32_t tm_gmtoff</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_hour">    apr_int32_t tm_hour</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_isdst">    apr_int32_t tm_isdst</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_mday">    apr_int32_t tm_mday</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_min">    apr_int32_t tm_min</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_mon">    apr_int32_t tm_mon</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_sec">    apr_int32_t tm_sec</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_usec">    apr_int32_t tm_usec</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_wday">    apr_int32_t tm_wday</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_yday">    apr_int32_t tm_yday</a>
  	<li><a href="APR Time library.html#apr_exploded_time_t-tm_year">    apr_int32_t tm_year</a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="tm_gmtoff"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_gmtoff;</b>
  <dd>
  seconds east of UTC
  <p><dl>
  </dl></dl>
  
    <a name="tm_hour"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_hour;</b>
  <dd>
  (0-23) hours past midnight
  <p><dl>
  </dl></dl>
  
    <a name="tm_isdst"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_isdst;</b>
  <dd>
  daylight saving time
  <p><dl>
  </dl></dl>
  
    <a name="tm_mday"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_mday;</b>
  <dd>
  (1-31) day of the month
  <p><dl>
  </dl></dl>
  
    <a name="tm_min"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_min;</b>
  <dd>
  (0-59) minutes past tm_hour
  <p><dl>
  </dl></dl>
  
    <a name="tm_mon"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_mon;</b>
  <dd>
  (0-11) month of the year
  <p><dl>
  </dl></dl>
  
    <a name="tm_sec"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_sec;</b>
  <dd>
  (0-61) seconds past tm_min
  <p><dl>
  </dl></dl>
  
    <a name="tm_usec"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_usec;</b>
  <dd>
  microseconds past tm_sec
  <p><dl>
  </dl></dl>
  
    <a name="tm_wday"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_wday;</b>
  <dd>
  (0-6) days since sunday
  <p><dl>
  </dl></dl>
  
    <a name="tm_yday"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_yday;</b>
  <dd>
  (0-365) days since jan 1
  <p><dl>
  </dl></dl>
  
    <a name="tm_year"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_int32_t tm_year;</b>
  <dd>
  year since 1900
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_ansi_time_to_apr_time"></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>
    <dd>
  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>
  	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>
  <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>
    <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
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	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_explode_gmt"></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>
    <dd>
  convert a time to its human readable components in GMT timezone
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	result</th><td>the exploded time
  </td></tr>
  <tr valign=top><th align=right>
  	input</th><td>the time to explode</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_explode_localtime"></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>
    <dd>
  convert a time to its human readable components in local timezone
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	result</th><td>the exploded time
  </td></tr>
  <tr valign=top><th align=right>
  	input</th><td>the time to explode</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_implode_time"></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>
    <dd>
  Convert time value from human readable format to number of seconds 
  since epoch
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	result</th><td>the resulting imploded time
  </td></tr>
  <tr valign=top><th align=right>
  	input</th><td>the input exploded time</td></tr>
  </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>
  <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>
    <dd>
  apr_rfc822_date formats dates in the RFC822
  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>
  	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_sleep"></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><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>
  	t</th><td>desired amount of time to sleep.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_strftime"></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>
    <dd>
  formats the exploded time according to the format specified
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	s</th><td>string to write to
  </td></tr>
  <tr valign=top><th align=right>
  	retsize</th><td>The length of the returned string
  </td></tr>
  <tr valign=top><th align=right>
  	max</th><td>The maximum length of the string
  </td></tr>
  <tr valign=top><th align=right>
  	format</th><td>The format for the time string
  </td></tr>
  <tr valign=top><th align=right>
  	tm</th><td>The time to convert</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_UUID_Handling.html
  
  Index: APR_UUID_Handling.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR UUID Handling</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR UUID Handling</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <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_parse_uuid(apr_uuid_t *uuid, const char *uuid_str);</b>
    <dd>
  Parse a standard-format string into a UUID
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	uuid</th><td>The resulting UUID
  </td></tr>
  <tr valign=top><th align=right>
  	uuid_str</th><td>The formatted UUID</td></tr>
  </table>
    </dl></dl>
  
  <a name="void-12"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_get_uuid(apr_uuid_t *uuid);</b>
    <dd>
  Generate and return a (new) UUID
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	uuid</th><td>The resulting UUID</td></tr>
  </table>
    </dl></dl>
  
  <a name="void-13"></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>
    <dd>
  Format a UUID into a string, following the standard format
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	buffer</th><td>The buffer to place the formatted UUID string into. It must
                be at least APR_UUID_FORMATTED_LENGTH + 1 bytes long to hold
                the formatted UUID and a null terminator
  </td></tr>
  <tr valign=top><th align=right>
  	uuid</th><td>The UUID to format</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_command_arguments.html
  
  Index: APR_command_arguments.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR command arguments</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR command arguments</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR command arguments.html#apr_getopt_t">struct apr_getopt_t</h3></a>
    <ul>
  <li><a href="APR command arguments.html#apr_getopt_t-argc">argc</a>
  <li><a href="APR command arguments.html#apr_getopt_t-const">const</a>
  <li><a href="APR command arguments.html#apr_getopt_t-cont">cont</a>
  <li><a href="APR command arguments.html#apr_getopt_t-err">err</a>
  <li><a href="APR command arguments.html#apr_getopt_t-ind">ind</a>
  <li><a href="APR command arguments.html#apr_getopt_t-opt">opt</a>
  <li><a href="APR command arguments.html#apr_getopt_t-place">place</a>
  <li><a href="APR command arguments.html#apr_getopt_t-reset">reset</a>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_getopt_t"></a>
    <h1>struct apr_getopt_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_getopt.h</td></tr></tr>
  </table>
  <p>
  Structure to store command line argument information.<h2>Member Index</h2>
  <ul><li><a href="APR command arguments.html#apr_getopt_t-argc">    int argc</a>
  	<li><a href="APR command arguments.html#apr_getopt_t-const">    char *const</a>
  	<li><a href="APR command arguments.html#apr_getopt_t-cont">    apr_pool_t *cont</a>
  	<li><a href="APR command arguments.html#apr_getopt_t-err">    int err</a>
  	<li><a href="APR command arguments.html#apr_getopt_t-ind">    int ind</a>
  	<li><a href="APR command arguments.html#apr_getopt_t-opt">    int opt</a>
  	<li><a href="APR command arguments.html#apr_getopt_t-place">    char const* place</a>
  	<li><a href="APR command arguments.html#apr_getopt_t-reset">    int reset</a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="argc"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int argc;</b>
  <dd>
  count of arguments
  <p><dl>
  </dl></dl>
  
    <a name="const"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    char *const;</b>
  <dd>
  array of pointers to arguments
  <p><dl>
  </dl></dl>
  
    <a name="cont"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_pool_t *cont;</b>
  <dd>
  context for processing
  <p><dl>
  </dl></dl>
  
    <a name="err"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int err;</b>
  <dd>
  if error message should be printed
  <p><dl>
  </dl></dl>
  
    <a name="ind"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int ind;</b>
  <dd>
  index into parent argv vector
  <p><dl>
  </dl></dl>
  
    <a name="opt"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int opt;</b>
  <dd>
  character checked for validity
  <p><dl>
  </dl></dl>
  
    <a name="place"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    char const* place;</b>
  <dd>
  argument associated with option
  <p><dl>
  </dl></dl>
  
    <a name="reset"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int reset;</b>
  <dd>
  reset getopt
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Variables</h2>
    <blockquote>
  
    <a name="has_arg"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int has_arg;</b>
  <dd>
  0 for no arg, 1 for arg
  <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 name of the long argument (sans "--")
  <p><dl>
  </dl></dl>
  
    <a name="val"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    int val;</b>
  <dd>
  Either the short option char that this option corresponds to 
  or a unique integer > 255
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Functions</h2>
    <blockquote>
  
  <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_initopt(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)
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	cont</th><td>The pool to operate on
  </td></tr>
  <tr valign=top><th align=right>
  	os</th><td>The options structure created for apr_getopt()
  </td></tr>
  <tr valign=top><th align=right>
  	argc</th><td>The number of arguments to parse
  </td></tr>
  <tr valign=top><th align=right>
  	argv</th><td>The array of arguments to parse</td></tr>
  </table>
    </dl></dl>
  
  <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_getopt(apr_getopt_t *os, const char *opts, char *optch, const char **optarg);</b>
    <dd>
  Parse the options initialized by apr_initopt().
  <p><img src="../images//tip.gif"> There are four potential status values on exit. They are:
  <PRE>
              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>
  
    <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()
  </td></tr>
  <tr valign=top><th align=right>
  	opts</th><td>A string of characters that are acceptable options to the 
                program.  Characters followed by ":" are required to have an 
                option associated
  </td></tr>
  <tr valign=top><th align=right>
  	optch</th><td>The next option character parsed
  </td></tr>
  <tr valign=top><th align=right>
  	optarg</th><td>The argument following the option character:</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_status_t-4"></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 char *opts, const apr_getopt_long_t *longopts, int *optval, const char **optarg) ;</b>
    <dd>
  Parse the options initialized by apr_initopt(), accepting long
  options beginning with "--" in addition to single-character
  options beginning with "-" (which are passed along to apr_getopt).
  Long options are accepted in both "--foo bar" and well as
  "--foo=bar" format
  End of argument processing if we encounter "--" or any option that
  doesn't start with "-" or "--".
  <p><img src="../images//tip.gif"> There are four potential status values on exit.   They are:
  <PRE>
              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>
  
    <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()
  </td></tr>
  <tr valign=top><th align=right>
  	opts</th><td>A string of acceptable single-character options to the
                  program.  Characters followed by ":" are required to have
                  an argument associated
  </td></tr>
  <tr valign=top><th align=right>
  	longopts</th><td>A pointer to an array of apr_long_option_t structures, which
                  can be initialized with { "name", has_args, val }.  has_args
                  is nonzero if the option requires an argument.  A structure
                  with a NULL name terminates the list
  </td></tr>
  <tr valign=top><th align=right>
  	optval</th><td>The next option character parsed, or the value of "optval"
                  from the appropriate apr_long_option_t structure if
                  the next option is a long option.
  </td></tr>
  <tr valign=top><th align=right>
  	optarg</th><td>The argument following the option, if any</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_general-purpose_library.html
  
  Index: APR_general-purpose_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR general-purpose library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR general-purpose library</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <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_validate_password(const char *passwd, const char *hash);</b>
    <dd>
  Validate any password encypted with any algorithm that APR understands
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	passwd</th><td>The password to validate
  </td></tr>
  <tr valign=top><th align=right>
  	hash</th><td>The password to validate against</td></tr>
  </table>
    </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_getpass(const char *prompt, char *pwbuf, size_t *bufsize);</b>
    <dd>
  Display a prompt and read in the password from stdin.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	prompt</th><td>The prompt to display
  </td></tr>
  <tr valign=top><th align=right>
  	pwbuf</th><td>Where to store the password
  </td></tr>
  <tr valign=top><th align=right>
  	bufsize</th><td>The length of the password string.</td></tr>
  </table>
    </dl></dl>
  
  <a name="const"></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>
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	pathname</th><td>The path to get the final element of</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>the final element of the path<p></dl></dl>
  
  <a name="int-3"></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>
  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
  %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
  mean that the ANSI-style %p (output a void * in hex format) won't
  work as expected at all, but that seems to be a fair trade-off
  for the increased robustness of having printf-warnings work.
  Additionally, apr_vformatter allows for arbitrary output methods
  using the apr_vformatter_buff and flush_func.
  The apr_vformatter_buff has two elements curpos and endpos.
  curpos is where apr_vformatter will write the next byte of output.
  It proceeds writing output to curpos, and updating curpos, until
  either the end of output is reached, or curpos == endpos (i.e. the
  buffer is full).
  If the end of output is reached, apr_vformatter returns the
  number of bytes written.
  When the buffer is full, the flush_func is called.  The flush_func
  can return -1 to indicate that no further output should be attempted,
  and apr_vformatter will return immediately with -1.  Otherwise
  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
  example, it's possible when the output exactly matches the buffer
  space available that curpos == endpos will be true when
  apr_vformatter returns.
  apr_vformatter does not call out to any other code, it is entirely
  self-contained.  This allows the callers to do things which are
  otherwise "unsafe".  For example, apr_psprintf uses the "scratch"
  space at the unallocated end of a block, and doesn't actually
  complete the allocation until apr_vformatter returns.  apr_psprintf
  would be completely broken if apr_vformatter were to call anything
  that used a apr_pool_t.  Similarly http_bprintf() uses the "scratch"
  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>
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	flush_func</th><td>The function to call when the buffer is full
  </td></tr>
  <tr valign=top><th align=right>
  	c</th><td>The buffer to write to
  </td></tr>
  <tr valign=top><th align=right>
  	fmt</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>
  
  <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>
  
  <a name="void-4"></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>
    <dd>
  Register a process to be killed when a pool dies.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	a</th><td>The pool to use to define the processes lifetime
  </td></tr>
  <tr valign=top><th align=right>
  	pid</th><td>The process to register
  </td></tr>
  <tr valign=top><th align=right>
  	how</th><td>How to kill the process, one of:
  <PRE>
          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>
  </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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_lock_library.html
  
  Index: APR_lock_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR lock library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR lock library</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_child_init_lock"></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>
    <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><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>
  <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>
    <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
       only guaranteed to lock processes.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	lock</th><td>The newly created lock structure.
  </td></tr>
  <tr valign=top><th align=right>
  	type</th><td>The type of lock to create, one of:
  <PRE>
             APR_MUTEX
             APR_READWRITE
  </PRE>
  </td></tr>
  <tr valign=top><th align=right>
  	scope</th><td>The scope of the lock to create, one of:
  <PRE>
             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>
  </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.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to operate on.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_destroy_lock"></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>
    <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.
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_get_lockdata"></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>
    <dd>
  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 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>
  <tr valign=top><th align=right>
  	data</th><td>The user data associated with the lock.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_lock"></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>
    <dd>
  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 set.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_set_lockdata"></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>
    <dd>
  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 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>
  
  <a name="apr_unlock"></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>
    <dd>
  Unlock 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 reset.</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_memory_allocation.html
  
  Index: APR_memory_allocation.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR memory allocation</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR memory allocation</h2>
    <b>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR memory allocation.html#apr_pool_t">struct apr_pool_t</h3></a>
    <ul>
  <li><a href="APR memory allocation.html#apr_pool_t-allocation_list">allocation_list</a>
  <li><a href="APR memory allocation.html#apr_pool_t-apr_pool_t">apr_pool_t</a>
  <li><a href="APR memory allocation.html#apr_pool_t-datastruct">datastruct</a>
  <li><a href="APR memory allocation.html#apr_pool_t-first">first</a>
  <li><a href="APR memory allocation.html#apr_pool_t-free_first_avail">free_first_avail</a>
  <li><a href="APR memory allocation.html#apr_pool_t-int">int</a>
  <li><a href="APR memory allocation.html#apr_pool_t-last">last</a>
  </ul>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR memory allocation.html#apr_pool_t-apr_pool_t">struct apr_pool_t</h3></a>
    <ul>
  </ul>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR memory allocation.html#apr_pool_t-cleanup">struct cleanup</h3></a>
    <ul>
  </ul>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR memory allocation.html#apr_pool_t-process_chain">struct process_chain</h3></a>
    <ul>
  </ul>
  <h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
    <a href="APR memory allocation.html#process_chain">struct process_chain</h3></a>
    <ul>
  <li><a href="APR memory allocation.html#process_chain-pid">pid</a>
  <li><a href="APR memory allocation.html#process_chain-process_chain">process_chain</a>
  </ul>
  
  </b>
  <hr size="4">
    <a name="apr_pool_t"></a>
    <h1>struct apr_pool_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_general.h</td></tr></tr>
  </table>
  <p>
  The memory allocation structure<h2>Member Index</h2>
  <ul><li><a href="APR memory allocation.html#apr_pool_t-allocation_list">    void *allocation_list</a>
  	<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-datastruct">datastruct *prog_data </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-last">    union block_hdr *last</a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="allocation_list"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    void *allocation_list;</b>
  <dd>
  The allocation list if using malloc
  <p><dl>
  </dl></dl>
  
    <a name="apr_pool_t"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_pool_t *joined ;</b>
  <dd>
  a list of joined pools
  <p><dl>
  </dl></dl>
  
    <a name="datastruct"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>datastruct *prog_data ;</b>
  <dd>
  A place to hand user data associated with this pool
  <p><dl>
  </dl></dl>
  
    <a name="first"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    union block_hdr *first;</b>
  <dd>
  The first block in this pool.
  <p><dl>
  </dl></dl>
  
    <a name="free_first_avail"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    char *free_first_avail;</b>
  <dd>
  The first free byte in this pool
  <p><dl>
  </dl></dl>
  
    <a name="last"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    union block_hdr *last;</b>
  <dd>
  The last block in this pool.
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Class Methods</h2>
  <blockquote>
  
  <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>
    <dd>
  A function to control how pools behave when they receive ENOMEM
  <p><dl>
  </dl></dl>
  </blockquote>
  <hr size="4">
    <a name="apr_pool_t-apr_pool_t"></a>
    <h1>struct apr_pool_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_general.h</td></tr></tr>
  </table>
  <p>
  The parent pool of this pool<hr size="4">
    <a name="apr_pool_t-cleanup"></a>
    <h1>struct cleanup</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_general.h</td></tr></tr>
  </table>
  <p>
  The list of cleanups to run on pool cleanup.<hr size="4">
    <a name="apr_pool_t-process_chain"></a>
    <h1>struct process_chain</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_general.h</td></tr></tr>
  </table>
  <p>
  A list of processes to kill when this pool is cleared<hr size="4">
    <a name="process_chain"></a>
    <h1>struct process_chain</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_pools.h</td></tr></tr>
  </table>
  <p>
  A list of processes<h2>Member Index</h2>
  <ul><li><a href="APR memory allocation.html#process_chain-pid">    apr_proc_t *pid</a>
  	<li><a href="APR memory allocation.html#process_chain-process_chain">process_chain *next </a>
  	</ul><h2>Class Variables</h2>
  <blockquote>
  
    <a name="pid"></a>
      <dl><dt>
  	<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>    apr_proc_t *pid;</b>
  <dd>
  The process ID
  <p><dl>
  </dl></dl>
  
    <a name="process_chain"></a>
      <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>
            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>
       The next process in the list
  <p><dl>
  </dl></dl>
  </blockquote>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_create_pool"></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>
    <dd>
  Create a new pool.
  <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.
  </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>
  </table>
    </dl></dl>
  
  <a name="apr_get_userdata"></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>
    <dd>
  Return the data associated with the current 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>
  </table>
    </dl></dl>
  
  <a name="apr_init_alloc"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_init_alloc(void);</b>
    <dd>
  Setup 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_initialize.
  <p><dl>
  </dl></dl>
  
  <a name="apr_initialize"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_initialize(void);</b>
    <dd>
  Setup any APR internal data structures.  This MUST be the first function 
  called for any APR program.
  <p><dl>
  </dl></dl>
  
  <a name="apr_pool_t"></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>
    <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 with an
       error.
  <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
  </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>
  </table>
    <dt><b>Return Value</b>
    <dd>The new sub-pool<p></dl></dl>
  
  <a name="apr_set_abort"></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>
    <dd>
  Set the APR_ABORT function.
  <p><img src="../images//tip.gif"> This is in for backwards compatability.  If the program using
       APR wants APR to exit on a memory allocation error, then this
       function should be called to set the function to use in order
       to actually exit the program.  If this function is not called,
       then APR will return an error and expect the calling program to
       deal with the error accordingly.
  <p><dl>
  </dl></dl>
  
  <a name="apr_set_userdata"></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>
    <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
       life span as the pool it is being attached to.
       Users of APR must take EXTREME care when choosing a key to
       use for their data.  It is possible to accidentally overwrite
       data by choosing a key that another part of the program is using
       It is advised that steps are taken to ensure that a unique
       key is used at all times.
  <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 pool.
  </td></tr>
  <tr valign=top><th align=right>
  	key</th><td>The key to use for association
  </td></tr>
  <tr valign=top><th align=right>
  	cleanup</th><td>The cleanup program to use to cleanup the data;
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The current pool.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_size_t"></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>
    <dd>
  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>
  	p</th><td>The pool to inspect</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>
  
  <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_run_cleanup(apr_pool_t *p, void *data, apr_status_t (*cleanup) (void *));</b>
    <dd>
  Run the specified cleanup function immediately and unregister it
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool remove the cleanup from
  </td></tr>
  <tr valign=top><th align=right>
  	data</th><td>The data to remove from cleanup
  </td></tr>
  <tr valign=top><th align=right>
  	cleanup</th><td>The function to remove from cleanup</td></tr>
  </table>
    </dl></dl>
  
  <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_null_cleanup(void *data);</b>
    <dd>
  An empty cleanup function
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	data</th><td>The data to cleanup</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_strerror"></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>
  Return a human readable string describing the specified error.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	statcode</th><td>The error code the get a string for.
  </td></tr>
  <tr valign=top><th align=right>
  	buf</th><td>A buffer to hold the error string.
  </td></tr>
  <tr valign=top><th align=right>
  	bufsize</th><td>Size of the buffer to hold the string.</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="apr_terminate"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_terminate(void);</b>
    <dd>
  Tear down any APR internal data structures which aren't torn down 
  automatically.
  <p><img src="../images//tip.gif"> An APR program must call this function at termination once it 
       has stopped using APR services.
  <p><dl>
  </dl></dl>
  
  <a name="int-6"></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>
    <dd>
  Determine if pool a is an ancestor of pool b
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	a</th><td>The pool to search
  </td></tr>
  <tr valign=top><th align=right>
  	b</th><td>The pool to search for</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>True if a is an ancestor of b, NULL is considered an ancestor
          of all pools.<p></dl></dl>
  
  <a name="void-10"></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>
    <dd>
  remove a previously registered cleanup function
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool remove the cleanup from
  </td></tr>
  <tr valign=top><th align=right>
  	data</th><td>The data to remove from cleanup
  </td></tr>
  <tr valign=top><th align=right>
  	cleanup</th><td>The function to remove from cleanup</td></tr>
  </table>
    </dl></dl>
  
  <a name="void-11"></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-5"></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-6"></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-7"></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
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	c</th><td>The pool to allocate out of
  </td></tr>
  <tr valign=top><th align=right>
  	reqsize</th><td>The amount of memory to allocate</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The allocated memory<p></dl></dl>
  
  <a name="void-8"></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>
    <dd>
  Allocate a block of memory from a pool and set all of the memory to 0
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool to allocate out of
  </td></tr>
  <tr valign=top><th align=right>
  	size</th><td>The amount of memory to allocate</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The allocated memory<p></dl></dl>
  
  <a name="void-9"></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>
    <dd>
  Register a function to be called when a pool is cleared or destroyed
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool register the cleanup with
  </td></tr>
  <tr valign=top><th align=right>
  	data</th><td>The data to pass to the cleanup function.
  </td></tr>
  <tr valign=top><th align=right>
  	plain_cleanup</th><td>The function to call when the pool is cleared 
                       or destroyed
  </td></tr>
  <tr valign=top><th align=right>
  	child_cleanup</th><td>The function to call when a child process is created</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_portability_Routines.html
  
  Index: APR_portability_Routines.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR portability Routines</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR portability Routines</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_get_os_dir"></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>
    <dd>
  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>
  	thedir</th><td>The os specific dir we are converting to
  </td></tr>
  <tr valign=top><th align=right>
  	dir</th><td>The apr dir to convert.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_os_exp_time"></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>
    <dd>
  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>
  	ostime</th><td>the native time format
  </td></tr>
  <tr valign=top><th align=right>
  	aprtime</th><td>the time to convert</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_os_file"></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>
    <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.
  <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
  </td></tr>
  <tr valign=top><th align=right>
  	file</th><td>The apr file to convert.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_os_imp_time"></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>
    <dd>
  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>
  	ostime</th><td>the native time format
  </td></tr>
  <tr valign=top><th align=right>
  	aprtimethe</th><td>time to convert</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_os_lock"></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>
    <dd>
  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>
  	oslock</th><td>The os specific lock we are converting to.
  </td></tr>
  <tr valign=top><th align=right>
  	lock</th><td>The apr lock to convert.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_os_sock"></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>
    <dd>
  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>
  	thesock</th><td>The socket to convert.
  </td></tr>
  <tr valign=top><th align=right>
  	sock</th><td>The os specifc equivelant of the apr socket..</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_os_thread"></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>
    <dd>
  convert the thread to os specific type from apr type.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	thethd</th><td>The apr thread to convert
  </td></tr>
  <tr valign=top><th align=right>
  	thd</th><td>The os specific thread we are converting to</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_get_os_threadkey"></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>
    <dd>
  convert the thread private memory key to os specific type from an apr type.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	thekey</th><td>The apr handle we are converting from.
  </td></tr>
  <tr valign=top><th align=right>
  	key</th><td>The os specific handle we are converting to.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_put_os_dir"></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>
    <dd>
  convert the dir from os specific type to apr type.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	dir</th><td>The apr dir we are converting to.
  </td></tr>
  <tr valign=top><th align=right>
  	thedir</th><td>The os specific dir to convert
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use when creating to apr directory.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_put_os_exp_time"></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>
    <dd>
  Put the exploded time in the APR format.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	aprtime</th><td>the APR time format
  </td></tr>
  <tr valign=top><th align=right>
  	ostime</th><td>the time to convert
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>the pool to use if necessary</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_put_os_file"></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>
    <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.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	thefile</th><td>The os specific file to convert
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use if it is needed.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_put_os_imp_time"></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>
    <dd>
  Put the imploded time in the APR format.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	aprtime</th><td>the APR time format
  </td></tr>
  <tr valign=top><th align=right>
  	ostime</th><td>the time to convert
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>the pool to use if necessary</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_put_os_lock"></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>
    <dd>
  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>
  	lock</th><td>The apr lock we are converting to.
  </td></tr>
  <tr valign=top><th align=right>
  	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 it is needed.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_put_os_sock"></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>
    <dd>
  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>
  	sock</th><td>The pool to use.
  </td></tr>
  <tr valign=top><th align=right>
  	thesock</th><td>The socket to convert to.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The socket we are converting to an apr type.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_put_os_thread"></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>
    <dd>
  convert the thread from os specific type to apr type.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	thd</th><td>The apr thread we are converting to.
  </td></tr>
  <tr valign=top><th align=right>
  	thethd</th><td>The os specific thread to convert
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use if it is needed.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_put_os_threadkey"></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>
    <dd>
  convert the thread private memory key from os specific type to apr type.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	key</th><td>The apr handle we are converting to.
  </td></tr>
  <tr valign=top><th align=right>
  	thekey</th><td>The os specific handle to convert
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use if it is needed.</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/APR_strings_library.html
  
  Index: APR_strings_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- APR strings library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: APR strings library</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <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_tokenize_to_argv(const char *arg_str, char ***argv_out, apr_pool_t *token_context);;</b>
    <dd>
  Convert the arguments to a program from one string to an array of 
  strings term inated by a NULL
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	str</th><td>The arguments to convert
  </td></tr>
  <tr valign=top><th align=right>
  	argv_out</th><td>Output location.  This is a pointer to an array of strings.
  </td></tr>
  <tr valign=top><th align=right>
  	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>
  	The</th><td>first string to compare
  </td></tr>
  <tr valign=top><th align=right>
  	The</th><td>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>
  <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>
    <dd>
  duplicate a string into memory allocated out of a pool
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool to allocate out of
  </td></tr>
  <tr valign=top><th align=right>
  	s</th><td>The string to allocate</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The new string<p></dl></dl>
  
  <a name="char-2"></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>
    <dd>
  duplicate the first n characters of a string into memory allocated 
  out of a pool; the new string will be '\0'-terminated
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool to allocate out of
  </td></tr>
  <tr valign=top><th align=right>
  	s</th><td>The string to allocate
  </td></tr>
  <tr valign=top><th align=right>
  	n</th><td>The number of characters to duplicate</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The new string<p></dl></dl>
  
  <a name="char-3"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pstrcat(apr_pool_t *p, ...);</b>
    <dd>
  Concatenate multiple strings, allocating memory out a pool
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool to allocate out of
  ... The strings to concatenate.  The final string must be NULL</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The new string<p></dl></dl>
  
  <a name="char-4"></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>
    <dd>
  printf-style style printing routine.  The data is output to a string 
  allocated from a pool
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool to allocate out of
  </td></tr>
  <tr valign=top><th align=right>
  	fmt</th><td>The format of the string
  </td></tr>
  <tr valign=top><th align=right>
  	ap</th><td>The arguments to use while printing the data</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The new string<p></dl></dl>
  
  <a name="char-5"></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>
    <dd>
  printf-style style printing routine.  The data is output to a string 
  allocated from a pool
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	p</th><td>The pool to allocate out of
  </td></tr>
  <tr valign=top><th align=right>
  	fmt</th><td>The format of the string
  ... The arguments to use while printing the data</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The new string<p></dl></dl>
  
  <a name="char-6"></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>
  <p><img src="../images//tip.gif">  
  <PRE>
  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
           into 8k blocks.
        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>
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	dst</th><td>The destination string
  </td></tr>
  <tr valign=top><th align=right>
  	src</th><td>The source string
  </td></tr>
  <tr valign=top><th align=right>
  	dst_size</th><td>The number of characters to copy</td></tr>
  </table>
    </dl></dl>
  
  <a name="char-7"></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>
    <dd>
  Strip spaces from a string
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	dest</th><td>The destination string.  It is okay to modify the string
              in place.  Namely dest == src
  </td></tr>
  <tr valign=top><th align=right>
  	src</th><td>The string to rid the spaces from.</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/Dynamic_Object_Handling.html
  
  Index: Dynamic_Object_Handling.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- Dynamic Object Handling</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: Dynamic Object Handling</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_dso_error"></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>
    <dd>
  Report more information when a DSO function fails.
  <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
  </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>
  
  <a name="apr_dso_load"></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>
    <dd>
  Load 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>
  </table>
    </dl></dl>
  
  <a name="apr_dso_sym"></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>
    <dd>
  Load a symbol from a DSO handle.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	ressym</th><td>Location to store the loaded symbol
  </td></tr>
  <tr valign=top><th align=right>
  	handle</th><td>handle to load from.
  </td></tr>
  <tr valign=top><th align=right>
  	symname</th><td>Name of the symbol to load.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_dso_unload"></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>
    <dd>
  Close a DSO library.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	handle</th><td>handle to close.</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/Error_Codes.html
  
  Index: Error_Codes.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- Error Codes</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: Error Codes</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_canonical_error"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_canonical_error(apr_status_t err);</b>
    <dd>
  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.
  <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>
  </table>
    <dt><b>Return Value</b>
    <dd>The canonical error value<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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/Fnmatch_functions.html
  
  Index: Fnmatch_functions.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- Fnmatch functions</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: Fnmatch functions</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_status_t"></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>
    <dd>
  Try to match the string to the given pattern.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	pattern</th><td>The pattern to match to
  </td></tr>
  <tr valign=top><th align=right>
  	strings</th><td>The string we are trying to match
  </td></tr>
  <tr valign=top><th align=right>
  	flags</th><td>flags to use in the match.  Bitwise OR of:
  <PRE>
               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>
  </table>
    </dl></dl>
  
  <a name="int-2"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_is_fnmatch(const char *pattern);</b>
    <dd>
  Determine if the given pattern is a regular expression.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	pattern</th><td>The pattern to search for glob characters.</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>non-zero if pattern has any glob characters in it<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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/General.html
  
  Index: General.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- General</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: General</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="APR_DECLARE(rettype)"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>APR_DECLARE(rettype) apr_func(args);;</b>
    <dd>
  APR_DECLARE_EXPORT is defined when building the APR dynamic library,
  so that all public symbols are exported.
  APR_DECLARE_STATIC is defined when including the APR public headers,
  to provide static linkage when the dynamic library may be unavailable.
  APR_DECLARE_STATIC and APR_DECLARE_EXPORT are left undefined when
  including the APR public headers, to import and link the symbols from the 
  dynamic APR library and assure appropriate indirection and calling 
  conventions at compile time.
   The public APR functions are declared with APR_DECLARE(), so they may
  use the most appropriate calling convention.  Public APR functions with 
  variable arguments must use APR_DECLARE_NONSTD().
  <p><dl>
  </dl></dl>
  
  <a name="APR_DECLARE_DATA"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>APR_DECLARE_DATA type apr_variable;;</b>
    <dd>
  The public APR variables are declared with AP_MODULE_DECLARE_DATA.
  This assures the appropriate indirection is invoked at compile time.
  <p><dl>
  </dl></dl>
  
  <a name="APR_DECLARE_NONSTD(rettype)"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>APR_DECLARE_NONSTD(rettype) apr_func(args, ...);;</b>
    <dd>
  The public APR functions using variable arguments are declared with 
  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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/Hash_Tables.html
  
  Index: Hash_Tables.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- Hash Tables</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: Hash Tables</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_hash_index_t"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_hash_index_t * apr_hash_first(apr_hash_t *ht);</b>
    <dd>
  Start iterating over the entries in a hash table.
  <p><img src="../images//tip.gif"> Example:
  <PRE><p>
      int sum_values(apr_hash_t *ht)
      {
          apr_hash_index_t *hi;
      void *val;
      int sum = 0;
      for (hi = apr_hash_first(ht); hi; hi = apr_hash_next(hi)) {
          apr_hash_this(hi, NULL, NULL, &val);
          sum += *(int *)val;
      }
      return sum;
      }<p>
  There is no restriction on adding or deleting hash entries during an
  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>
  <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>a pointer to the iteration state, or NULL if there are no entries.<p></dl></dl>
  
  <a name="apr_hash_index_t-2"></a>
  <dl>
    <dt>
     <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_hash_index_t * apr_hash_next(apr_hash_index_t *hi);</b>
    <dd>
  Continue iterating over the entries in a hash table.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	hi</th><td>The iteration state</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>a pointer to the updated iteration state.  NULL if there are no more  *         entries.<p></dl></dl>
  
  <a name="apr_hash_t"></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>
    <dd>
  Create a hash table within a pool.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	pool</th><td>The pool to allocate the hash table out of</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>The hash table just created<p></dl></dl>
  
  <a name="void"></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>
    <dd>
  Associate a value with a key in a hash table.
  <p><img src="../images//tip.gif"> If the value is NULL the hash entry is deleted.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	ht</th><td>The hash table
  </td></tr>
  <tr valign=top><th align=right>
  	key</th><td>Pointer to the key
  </td></tr>
  <tr valign=top><th align=right>
  	klen</th><td>Length of the key. Can be APR_HASH_KEY_STRING.
  </td></tr>
  <tr valign=top><th align=right>
  	val</th><td>Value to associate with the key</td></tr>
  </table>
    </dl></dl>
  
  <a name="void-2"></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>
    <dd>
  Look up the value associated with a key in a 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>
  <tr valign=top><th align=right>
  	key</th><td>Pointer to the key
  </td></tr>
  <tr valign=top><th align=right>
  	klen</th><td>Length of the key. Can be APR_HASH_KEY_STRING.</td></tr>
  </table>
    <dt><b>Return Value</b>
    <dd>Returns NULL if the key is not present.<p></dl></dl>
  
  <a name="void-3"></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>
    <dd>
  Get the current entry's details from the iteration state.
  <p><img src="../images//tip.gif"> The return pointers should point to a variable that will be set to the
       corresponding data, or they may be NULL if the data isn't interesting.
  <p><dl>
  
    <dt><b>Parameters</b><dd>
  	<table width="85%">
  <tr valign=top><th align=right>
  	hi</th><td>The iteration state
  </td></tr>
  <tr valign=top><th align=right>
  	key</th><td>Return pointer for the pointer to the key.
  </td></tr>
  <tr valign=top><th align=right>
  	klen</th><td>Return pointer for the key length.
  </td></tr>
  <tr valign=top><th align=right>
  	val</th><td>Return pointer for the associated value.</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/Shared_Memory_library.html
  
  Index: Shared_Memory_library.html
  ===================================================================
  <html>
  <head>
    <title>[Apache Portable RunTime] -- Shared Memory library</title>
  </head>
  <body bgcolor="#FFFFFF">
    <center>
      <font size=6><b>[Apache Portable RunTime]</b></font>
      <hr size=4><p>
    </center>
  
    <h2>Package Name: Shared Memory library</h2>
    <b>
  
  </b>
  <h2>Global Functions</h2>
    <blockquote>
  
  <a name="apr_get_shm_name"></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>
    <dd>
  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 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>
  </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>
  
  <a name="apr_open_shmem"></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>
    <dd>
  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>
  	The</th><td>shared memory block to open in the child.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_set_shm_name"></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>
    <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.
  <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.
  </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>
  </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>
  
  <a name="apr_shm_avail"></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>
    <dd>
  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>
  	c</th><td>The shared memory block to open in the child.
  </td></tr>
  <tr valign=top><th align=right>
  	avail</th><td>The amount of space available in the shared memory block.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_shm_calloc"></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>
    <dd>
  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>
  	shared</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>
  </table>
    </dl></dl>
  
  <a name="apr_shm_destroy"></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>
    <dd>
  Destroy the shared memory block.
  <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>
  </table>
    </dl></dl>
  
  <a name="apr_shm_free"></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>
    <dd>
  free shared memory previously allocated.
  <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.
  </td></tr>
  <tr valign=top><th align=right>
  	entity</th><td>The actual data to free.</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_shm_init"></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>
    <dd>
  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>
  	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.
  </td></tr>
  <tr valign=top><th align=right>
  	cont</th><td>The pool to use</td></tr>
  </table>
    </dl></dl>
  
  <a name="apr_shm_malloc"></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>
    <dd>
  allocate memory from the block of 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 destroy.
  </td></tr>
  <tr valign=top><th align=right>
  	reqsize</th><td>How much memory to allocate</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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/index.html
  
  Index: index.html
  ===================================================================
  <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; iso-8859-1">
      <title>[Apache Portable RunTime]</title>
    </head>
    <frameset cols="190,*">
      <frame src="master.html"  name="Master Index" noresize>
      <frame src="packages.html" name="Documentation">
      <noframes>
        <body bgcolor="#FFFFFF" stylesrc="index.html">
          <p>Some Documentation</p>
        </body>
      </noframes>
    </frameset>
  </html>
  
  
  
  1.1                  apr-site/docs/master.html
  
  Index: master.html
  ===================================================================
  <html>
    <head>
      <title>Master Index</title>
    </head>
    <body bgcolor="#FFFFFF" text=#0000ff link=#0020ff vlink=#0020ff>
      <center><img src="../images/ScanDocSmall.jpg" border="0" /></center>
      <p>
      <a href="packages.html" target="Documentation">Master Index</a>
      </p>
      <p>
        <font size="2">
          <nobr>
  <a href="General.html" target="Documentation"><b>General</b></a><br>
    <dir>
  <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_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_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_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_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_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_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_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_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_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_ungetc" target="Documentation">apr_status_t apr_ungetc(char ch, 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>
  </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>
  </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>
  </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>
  </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_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 *socket, 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)</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_create_tcp_socket" target="Documentation">apr_status_t apr_create_tcp_socket(apr_socket_t **new_sock, 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_interface_e which, apr_socket_t *sock)</a>
  <li><a href="APR_Network_library.html#apr_get_local_name" target="Documentation">apr_status_t apr_get_local_name(struct sockaddr_in **name, apr_socket_t *sock)</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_interface_e which, apr_socket_t *sock)</a>
  <li><a href="APR_Network_library.html#apr_get_remote_name" target="Documentation">apr_status_t apr_get_remote_name(struct sockaddr_in **name, apr_socket_t *sock)</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_socket_inaddr" target="Documentation">apr_status_t apr_get_socket_inaddr(apr_in_addr_t *addr, 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_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_socket_t *sock, apr_interface_e which, 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_socket_t *sock, apr_interface_e which, 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>
  </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, char *const *args, char **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>
  </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>
  </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#apr_item_t" target="Documentation"> apr_item_t</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#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>
  </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>
  </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-12" target="Documentation">void apr_get_uuid(apr_uuid_t *uuid)</a>
  <li><a href="APR_UUID_Handling.html#void-13" target="Documentation">void apr_format_uuid(apr_pool_t *p, 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_t" target="Documentation">struct apr_getopt_t</a>
  <li><a href="APR_command_arguments.html#apr_getopt_long_t-has_arg" target="Documentation">    int has_arg</a>
  <li><a href="APR_command_arguments.html#apr_getopt_long_t-name" target="Documentation">    const char *name</a>
  <li><a href="APR_command_arguments.html#apr_getopt_long_t-val" target="Documentation">    int val</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 char *opts, const apr_getopt_long_t *longopts, int *optval, 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_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#void-4" target="Documentation">void apr_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how)</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>
  </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#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_initialize" target="Documentation">apr_status_t apr_initialize(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_abort" target="Documentation">apr_status_t apr_set_abort(int (*apr_abort)(int retcode), apr_pool_t *cont)</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_strerror" target="Documentation">char *apr_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize)</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#apr_terminate" target="Documentation">void apr_terminate(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_kill_cleanup(apr_pool_t *p, const void *data, apr_status_t (*cleanup) (void *))</a>
  <li><a href="APR_memory_allocation.html#void-11" target="Documentation">void apr_cleanup_for_exec(void)</a>
  <li><a href="APR_memory_allocation.html#void-5" target="Documentation">void apr_clear_pool(apr_pool_t *p)</a>
  <li><a href="APR_memory_allocation.html#void-6" target="Documentation">void apr_destroy_pool(apr_pool_t *p)</a>
  <li><a href="APR_memory_allocation.html#void-7" target="Documentation">void *apr_palloc(apr_pool_t *c, apr_size_t reqsize)</a>
  <li><a href="APR_memory_allocation.html#void-8" target="Documentation">void *apr_pcalloc(apr_pool_t *p, apr_size_t size)</a>
  <li><a href="APR_memory_allocation.html#void-9" 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>
  </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_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_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>
  </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>
  </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_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>
  </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>
  </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>
  </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 * apr_hash_first(apr_hash_t *ht)</a>
  <li><a href="Hash_Tables.html#apr_hash_index_t-2" 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 *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>
  </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>
  </dir>
            <a href="to-do.html" target="Documentation"><b>To-Do List</b></a><br>
          </nobr>
        </font>
      </p>
    </body>
  </html>
  
  
  
  1.1                  apr-site/docs/packages.html
  
  Index: packages.html
  ===================================================================
  <html>
    <head>
      <title>[Apache Portable RunTime] -- Packages</title>
    </head>
    <body bgcolor="#FFFFFF">
  
      <center>
      <h1>Documentation for [Apache Portable RunTime]</h1>
      </center>
      <h2>Package List</h2>
  <a href = "General.html">General</a><br>
  <a href = "APR_File_handling.html">APR File handling</a><br>
  <a href = "APR_I18N_translation_library.html">APR I18N translation library</a><br>
  <a href = "APR_MD5_Library.html">APR MD5 Library</a><br>
  <a href = "APR_MMAP_library.html">APR MMAP library</a><br>
  <a href = "APR_Network_library.html">APR Network library</a><br>
  <a href = "APR_Process_library.html">APR Process library</a><br>
  <a href = "APR_Random_Functions.html">APR Random Functions</a><br>
  <a href = "APR_Table_library.html">APR Table library</a><br>
  <a href = "APR_Thread_library.html">APR Thread library</a><br>
  <a href = "APR_Time_library.html">APR Time library</a><br>
  <a href = "APR_UUID_Handling.html">APR UUID Handling</a><br>
  <a href = "APR_command_arguments.html">APR command arguments</a><br>
  <a href = "APR_general-purpose_library.html">APR general-purpose library</a><br>
  <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_strings_library.html">APR strings library</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>
  <a href = "Hash_Tables.html">Hash Tables</a><br>
  <a href = "Shared_Memory_library.html">Shared Memory library</a><br>
  
      <p>
      <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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  
  
  1.1                  apr-site/docs/to-do.html
  
  Index: to-do.html
  ===================================================================
  <html>
    <head>
      <title>[Apache Portable RunTime] -- To-Do list</title>
    </head>
    <body bgcolor="#FFFFFF">
  
      
  
      <h1>To-do list for [Apache Portable RunTime]</h1>
  
      <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: Fri Nov 17 13:08:43 2000
  <br>
    </body>
  </html>
  
  
  

Mime
View raw message