You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by rb...@apache.org on 2001/02/11 03:55:02 UTC
cvs commit: apr-site/docs APR_File_handling.html APR_I18N_translation_library.html APR_MD5_Library.html APR_MMAP_library.html APR_Network_library.html APR_Process_library.html APR_Random_Functions.html APR_Table_library.html APR_Thread_library.html APR_Time_library.html APR_UUID_Handling.html APR_command_arguments.html APR_general-purpose_library.html APR_lock_library.html APR_memory_allocation.html APR_portability_Routines.html APR_strings_library.html Dynamic_Object_Handling.html Error_Codes.html Fnmatch_functions.html General.html Hash_Tables.html Shared_Memory_library.html master.html packages.html to-do.html
rbb 01/02/10 18:55:02
Modified: docs APR_File_handling.html
APR_I18N_translation_library.html
APR_MD5_Library.html APR_MMAP_library.html
APR_Network_library.html APR_Process_library.html
APR_Random_Functions.html APR_Table_library.html
APR_Thread_library.html APR_Time_library.html
APR_UUID_Handling.html APR_command_arguments.html
APR_general-purpose_library.html
APR_lock_library.html APR_memory_allocation.html
APR_portability_Routines.html
APR_strings_library.html
Dynamic_Object_Handling.html Error_Codes.html
Fnmatch_functions.html General.html
Hash_Tables.html Shared_Memory_library.html
master.html packages.html to-do.html
Log:
Update the APR docs on the APR web site.
Revision Changes Path
1.4 +396 -595 apr-site/docs/APR_File_handling.html
Index: APR_File_handling.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_File_handling.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_File_handling.html 2000/12/04 18:13:58 1.3
+++ APR_File_handling.html 2001/02/11 02:54:57 1.4
@@ -14,15 +14,25 @@
<a href="APR_File_handling.html#apr_finfo_t">struct apr_finfo_t</h3></a>
<ul>
<li><a href="APR_File_handling.html#apr_finfo_t-atime">atime</a>
+<li><a href="APR_File_handling.html#apr_finfo_t-cntxt">cntxt</a>
+<li><a href="APR_File_handling.html#apr_finfo_t-csize">csize</a>
<li><a href="APR_File_handling.html#apr_finfo_t-ctime">ctime</a>
<li><a href="APR_File_handling.html#apr_finfo_t-device">device</a>
<li><a href="APR_File_handling.html#apr_finfo_t-filetype">filetype</a>
+<li><a href="APR_File_handling.html#apr_finfo_t-fname">fname</a>
<li><a href="APR_File_handling.html#apr_finfo_t-group">group</a>
<li><a href="APR_File_handling.html#apr_finfo_t-inode">inode</a>
<li><a href="APR_File_handling.html#apr_finfo_t-mtime">mtime</a>
+<li><a href="APR_File_handling.html#apr_finfo_t-name">name</a>
+<li><a href="APR_File_handling.html#apr_finfo_t-nlink">nlink</a>
<li><a href="APR_File_handling.html#apr_finfo_t-protection">protection</a>
<li><a href="APR_File_handling.html#apr_finfo_t-size">size</a>
<li><a href="APR_File_handling.html#apr_finfo_t-user">user</a>
+<li><a href="APR_File_handling.html#apr_finfo_t-valid">valid</a>
+</ul>
+<h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
+ <a href="APR_File_handling.html#apr_finfo_t-apr_file_t">struct apr_file_t</h3></a>
+ <ul>
</ul>
</b>
@@ -34,21 +44,27 @@
<th align=center colspan=2>
</th>
</tr>
- <tr><th width=20% align=right>Source:</th><td>./include/apr_file_io.h</td></tr></tr>
+ <tr><th width=20% align=right>Source:</th><td>./include/apr_file_info.h</td></tr></tr>
</table>
<p>
The file information structure. This is analogous to the POSIX
stat structure.<h2>Member Index</h2>
<ul><li><a href="APR_File_handling.html#apr_finfo_t-atime"> apr_time_t atime</a>
+ <li><a href="APR_File_handling.html#apr_finfo_t-cntxt"> apr_pool_t *cntxt</a>
+ <li><a href="APR_File_handling.html#apr_finfo_t-csize"> apr_off_t csize</a>
<li><a href="APR_File_handling.html#apr_finfo_t-ctime"> apr_time_t ctime</a>
<li><a href="APR_File_handling.html#apr_finfo_t-device"> apr_dev_t device</a>
<li><a href="APR_File_handling.html#apr_finfo_t-filetype"> apr_filetype_e filetype</a>
+ <li><a href="APR_File_handling.html#apr_finfo_t-fname"> const char *fname</a>
<li><a href="APR_File_handling.html#apr_finfo_t-group"> apr_gid_t group</a>
<li><a href="APR_File_handling.html#apr_finfo_t-inode"> apr_ino_t inode</a>
<li><a href="APR_File_handling.html#apr_finfo_t-mtime"> apr_time_t mtime</a>
+ <li><a href="APR_File_handling.html#apr_finfo_t-name"> const char *name</a>
+ <li><a href="APR_File_handling.html#apr_finfo_t-nlink"> apr_int32_t nlink</a>
<li><a href="APR_File_handling.html#apr_finfo_t-protection"> apr_fileperms_t protection</a>
<li><a href="APR_File_handling.html#apr_finfo_t-size"> apr_off_t size</a>
<li><a href="APR_File_handling.html#apr_finfo_t-user"> apr_uid_t user</a>
+ <li><a href="APR_File_handling.html#apr_finfo_t-valid"> apr_int32_t valid</a>
</ul><h2>Class Variables</h2>
<blockquote>
@@ -60,6 +76,22 @@
<p><dl>
</dl></dl>
+ <a name="cntxt"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_pool_t *cntxt;</b>
+<dd>
+Allocates memory and closes lingering handles in the specified pool
+<p><dl>
+</dl></dl>
+
+ <a name="csize"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_off_t csize;</b>
+<dd>
+The storage size consumed by the file
+<p><dl>
+</dl></dl>
+
<a name="ctime"></a>
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_time_t ctime;</b>
@@ -72,7 +104,7 @@
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_dev_t device;</b>
<dd>
-The id of the device the file is on. (Not portable?)
+The id of the device the file is on.
<p><dl>
</dl></dl>
@@ -85,6 +117,14 @@
<p><dl>
</dl></dl>
+ <a name="fname"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> const char *fname;</b>
+<dd>
+The full pathname of the file
+<p><dl>
+</dl></dl>
+
<a name="group"></a>
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_gid_t group;</b>
@@ -97,7 +137,7 @@
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_ino_t inode;</b>
<dd>
-The inode of the file. (Not portable?)
+The inode of the file.
<p><dl>
</dl></dl>
@@ -109,12 +149,27 @@
<p><dl>
</dl></dl>
+ <a name="name"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> const char *name;</b>
+<dd>
+The file's name (no path) in filesystem case
+<p><dl>
+</dl></dl>
+
+ <a name="nlink"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_int32_t nlink;</b>
+<dd>
+The number of hard links to the file.
+<p><dl>
+</dl></dl>
+
<a name="protection"></a>
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_fileperms_t protection;</b>
<dd>
-The access permissions of the file. Currently this mimics Unix
- access rights.
+The access permissions of the file. Mimics Unix access rights.
<p><dl>
</dl></dl>
@@ -133,17 +188,29 @@
The user id that owns the file
<p><dl>
</dl></dl>
-</blockquote>
-<h2>Global Variables</h2>
- <blockquote>
- <a name="apr_canon_t"></a>
+ <a name="valid"></a>
<dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_canon_t ;</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_int32_t valid;</b>
<dd>
-Structure for determining canonical filenames.
+The bitmask describing valid fields of this apr_finfo_t structure
+ including all available 'wanted' fields and potentially more
<p><dl>
</dl></dl>
+</blockquote>
+<hr size="4">
+ <a name="apr_finfo_t-apr_file_t"></a>
+ <h1>struct apr_file_t</h1>
+ <table bgcolor="ffffff" border="0" cellspacing="4">
+ <tr>
+ <th align=center colspan=2>
+ </th>
+ </tr>
+ <tr><th width=20% align=right>Source:</th><td>./include/apr_file_info.h</td></tr></tr>
+</table>
+<p>
+The file's handle, if accessed (can be submitted to apr_duphandle)<h2>Global Variables</h2>
+ <blockquote>
<a name="apr_dev_t"></a>
<dl><dt>
@@ -177,14 +244,6 @@
<p><dl>
</dl></dl>
- <a name="apr_gid_t"></a>
- <dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_gid_t ;</b>
-<dd>
-Structure for determining the group that owns the file.
-<p><dl>
-</dl></dl>
-
<a name="apr_ino_t"></a>
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_ino_t ;</b>
@@ -192,47 +251,55 @@
Structure for determining the inode of the file.
<p><dl>
</dl></dl>
+</blockquote>
+<h2>Global Functions</h2>
+ <blockquote>
- <a name="apr_uid_t"></a>
- <dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_uid_t ;</b>
+<a name=""></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Structure for determining file owner.
+<p><img src="../images//tip.gif"> This function is depreciated, it's equivilant to calling apr_stat with
+the wanted flag value APR_FINFO_LINK
<p><dl>
</dl></dl>
- <a name="time"></a>
- <dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> or thread can hold a shared lock
- at any given time;</b>
+<a name="-2"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-File lock types/flags
+<p><img src="../images//tip.gif"> If perm is APR_OS_DEFAULT and the file is being created, appropriate
+ default permissions will be used. *arg1 must point to a valid file_t,
+ or NULL (in which case it will be allocated)
<p><dl>
</dl></dl>
-</blockquote>
-<h2>Global Functions</h2>
- <blockquote>
-<a name="apr_close"></a>
+<a name="-3"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_close(apr_file_t *file);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Close the specified file.
+<p><img src="../images//tip.gif"> If the file is open, it won't be removed until all instances are closed.
<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- file</th><td>The file descriptor to close.</td></tr>
-</table>
</dl></dl>
-<a name="apr_closedir"></a>
+<a name="apr_pool_t"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_closedir(apr_dir_t *thedir);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_pool_t apr_file_pool_get(apr_file_t *f);</b>
<dd>
+Get the pool used by the file.
+<p><dl>
+<dt><b>Return Value</b>
+ <dd>apr_pool_t the pool<p></dl></dl>
+
+<a name="apr_status_t-10"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_close(apr_dir_t *thedir);</b>
+ <dd>
close the specified directory.
<p><dl>
@@ -243,144 +310,136 @@
</table>
</dl></dl>
-<a name="apr_count_canonical_elements"></a>
+<a name="apr_status_t-11"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_count_canonical_elements(const apr_canon_t *trusted_name);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, apr_dir_t *thedir);</b>
<dd>
-Count the number of elements in a canonical name.
+Read the next entry from the specified directory.
+<p><img src="../images//tip.gif"> All systems return . and .. as the first two files.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- trusted_name</th><td>An already canonicalized file path</td></tr>
+ thedir</th><td>the directory descriptor to read from, and fill out.</td></tr>
</table>
- <dt><b>Return Value</b>
- <dd>The number of elements in the name<p></dl></dl>
+ </dl></dl>
-<a name="apr_create_namedpipe"></a>
+<a name="apr_status_t-12"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_namedpipe(const char *filename, apr_fileperms_t perm, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_rewind(apr_dir_t *thedir);</b>
<dd>
-Create a named pipe.
+Rewind the directory to the first entry.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- filename</th><td>The filename of the named pipe
-</td></tr>
<tr valign=top><th align=right>
- perm</th><td>The permissions for the newly created pipe.
-</td></tr>
-<tr valign=top><th align=right>
- cont</th><td>The pool to operate on.</td></tr>
+ thedir</th><td>the directory descriptor to rewind.</td></tr>
</table>
</dl></dl>
-<a name="apr_create_pipe"></a>
+<a name="apr_status_t-13"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_pipe(apr_file_t **in, apr_file_t **out, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_open(apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont);</b>
<dd>
-Create an anonymous pipe.
+Open the specified file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- in</th><td>The file descriptor to use as input to the pipe.
+ new_file</th><td>The opened file descriptor.
</td></tr>
<tr valign=top><th align=right>
- out</th><td>The file descriptor to use as output from the pipe.
+ fname</th><td>The full path to the file (using / on all systems)
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to operate on.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_dir_entry_ftype"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_entry_ftype(apr_filetype_e *type, apr_dir_t *thedir);</b>
- <dd>
-Get the file type of the current directory entry.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
+ flag</th><td>Or'ed value of:
+<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>
- type</th><td>the file type of the directory entry.
+ perm</th><td>Access permissions for file.
</td></tr>
<tr valign=top><th align=right>
- thedir</th><td>the currently open directory.</td></tr>
+ cont</th><td>The pool to use.</td></tr>
</table>
</dl></dl>
-<a name="apr_dir_entry_mtime"></a>
+<a name="apr_status_t-14"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_entry_mtime(apr_time_t *mtime, apr_dir_t *thedir);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_close(apr_file_t *file);</b>
<dd>
-Get the last modified time of the current directory entry.
+Close the specified file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- mtime</th><td>the last modified time of the directory entry.
-</td></tr>
-<tr valign=top><th align=right>
- thedir</th><td>the currently open directory.</td></tr>
+ file</th><td>The file descriptor to close.</td></tr>
</table>
</dl></dl>
-<a name="apr_dir_entry_size"></a>
+<a name="apr_status_t-15"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_entry_size(apr_size_t *size, apr_dir_t *thedir);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_remove(const char *path, apr_pool_t *cont);</b>
<dd>
-Get the size of the current directory entry.
+delete the specified file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- size</th><td>the size of the directory entry.
+ path</th><td>The full path to the file (using / on all systems)
</td></tr>
<tr valign=top><th align=right>
- thedir</th><td>the currently open directory.</td></tr>
+ cont</th><td>The pool to use.</td></tr>
</table>
</dl></dl>
-<a name="apr_dupfile"></a>
+<a name="apr_status_t-16"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dupfile(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_rename(const char *from_path, const char *to_path, apr_pool_t *pool);</b>
<dd>
-duplicate the specified file descriptor.
-<p><img src="../images//tip.gif"> *arg1 must point to a valid apr_file_t, or point to NULL
+rename the specified file.
+<p><img src="../images//tip.gif"> If a file exists at the new location, then it will be overwritten.
+ Moving files or directories across devices may not be possible.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- new_file</th><td>The structure to duplicate into.
+ from_path</th><td>The full path to the original file (using / on all systems)
</td></tr>
<tr valign=top><th align=right>
- old_file</th><td>The file to duplicate.
+ to_path</th><td>The full path to the new file (using / on all systems)
</td></tr>
<tr valign=top><th align=right>
- p</th><td>The pool to use for the new file.</td></tr>
+ pool</th><td>The pool to use.</td></tr>
</table>
</dl></dl>
-<a name="apr_eof"></a>
+<a name="apr_status_t-17"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_eof(apr_file_t *fptr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_eof(apr_file_t *fptr);</b>
<dd>
Are we at the end of the file
<p><img src="../images//tip.gif"> Returns APR_EOF if we are at the end of file, APR_SUCCESS otherwise.
@@ -393,10 +452,10 @@
</table>
</dl></dl>
-<a name="apr_ferror"></a>
+<a name="apr_status_t-18"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ferror(apr_file_t *fptr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_error(apr_file_t *fptr);</b>
<dd>
Is there an error on the stream?
<p><img src="../images//tip.gif"> Returns -1 if the error indicator is set, APR_SUCCESS otherwise.
@@ -409,54 +468,53 @@
</table>
</dl></dl>
-<a name="apr_fgets"></a>
+<a name="apr_status_t-19"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_fgets(char *str, int len, apr_file_t *thefile);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *cont);</b>
<dd>
-Get a string from a specified file.
+open standard error as an apr file pointer.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- str</th><td>The buffer to store the string in.
-</td></tr>
<tr valign=top><th align=right>
- len</th><td>The length of the string
+ thefile</th><td>The apr file to use as stderr.
</td></tr>
<tr valign=top><th align=right>
- thefile</th><td>The file descriptor to read from</td></tr>
+ cont</th><td>The pool to allocate the file out of.</td></tr>
</table>
</dl></dl>
-<a name="apr_flush"></a>
+<a name="apr_status_t-20"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_flush(apr_file_t *thefile);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *cont);</b>
<dd>
-Flush the file's buffer.
+open standard output as an apr file pointer.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thefile</th><td>The file descriptor to flush</td></tr>
+ thefile</th><td>The apr file to use as stdout.
+</td></tr>
+<tr valign=top><th align=right>
+ cont</th><td>The pool to allocate the file out of.</td></tr>
</table>
</dl></dl>
-<a name="apr_full_read"></a>
+<a name="apr_status_t-21"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_full_read(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes);</b>
<dd>
-Read data from the specified file, ensuring that the buffer is filled
-before returning.
-<p><img src="../images//tip.gif"> apr_read will read up to the specified number of bytes, but never
- more. If there isn't enough data to fill that number of bytes,
- then the process/thread will block until it is available or EOF
- is reached. If a char was put back into the stream via ungetc,
- it will be the first character returned.
+Read data from the specified file.
+<p><img src="../images//tip.gif"> apr_file_read will read up to the specified number of bytes, but never
+ more. If there isn't enough data to fill that number of bytes, all
+ of the available data is read. The third argument is modified to
+ reflect the number of bytes read. If a char was put back into the
+ stream via ungetc, it will be the first character returned.
It is possible for both bytes to be read and an APR_EOF or other
error to be returned.
APR_EINTR is never returned.
@@ -470,25 +528,21 @@
<tr valign=top><th align=right>
buf</th><td>The buffer to store the data to.
</td></tr>
-<tr valign=top><th align=right>
- nbytes</th><td>The number of bytes to read.
-</td></tr>
<tr valign=top><th align=right>
- bytes_read</th><td>If non-NULL, this will contain the number of bytes read.</td></tr>
+ nbytes</th><td>On entry, the number of bytes to read; on exit, the number of bytes read.</td></tr>
</table>
</dl></dl>
-<a name="apr_full_write"></a>
+<a name="apr_status_t-22"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_full_write(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes);</b>
<dd>
-Write data to the specified file, ensuring that all of the data is
-written before returning.
-<p><img src="../images//tip.gif"> apr_write will write up to the specified number of bytes, but never
- more. If the OS cannot write that many bytes, the process/thread
- will block until they can be written. Exceptional error such as
- "out of space" or "pipe closed" will terminate with an error.
+Write data to the specified file.
+<p><img src="../images//tip.gif"> apr_file_write will write up to the specified number of bytes, but never
+ more. If the OS cannot write that many bytes, it will write as many
+ as it can. The third argument is modified to reflect the * number
+ of bytes written.
It is possible for both bytes to be written and an error to be returned.
APR_EINTR is never returned.
<p><dl>
@@ -501,169 +555,148 @@
<tr valign=top><th align=right>
buf</th><td>The buffer which contains the data.
</td></tr>
-<tr valign=top><th align=right>
- nbytes</th><td>The number of bytes to write.
-</td></tr>
<tr valign=top><th align=right>
- bytes_written</th><td>If non-NULL, this will contain the number of bytes written.</td></tr>
+ nbytes</th><td>On entry, the number of bytes to write; on exit, the number
+ of bytes written.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_canonical_elements"></a>
+<a name="apr_status_t-23"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_canonical_elements(char **path_elements, const apr_canon_t *trusted_name, int firstelement, int lastelement, apr_pool_t *pool);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes);</b>
<dd>
-Get the requested elements of a canonical name in a character string
+Write data from iovec array to the specified file.
+<p><img src="../images//tip.gif"> It is possible for both bytes to be written and an error to be returned.
+ APR_EINTR is never returned.
+ apr_file_writev is available even if the underlying operating system
+ doesn't provide writev().
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- path_elements</th><td>A location to store the path elements.
-</td></tr>
-<tr valign=top><th align=right>
- trusted_name</th><td>An already canonicalized file path
+ thefile</th><td>The file descriptor to write to.
</td></tr>
<tr valign=top><th align=right>
- firstelement</th><td>The numerical position of the element to start the
- length at.
+ vec</th><td>The array from which to get the data to write to the file.
</td></tr>
<tr valign=top><th align=right>
- lastelement</th><td>The numerical position of the element to end the
- length at.
+ nvec</th><td>The number of elements in the struct iovec array. This must
+ be smaller than APR_MAX_IOVEC_SIZE. If it isn't, the function
+ will fail with APR_EINVAL.
</td></tr>
<tr valign=top><th align=right>
- pool</th><td>The pool to allocate the path out of.</td></tr>
+ nbytes</th><td>The number of bytes written.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_canonical_elements_length"></a>
+<a name="apr_status_t-24"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_get_canonical_elements_length(const apr_canon_t *trusted_name, int firstelement, int lastelement);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_read_file(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read);</b>
<dd>
-Query the length of some elements of the canonical name
+Read data from the specified file, ensuring that the buffer is filled
+before returning.
+<p><img src="../images//tip.gif"> apr_file_read will read up to the specified number of bytes, but never
+ more. If there isn't enough data to fill that number of bytes,
+ then the process/thread will block until it is available or EOF
+ is reached. If a char was put back into the stream via ungetc,
+ it will be the first character returned.
+ It is possible for both bytes to be read and an APR_EOF or other
+ error to be returned.
+ APR_EINTR is never returned.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- trusted_name</th><td>An already canonicalized file path
-</td></tr>
-<tr valign=top><th align=right>
- firstelement</th><td>The numerical position of the element to start the
- length at.
+ thefile</th><td>The file descriptor to read from.
</td></tr>
<tr valign=top><th align=right>
- lastelement</th><td>The numerical position of the element to end the
- length at.</td></tr>
-</table>
- <dt><b>Return Value</b>
- <dd>The length of requested elements.<p></dl></dl>
-
-<a name="apr_get_canonical_name"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_canonical_name(char **path, const apr_canon_t *trusted_name, apr_pool_t *pool);</b>
- <dd>
-Get the canonical path in a character string
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- path</th><td>A location to store the canocical name
+ buf</th><td>The buffer to store the data to.
</td></tr>
<tr valign=top><th align=right>
- trusted_name</th><td>An already canonicalized file path
+ nbytes</th><td>The number of bytes to read.
</td></tr>
<tr valign=top><th align=right>
- pool</th><td>The pool to allocate the path out of.</td></tr>
+ bytes_read</th><td>If non-NULL, this will contain the number of bytes read.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_dir_filename"></a>
+<a name="apr_status_t-25"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_dir_filename(char **new_path, apr_dir_t *thedir);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_write_full(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written);</b>
<dd>
-Get the file name of the current directory entry.
+Write data to the specified file, ensuring that all of the data is
+written before returning.
+<p><img src="../images//tip.gif"> apr_file_write will write up to the specified number of bytes, but never
+ more. If the OS cannot write that many bytes, the process/thread
+ will block until they can be written. Exceptional error such as
+ "out of space" or "pipe closed" will terminate with an error.
+ It is possible for both bytes to be written and an error to be returned.
+ APR_EINTR is never returned.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- new_path</th><td>the file name of the directory entry.
+ thefile</th><td>The file descriptor to write to.
</td></tr>
-<tr valign=top><th align=right>
- thedir</th><td>the currently open directory.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_get_filedata"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_filedata(void **data, const char *key, apr_file_t *file);</b>
- <dd>
-Return the data associated with the current file.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
<tr valign=top><th align=right>
- data</th><td>The user data associated with the file.
+ buf</th><td>The buffer which contains the data.
</td></tr>
<tr valign=top><th align=right>
- key</th><td>The key to use for retreiving data associated with this file.
+ nbytes</th><td>The number of bytes to write.
</td></tr>
<tr valign=top><th align=right>
- file</th><td>The currently open file.</td></tr>
+ bytes_written</th><td>If non-NULL, this will contain the number of bytes written.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_filename"></a>
+<a name="apr_status_t-26"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_filename(char **new_path, apr_file_t *thefile);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_putc(char ch, apr_file_t *thefile);</b>
<dd>
-return the file name of the current file.
+put a character into the specified file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- new_path</th><td>The path of the file.
+ ch</th><td>The character to write.
</td></tr>
<tr valign=top><th align=right>
- thefile</th><td>The currently open file.</td></tr>
+ thefile</th><td>The file descriptor to write to</td></tr>
</table>
</dl></dl>
-<a name="apr_get_pipe_timeout"></a>
+<a name="apr_status_t-27"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t *timeout);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_getc(char *ch, apr_file_t *thefile);</b>
<dd>
-Get the timeout value for a pipe or manipulate the blocking state.
+get a character from the specified file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thepipe</th><td>The pipe we are getting a timeout for.
+ ch</th><td>The character to write.
</td></tr>
<tr valign=top><th align=right>
- timeout</th><td>The current timeout value in microseconds.</td></tr>
+ thefile</th><td>The file descriptor to write to</td></tr>
</table>
</dl></dl>
-<a name="apr_getc"></a>
+<a name="apr_status_t-28"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getc(char *ch, apr_file_t *thefile);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_ungetc(char ch, apr_file_t *thefile);</b>
<dd>
-get a character from the specified file.
+put a character back onto a specified stream.
<p><dl>
<dt><b>Parameters</b><dd>
@@ -676,566 +709,374 @@
</table>
</dl></dl>
-<a name="apr_getfileinfo"></a>
+<a name="apr_status_t-29"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getfileinfo(apr_finfo_t *finfo, apr_file_t *thefile);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_gets(char *str, int len, apr_file_t *thefile);</b>
<dd>
-get the specified file's stats.
+Get a string from a specified file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- finfo</th><td>Where to store the information about the file.
+ str</th><td>The buffer to store the string in.
</td></tr>
-<tr valign=top><th align=right>
- thefile</th><td>The file to get information about.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_is_absolute"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_is_absolute(apr_canon_t **path);</b>
- <dd>
-Determine if a canonical name is absolute.
-<p><img src="../images//warning.gif" align=left> Do not trust !apr_is_absolute to determine if the path is
- relative. Also, test apr_is_virtualroot to avoid non-filesystem
- pseudo roots.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
<tr valign=top><th align=right>
- path</th><td>The canonical name to check</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_is_relative"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_is_relative(apr_canon_t **path);</b>
- <dd>
-Determine if a canonical name is relative
-<p><img src="../images//warning.gif" align=left> Do not trust !apr_is_relative to determine if the path is absolute
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
+ len</th><td>The length of the string
+</td></tr>
<tr valign=top><th align=right>
- path</th><td>The canonical name to check</td></tr>
+ thefile</th><td>The file descriptor to read from</td></tr>
</table>
</dl></dl>
-<a name="apr_is_virtualroot"></a>
+<a name="apr_status_t-30"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_is_virtualroot(apr_canon_t **path, int elements);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_puts(const char *str, apr_file_t *thefile);</b>
<dd>
-Determine if the elements 0..elements resolves to a platform's non-physical
-root, e.g. the //machine/ name that isn't an adaquately complete root for
-UNC paths.
+Put the string into a specified file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- path</th><td>The canonical name to check
+ str</th><td>The string to write.
</td></tr>
<tr valign=top><th align=right>
- elements</th><td>The number of elements to check.</td></tr>
+ thefile</th><td>The file descriptor to write to</td></tr>
</table>
</dl></dl>
-<a name="apr_lock_file"></a>
+<a name="apr_status_t-31"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_file(apr_file_t *thefile, int type);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_flush(apr_file_t *thefile);</b>
<dd>
-file (un)locking functions. Establish a lock on the specified, open file. The lock may be advisory
-or mandatory, at the discretion of the platform. The lock applies to
-the file as a whole, rather than a specific range. Locks are established
-on a per-thread/process basis; a second lock by the same thread will not
-block.
+Flush the file's buffer.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- thefile</th><td>The file to lock.
-</td></tr>
<tr valign=top><th align=right>
- type</th><td>The type of lock to establish on the file.</td></tr>
+ thefile</th><td>The file descriptor to flush</td></tr>
</table>
</dl></dl>
-<a name="apr_lstat"></a>
+<a name="apr_status_t-32"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lstat(apr_finfo_t *finfo, const char *fname, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p);</b>
<dd>
-get the specified file's stats. The file is specified by filename,
-instead of using a pre-opened file. If the file is a symlink, this function
-will get the stats for the symlink not the file the symlink refers to.
+duplicate the specified file descriptor.
+<p><img src="../images//tip.gif"> *arg1 must point to a valid apr_file_t, or point to NULL
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- finfo</th><td>Where to store the information about the file, which is
-never touched if the call fails.
+ new_file</th><td>The structure to duplicate into.
</td></tr>
<tr valign=top><th align=right>
- fname</th><td>The name of the file to stat.
+ old_file</th><td>The file to duplicate.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>the pool to use to allocate the new file.</td></tr>
+ p</th><td>The pool to use for the new file.</td></tr>
</table>
</dl></dl>
-<a name="apr_make_canonical_name"></a>
+<a name="apr_status_t-33"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_make_canonical_name(apr_canon_t **new_name, const apr_canon_t *trusted_name, const char *child_name, int options, apr_pool_t *pool);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset);</b>
<dd>
-Canonicalize the path and name.
-<p><img src="../images//tip.gif"> A canonical name is a name stripped of embedded backrefs "../",
-thisrefs "./", successive slashes (//), or any other ambigious file
-name element. Absolute canonical names referencing the same file must
-strcmp() identically, excluding symlinks or inconsistent use of the
-APR_CANON_LOWERCASE or APR_CANON_TRUECASE options.<p>
-If the name does not exist, or resolves to a relative name the given case
-is preserved. Insignificant elements are eliminated. For example, on Win32
-this function removes trailing dots (which are allowed, but not stored in
-the file system), and "/../" under Unix is resolved to "/". The relative
-canonical name may contain leading backrefs "../", but will never contain
-any other prohibited element.
+Move the read/write file offset to a specified byte within a file.
+<p><img src="../images//tip.gif"> The third argument is modified to be the offset the pointer
+ was actually moved to.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- new_name</th><td>The newly allocated canonicalized trusted+child name
-</td></tr>
<tr valign=top><th align=right>
- trusted_name</th><td>Already canonical parent path; may be NULL.
-</td></tr>
-<tr valign=top><th align=right>
- child_name</th><td>An absolute path or path relative to trusted_name.
+ thefile</th><td>The file descriptor
</td></tr>
<tr valign=top><th align=right>
- options</th><td>Bit-wise of:
-<PRE>
- APR_CANON_ONLY_ABSOLUTE Require the trusted_name+child_name result is
- an absolute product or fail with error for the
- make and merge canonical name functions.
- APR_CANON_ALLOW_RELATIVE Allow that the trusted_name+child_name result
- may be a relative result for the make and
- merge canonical name functions.
- APR_CANON_ONLY_RELATIVE Require the trusted_name+child_name result is
- not an absolute path or fail with error for
- the make and merge canonical name functions.
- APR_CANON_CHILD_OF_TRUSTED Require the trusted_name+child_name result is
- a child of trusted_name or fail with error for
- the make and merge canonical name functions.
- APR_CANON_LOWERCASE If file path elements exist (can stat) then
- fold the element's name to lowercase for the
- make and merge canonical name functions.
- APR_CANON_TRUECASE If file path elements exist (can readdir) then
- fold the element's name to the true case
- lowercase for the make and merge canonical
- name functions.
-</PRE>
+ where</th><td>How to move the pointer, one of:
+<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>
- pool</th><td>The pool in which to allocate the new_name apr_canon_t</td></tr>
+ offset</th><td>The offset to move the pointer to.</td></tr>
</table>
</dl></dl>
-<a name="apr_make_dir"></a>
+<a name="apr_status_t-34"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_make_dir(const char *path, apr_fileperms_t perm, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *cont);</b>
<dd>
-Create a new directory on the file system.
+Create an anonymous pipe.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- path</th><td>the path for the directory to be created. (use / on all systems)
+ in</th><td>The file descriptor to use as input to the pipe.
</td></tr>
<tr valign=top><th align=right>
- perm</th><td>Permissions for the new direcoty.
+ out</th><td>The file descriptor to use as output from the pipe.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>the pool to use.</td></tr>
+ cont</th><td>The pool to operate on.</td></tr>
</table>
</dl></dl>
-<a name="apr_merge_canonical_name"></a>
+<a name="apr_status_t-35"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_merge_canonical_name(apr_canon_t **new_name, const apr_canon_t *trusted_name, const apr_canon_t *child_name, int options, apr_pool_t *pool);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *cont);</b>
<dd>
-Merge two canonical names into a single canonical name.
+Create a named pipe.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- new_name</th><td>The newly allocated canonicalized trusted+child name
-</td></tr>
<tr valign=top><th align=right>
- trusted_name</th><td>Already canonical parent path; may be NULL.
-</td></tr>
-<tr valign=top><th align=right>
- child_name</th><td>An already canonical absolute path or path relative to
- trusted_name.
+ filename</th><td>The filename of the named pipe
</td></tr>
<tr valign=top><th align=right>
- options</th><td>See apr_make_canonical_name for options
+ perm</th><td>The permissions for the newly created pipe.
</td></tr>
<tr valign=top><th align=right>
- pool</th><td>The pool to allocate the new_name out of.</td></tr>
+ cont</th><td>The pool to operate on.</td></tr>
</table>
- <dt><b>See Also</b><dd>
- <a href="#apr_make_canonical_name">apr_make_canonical_name</a><p></dl></dl>
+ </dl></dl>
-<a name="apr_open"></a>
+<a name="apr_status_t-36"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_open(apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout);</b>
<dd>
-Open the specified file.
-<p><img src="../images//tip.gif"> If perm is APR_OS_DEFAULT and the file is being created, appropriate
- default permissions will be used. *arg1 must point to a valid file_t,
- or NULL (in which case it will be allocated)
+Get the timeout value for a pipe or manipulate the blocking state.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- new_file</th><td>The opened file descriptor.
-</td></tr>
-<tr valign=top><th align=right>
- fname</th><td>The full path to the file (using / on all systems)
-</td></tr>
-<tr valign=top><th align=right>
- flag</th><td>Or'ed value of:
-<PRE>
- APR_READ open for reading
- APR_WRITE open for writing
- APR_CREATE create the file if not there
- APR_APPEND file ptr is set to end prior to all writes
- APR_TRUNCATE set length to zero if file exists
- APR_BINARY not a text file (This flag is ignored on
- UNIX because it has no meaning)
- APR_BUFFERED buffer the data. Default is non-buffered
- APR_EXCL return error if APR_CREATE and file exists
- APR_DELONCLOSE delete the file after closing.
-</PRE>
-</td></tr>
<tr valign=top><th align=right>
- perm</th><td>Access permissions for file.
+ thepipe</th><td>The pipe we are getting a timeout for.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use.</td></tr>
+ timeout</th><td>The current timeout value in microseconds.</td></tr>
</table>
</dl></dl>
-<a name="apr_open_stderr"></a>
+<a name="apr_status_t-37"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_open_stderr(apr_file_t **thefile, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout);</b>
<dd>
-open standard error as an apr file pointer.
+Set the timeout value for a pipe or manipulate the blocking state.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thefile</th><td>The apr file to use as stderr.
+ thepipe</th><td>The pipe we are setting a timeout on.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to allocate the file out of.</td></tr>
+ timeout</th><td>The timeout value in microseconds. Values < 0 mean wait
+ forever, 0 means do not wait at all.</td></tr>
</table>
</dl></dl>
-<a name="apr_opendir"></a>
+<a name="apr_status_t-38"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_opendir(apr_dir_t **new_dir, const char *dirname, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_lock(apr_file_t *thefile, int type);</b>
<dd>
-Open the specified directory.
+file (un)locking functions. Establish a lock on the specified, open file. The lock may be advisory
+or mandatory, at the discretion of the platform. The lock applies to
+the file as a whole, rather than a specific range. Locks are established
+on a per-thread/process basis; a second lock by the same thread will not
+block.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- new_dir</th><td>The opened directory descriptor.
-</td></tr>
-<tr valign=top><th align=right>
- dirname</th><td>The full path to the directory (use / on all systems)
+ thefile</th><td>The file to lock.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use.</td></tr>
+ type</th><td>The type of lock to establish on the file.</td></tr>
</table>
</dl></dl>
-<a name="apr_putc"></a>
+<a name="apr_status_t-39"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_putc(char ch, apr_file_t *thefile);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_unlock(apr_file_t *thefile);</b>
<dd>
-put a character into the specified file.
+Remove any outstanding locks on the file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- ch</th><td>The character to write.
-</td></tr>
<tr valign=top><th align=right>
- thefile</th><td>The file descriptor to write to</td></tr>
+ thefile</th><td>The file to unlock.</td></tr>
</table>
</dl></dl>
-<a name="apr_puts"></a>
+<a name="apr_status_t-40"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_puts(const char *str, apr_file_t *thefile);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_name_get(const char **new_path, apr_file_t *thefile);</b>
<dd>
-Put the string into a specified file.
+return the file name of the current file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- str</th><td>The string to write.
+ new_path</th><td>The path of the file.
</td></tr>
<tr valign=top><th align=right>
- thefile</th><td>The file descriptor to write to</td></tr>
+ thefile</th><td>The currently open file.</td></tr>
</table>
</dl></dl>
-<a name="apr_read"></a>
+<a name="apr_status_t-41"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_data_get(void **data, const char *key, apr_file_t *file);</b>
<dd>
-Read data from the specified file.
-<p><img src="../images//tip.gif"> apr_read will read up to the specified number of bytes, but never
- more. If there isn't enough data to fill that number of bytes, all
- of the available data is read. The third argument is modified to
- reflect the number of bytes read. If a char was put back into the
- stream via ungetc, it will be the first character returned.
- It is possible for both bytes to be read and an APR_EOF or other
- error to be returned.
- APR_EINTR is never returned.
+Return the data associated with the current file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thefile</th><td>The file descriptor to read from.
+ data</th><td>The user data associated with the file.
</td></tr>
<tr valign=top><th align=right>
- buf</th><td>The buffer to store the data to.
+ key</th><td>The key to use for retreiving data associated with this file.
</td></tr>
<tr valign=top><th align=right>
- nbytes</th><td>On entry, the number of bytes to read; on exit, the number of bytes read.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_readdir"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_readdir(apr_dir_t *thedir);</b>
- <dd>
-Read the next entry from the specified directory.
-<p><img src="../images//tip.gif"> All systems return . and .. as the first two files.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- thedir</th><td>the directory descriptor to read from, and fill out.</td></tr>
+ file</th><td>The currently open file.</td></tr>
</table>
</dl></dl>
-<a name="apr_remove_dir"></a>
+<a name="apr_status_t-42"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_remove_dir(const char *path, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_data_set(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup)(void *));</b>
<dd>
-Remove directory from the file system.
+Set the data associated with the current file.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- path</th><td>the path for the directory to be removed. (use / on all systems)
+ file</th><td>The currently open file.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>the pool to use.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_remove_file"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_remove_file(const char *path, apr_pool_t *cont);</b>
- <dd>
-delete the specified file.
-<p><img src="../images//tip.gif"> If the file is open, it won't be removed until all instances are closed.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
+ data</th><td>The user data to associate with the file.
+</td></tr>
<tr valign=top><th align=right>
- path</th><td>The full path to the file (using / on all systems)
+ key</th><td>The key to use for assocaiteing data with the file.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use.</td></tr>
+ cleanup</th><td>The cleanup routine to use when the file is destroyed.</td></tr>
</table>
</dl></dl>
-<a name="apr_rename_file"></a>
+<a name="apr_status_t-43"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_rename_file(const char *from_path, const char *to_path, apr_pool_t *pool);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_perms_set(const char *fname, apr_fileperms_t perms);</b>
<dd>
-rename the specified file.
-<p><img src="../images//tip.gif"> If a file exists at the new location, then it will be overwritten.
- Moving files or directories across devices may not be possible.
+set the specified file's permission bits.
+<p><img src="../images//tip.gif"> Some platforms may not be able to apply all of the available
+ permission bits; APR_INCOMPLETE will be returned if some permissions
+ are specified which could not be set.
+ Platforms which do not implement this feature will return APR_ENOTIMPL.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- from_path</th><td>The full path to the original file (using / on all systems)
-</td></tr>
<tr valign=top><th align=right>
- to_path</th><td>The full path to the new file (using / on all systems)
+ fname</th><td>The file (name) to apply the permissions to.
</td></tr>
<tr valign=top><th align=right>
- pool</th><td>The pool to use.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_rewinddir"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_rewinddir(apr_dir_t *thedir);</b>
- <dd>
-Rewind the directory to the first entry.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- thedir</th><td>the directory descriptor to rewind.</td></tr>
+ perms</th><td>The permission bits to apply to the file.</td></tr>
</table>
</dl></dl>
-<a name="apr_seek"></a>
+<a name="apr_status_t-44"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_seek(apr_file_t *thefile, apr_seek_where_t where,apr_off_t *offset);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *cont);</b>
<dd>
-Move the read/write file offset to a specified byte within a file.
-<p><img src="../images//tip.gif"> The third argument is modified to be the offset the pointer
- was actually moved to.
+Create a new directory on the file system.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thefile</th><td>The file descriptor
+ path</th><td>the path for the directory to be created. (use / on all systems)
</td></tr>
<tr valign=top><th align=right>
- where</th><td>How to move the pointer, one of:
-<PRE>
- APR_SET -- set the offset to offset
- APR_CUR -- add the offset to the current position
- APR_END -- add the offset to the current file size
+ perm</th><td>Permissions for the new direcoty.
</td></tr>
<tr valign=top><th align=right>
- offset</th><td>The offset to move the pointer to.</td></tr>
+ cont</th><td>the pool to use.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_filedata"></a>
+<a name="apr_status_t-45"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_filedata(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup) (void *));</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_remove(const char *path, apr_pool_t *cont);</b>
<dd>
-Set the data associated with the current file.
+Remove directory from the file system.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- file</th><td>The currently open file.
-</td></tr>
-<tr valign=top><th align=right>
- data</th><td>The user data to associate with the file.
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The key to use for assocaiteing data with the file.
+ path</th><td>the path for the directory to be removed. (use / on all systems)
</td></tr>
<tr valign=top><th align=right>
- cleanup</th><td>The cleanup routine to use when the file is destroyed.</td></tr>
+ cont</th><td>the pool to use.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_pipe_timeout"></a>
+<a name="apr_status_t-46"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t timeout);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *thefile);</b>
<dd>
-Set the timeout value for a pipe or manipulate the blocking state.
+get the specified file's stats.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thepipe</th><td>The pipe we are setting a timeout on.
+ finfo</th><td>Where to store the information about the file.
</td></tr>
<tr valign=top><th align=right>
- timeout</th><td>The timeout value in microseconds. Values < 0 mean wait
- forever, 0 means do not wait at all.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_setfileperms"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setfileperms(const char *fname, apr_fileperms_t perms);</b>
- <dd>
-set the specified file's permission bits.
-<p><img src="../images//tip.gif"> Some platforms may not be able to apply all of the available
- permission bits; APR_INCOMPLETE will be returned if some permissions
- are specified which could not be set.
- Platforms which do not implement this feature will return APR_ENOTIMPL.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- fname</th><td>The file (name) to apply the permissions to.
+ wanted</th><td>The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values
</td></tr>
<tr valign=top><th align=right>
- perms</th><td>The permission bits to apply to the file.</td></tr>
+ thefile</th><td>The file to get information about.</td></tr>
</table>
</dl></dl>
-<a name="apr_stat"></a>
+<a name="apr_status_t-7"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_stat(apr_finfo_t *finfo, const char *fname, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_stat(apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *cont);</b>
<dd>
get the specified file's stats. The file is specified by filename,
instead of using a pre-opened file.
@@ -1250,106 +1091,66 @@
<tr valign=top><th align=right>
fname</th><td>The name of the file to stat.
</td></tr>
-<tr valign=top><th align=right>
- cont</th><td>the pool to use to allocate the new file.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_ungetc"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ungetc(char ch, apr_file_t *thefile);</b>
- <dd>
-put a character back onto a specified stream.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
<tr valign=top><th align=right>
- ch</th><td>The character to write.
+ wanted</th><td>The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values
</td></tr>
<tr valign=top><th align=right>
- thefile</th><td>The file descriptor to write to</td></tr>
+ cont</th><td>the pool to use to allocate the new file.</td></tr>
</table>
</dl></dl>
-<a name="apr_unlock_file"></a>
+<a name="apr_status_t-8"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_unlock_file(apr_file_t *thefile);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lstat(apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *cont);</b>
<dd>
-Remove any outstanding locks on the file.
+get the specified file's stats. The file is specified by filename,
+instead of using a pre-opened file. If the file is a symlink, this function
+will get the stats for the symlink not the file the symlink refers to.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thefile</th><td>The file to unlock.</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_write"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes);</b>
- <dd>
-Write data to the specified file.
-<p><img src="../images//tip.gif"> apr_write will write up to the specified number of bytes, but never
- more. If the OS cannot write that many bytes, it will write as many
- as it can. The third argument is modified to reflect the * number
- of bytes written.
- It is possible for both bytes to be written and an error to be returned.
- APR_EINTR is never returned.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
+ finfo</th><td>Where to store the information about the file, which is
+never touched if the call fails.
+</td></tr>
<tr valign=top><th align=right>
- thefile</th><td>The file descriptor to write to.
+ fname</th><td>The name of the file to stat.
</td></tr>
<tr valign=top><th align=right>
- buf</th><td>The buffer which contains the data.
+ wanted</th><td>The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values
</td></tr>
<tr valign=top><th align=right>
- nbytes</th><td>On entry, the number of bytes to write; on exit, the number
- of bytes written.</td></tr>
+ cont</th><td>the pool to use to allocate the new file.</td></tr>
</table>
</dl></dl>
-<a name="apr_writev"></a>
+<a name="apr_status_t-9"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dir_open(apr_dir_t **new_dir, const char *dirname, apr_pool_t *cont);</b>
<dd>
-Write data from iovec array to the specified file.
-<p><img src="../images//tip.gif"> It is possible for both bytes to be written and an error to be returned.
- APR_EINTR is never returned.
- apr_writev is available even if the underlying operating system
- doesn't provide writev().
+Open the specified directory.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- thefile</th><td>The file descriptor to write to.
-</td></tr>
<tr valign=top><th align=right>
- vec</th><td>The array from which to get the data to write to the file.
+ new_dir</th><td>The opened directory descriptor.
</td></tr>
<tr valign=top><th align=right>
- nvec</th><td>The number of elements in the struct iovec array. This must
- be smaller than APR_MAX_IOVEC_SIZE. If it isn't, the function
- will fail with APR_EINVAL.
+ dirname</th><td>The full path to the directory (use / on all systems)
</td></tr>
<tr valign=top><th align=right>
- nbytes</th><td>The number of bytes written.</td></tr>
+ cont</th><td>The pool to use.</td></tr>
</table>
</dl></dl>
-<a name="int"></a>
+<a name="int-2"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_fprintf(apr_file_t *fptr, const char *format, ...);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_file_printf(apr_file_t *fptr, const char *format, ...);</b>
<dd>
Write a string to a file using a printf format.
<p><dl>
@@ -1370,7 +1171,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +80 -64 apr-site/docs/APR_I18N_translation_library.html
Index: APR_I18N_translation_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_I18N_translation_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_I18N_translation_library.html 2000/12/04 18:13:58 1.3
+++ APR_I18N_translation_library.html 2001/02/11 02:54:57 1.4
@@ -15,59 +15,86 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_xlate_close"></a>
+<a name="-22"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_close(apr_xlate_t *convset);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Close a codepage translation handle.
+<p><img src="../images//tip.gif">
+<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>
+</dl></dl>
+
+<a name="-23"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_int32_t);</b>
+ <dd>
+<p><img src="../images//tip.gif"> This only works when converting between single-byte character sets.
+ -1 will be returned if the conversion can't be performed.
+<p><dl>
+</dl></dl>
+<a name="apr_int32_t"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_int32_t apr_xlate_conv_byte(apr_xlate_t *convset, unsigned char inchar);</b>
+ <dd>
+Convert a single-byte character from one charset to another.
+<p><dl>
+
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- convset</th><td>The codepage translation handle to close</td></tr>
+ convset</th><td>The handle allocated by apr_xlate_open, specifying the
+ parameters of conversion
+</td></tr>
+<tr valign=top><th align=right>
+ inchar</th><td>The single-byte character to convert.</td></tr>
</table>
</dl></dl>
-<a name="apr_xlate_conv_buffer"></a>
+<a name="apr_status_t-175"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_conv_buffer(apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_open(apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool);</b>
<dd>
-Convert a buffer of text from one codepage to another.
+Set up for converting text from one charset to another.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- convset</th><td>The handle allocated by apr_xlate_open, specifying
- the parameters of conversion
-</td></tr>
-<tr valign=top><th align=right>
- inbuf</th><td>The address of the source buffer
+ convset</th><td>The handle to be filled in by this function
</td></tr>
<tr valign=top><th align=right>
- inbytes_left</th><td>Input: the amount of input data to be translated
- Output: the amount of input data not yet translated
+ topage</th><td>The name of the target charset
</td></tr>
<tr valign=top><th align=right>
- outbuf</th><td>The address of the destination buffer
+ frompage</th><td>The name of the source charset
</td></tr>
<tr valign=top><th align=right>
- outbytes_left</th><td>Input: the size of the output buffer
- Output: the amount of the output buffer not yet used</td></tr>
+ pool</th><td>The pool to use</td></tr>
</table>
</dl></dl>
-<a name="apr_xlate_conv_byte"></a>
+<a name="apr_status_t-176"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_int32_t apr_xlate_conv_byte(apr_xlate_t *convset, unsigned char inchar);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_get_sb(apr_xlate_t *convset, int *onoff);</b>
<dd>
-Convert a single-byte character from one charset to another.
-<p><img src="../images//tip.gif"> This only works when converting between single-byte character sets.
- -1 will be returned if the conversion can't be performed.
+Find out whether or not the specified conversion is single-byte-only.
<p><dl>
<dt><b>Parameters</b><dd>
@@ -77,40 +104,48 @@
parameters of conversion
</td></tr>
<tr valign=top><th align=right>
- inchar</th><td>The single-byte character to convert.</td></tr>
+ onoff</th><td>Output: whether or not the conversion is single-byte-only</td></tr>
</table>
</dl></dl>
-<a name="apr_xlate_conv_char"></a>
+<a name="apr_status_t-177"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_conv_char(apr_xlate_t *convset, char inchar, char outchar);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_conv_buffer(apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left);</b>
<dd>
-The purpose of apr_xlate_conv_char is to translate one character
-at a time. This needs to be written carefully so that it works
-with double-byte character sets.
+Convert a buffer of text from one codepage to another.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- convset</th><td>The handle allocated by apr_xlate_open, specifying the
- parameters of conversion
+ convset</th><td>The handle allocated by apr_xlate_open, specifying
+ the parameters of conversion
</td></tr>
<tr valign=top><th align=right>
- inchar</th><td>The character to convert
+ inbuf</th><td>The address of the source buffer
</td></tr>
<tr valign=top><th align=right>
- outchar</th><td>The converted character</td></tr>
+ inbytes_left</th><td>Input: the amount of input data to be translated
+ Output: the amount of input data not yet translated
+</td></tr>
+<tr valign=top><th align=right>
+ outbuf</th><td>The address of the destination buffer
+</td></tr>
+<tr valign=top><th align=right>
+ outbytes_left</th><td>Input: the size of the output buffer
+ Output: the amount of the output buffer not yet used</td></tr>
</table>
</dl></dl>
-<a name="apr_xlate_get_sb"></a>
+<a name="apr_status_t-178"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_get_sb(apr_xlate_t *convset, int *onoff);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_conv_char(apr_xlate_t *convset, char inchar, char outchar);</b>
<dd>
-Find out whether or not the specified conversion is single-byte-only.
+The purpose of apr_xlate_conv_char is to translate one character
+at a time. This needs to be written carefully so that it works
+with double-byte character sets.
<p><dl>
<dt><b>Parameters</b><dd>
@@ -120,44 +155,25 @@
parameters of conversion
</td></tr>
<tr valign=top><th align=right>
- onoff</th><td>Output: whether or not the conversion is single-byte-only</td></tr>
+ inchar</th><td>The character to convert
+</td></tr>
+<tr valign=top><th align=right>
+ outchar</th><td>The converted character</td></tr>
</table>
</dl></dl>
-<a name="apr_xlate_open"></a>
+<a name="apr_status_t-179"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_open(apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_xlate_close(apr_xlate_t *convset);</b>
<dd>
-Set up for converting text from one charset to another.
-<p><img src="../images//tip.gif">
-<PRE>
- Specify APR_DEFAULT_CHARSET for one of the charset
- names to indicate the charset of the source code at
- compile time. This is useful if there are literal
- strings in the source code which must be translated
- according to the charset of the source code.
- APR_DEFAULT_CHARSET is not useful if the source code
- of the caller was not encoded in the same charset as
- APR at compile time.
- Specify APR_LOCALE_CHARSET for one of the charset
- names to indicate the charset of the current locale.
-</PRE>
+Close a codepage translation handle.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- convset</th><td>The handle to be filled in by this function
-</td></tr>
-<tr valign=top><th align=right>
- topage</th><td>The name of the target charset
-</td></tr>
-<tr valign=top><th align=right>
- frompage</th><td>The name of the source charset
-</td></tr>
-<tr valign=top><th align=right>
- pool</th><td>The pool to use</td></tr>
+ convset</th><td>The codepage translation handle to close</td></tr>
</table>
</dl></dl>
</blockquote>
@@ -165,7 +181,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +37 -37 apr-site/docs/APR_MD5_Library.html
Index: APR_MD5_Library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_MD5_Library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_MD5_Library.html 2000/12/04 18:13:59 1.3
+++ APR_MD5_Library.html 2001/02/11 02:54:57 1.4
@@ -74,102 +74,102 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_status_t-10"></a>
+<a name="apr_status_t-63"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5Final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_init(apr_md5_ctx_t *context);</b>
<dd>
-MD5 finalization. Ends an MD5 message-digest operation, writing the
-message digest and zeroing the context
+MD5 Initialize. Begins an MD5 operation, writing a new context.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- digest</th><td>The final MD5 digest
-</td></tr>
<tr valign=top><th align=right>
- context</th><td>The MD5 content we are finalizing.</td></tr>
+ context</th><td>The MD5 context to initialize.</td></tr>
</table>
</dl></dl>
-<a name="apr_status_t-11"></a>
+<a name="apr_status_t-64"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5Encode(const char *password, const char *salt, char *result, size_t nbytes);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_set_xlate(apr_md5_ctx_t *context, apr_xlate_t *xlate);</b>
<dd>
-Encode a password using an MD5 algorithm
+MD5 translation setup. Provides the APR translation handle to be used
+for translating the content before calculating the digest.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- password</th><td>The password to encode
-</td></tr>
-<tr valign=top><th align=right>
- salt</th><td>The salt to use for the encoding
-</td></tr>
-<tr valign=top><th align=right>
- result</th><td>The string to store the encoded password in
+ context</th><td>The MD5 content to set the translation for.
</td></tr>
<tr valign=top><th align=right>
- nbytes</th><td>The length of the string</td></tr>
+ xlate</th><td>The translation handle to use for this MD5 context</td></tr>
</table>
</dl></dl>
-<a name="apr_status_t-7"></a>
+<a name="apr_status_t-65"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5Init(apr_md5_ctx_t *context);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen);</b>
<dd>
-MD5 Initialize. Begins an MD5 operation, writing a new context.
+MD5 block update operation. Continue an MD5 message-digest operation,
+processing another message block, and updating the context.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- context</th><td>The MD5 context to initialize.</td></tr>
+ context</th><td>The MD5 content to update.
+</td></tr>
+<tr valign=top><th align=right>
+ input</th><td>next message block to update
+</td></tr>
+<tr valign=top><th align=right>
+ inputLen</th><td>The length of the next message block</td></tr>
</table>
</dl></dl>
-<a name="apr_status_t-8"></a>
+<a name="apr_status_t-66"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5SetXlate(apr_md5_ctx_t *context, apr_xlate_t *xlate);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context);</b>
<dd>
-MD5 translation setup. Provides the APR translation handle to be used
-for translating the content before calculating the digest.
+MD5 finalization. Ends an MD5 message-digest operation, writing the
+message digest and zeroing the context
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- context</th><td>The MD5 content to set the translation for.
+ digest</th><td>The final MD5 digest
</td></tr>
<tr valign=top><th align=right>
- xlate</th><td>The translation handle to use for this MD5 context</td></tr>
+ context</th><td>The MD5 content we are finalizing.</td></tr>
</table>
</dl></dl>
-<a name="apr_status_t-9"></a>
+<a name="apr_status_t-67"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_MD5Update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_md5_encode(const char *password, const char *salt, char *result, size_t nbytes);</b>
<dd>
-MD5 block update operation. Continue an MD5 message-digest operation,
-processing another message block, and updating the context.
+Encode a password using an MD5 algorithm
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- context</th><td>The MD5 content to update.
+ password</th><td>The password to encode
</td></tr>
<tr valign=top><th align=right>
- input</th><td>next message block to update
+ salt</th><td>The salt to use for the encoding
</td></tr>
<tr valign=top><th align=right>
- inputLen</th><td>The length of the next message block</td></tr>
+ result</th><td>The string to store the encoded password in
+</td></tr>
+<tr valign=top><th align=right>
+ nbytes</th><td>The length of the string</td></tr>
</table>
</dl></dl>
</blockquote>
@@ -177,7 +177,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +42 -5 apr-site/docs/APR_MMAP_library.html
Index: APR_MMAP_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_MMAP_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_MMAP_library.html 2000/12/04 18:13:59 1.3
+++ APR_MMAP_library.html 2001/02/11 02:54:57 1.4
@@ -15,7 +15,10 @@
<ul>
<li><a href="APR_MMAP_library.html#apr_mmap_t-area">area</a>
<li><a href="APR_MMAP_library.html#apr_mmap_t-cntxt">cntxt</a>
+<li><a href="APR_MMAP_library.html#apr_mmap_t-mhandle">mhandle</a>
<li><a href="APR_MMAP_library.html#apr_mmap_t-mm">mm</a>
+<li><a href="APR_MMAP_library.html#apr_mmap_t-mv">mv</a>
+<li><a href="APR_MMAP_library.html#apr_mmap_t-pstart">pstart</a>
<li><a href="APR_MMAP_library.html#apr_mmap_t-size">size</a>
</ul>
@@ -34,7 +37,10 @@
The MMAP structure<h2>Member Index</h2>
<ul><li><a href="APR_MMAP_library.html#apr_mmap_t-area"> area_id area</a>
<li><a href="APR_MMAP_library.html#apr_mmap_t-cntxt"> apr_pool_t *cntxt</a>
+ <li><a href="APR_MMAP_library.html#apr_mmap_t-mhandle"> HANDLE mhandle</a>
<li><a href="APR_MMAP_library.html#apr_mmap_t-mm"> void *mm</a>
+ <li><a href="APR_MMAP_library.html#apr_mmap_t-mv"> void *mv</a>
+ <li><a href="APR_MMAP_library.html#apr_mmap_t-pstart"> size_t pstart</a>
<li><a href="APR_MMAP_library.html#apr_mmap_t-size"> size_t size</a>
</ul><h2>Class Variables</h2>
<blockquote>
@@ -55,6 +61,14 @@
<p><dl>
</dl></dl>
+ <a name="mhandle"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> HANDLE mhandle;</b>
+<dd>
+The handle of the file mapping
+<p><dl>
+</dl></dl>
+
<a name="mm"></a>
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> void *mm;</b>
@@ -63,6 +77,22 @@
<p><dl>
</dl></dl>
+ <a name="mv"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> void *mv;</b>
+<dd>
+The start of the real memory page area (mapped view)
+<p><dl>
+</dl></dl>
+
+ <a name="pstart"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> size_t pstart;</b>
+<dd>
+The physical start, size and offset
+<p><dl>
+</dl></dl>
+
<a name="size"></a>
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> size_t size;</b>
@@ -74,10 +104,10 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_mmap_create"></a>
+<a name="apr_status_t-68"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mmap_create(apr_mmap_t ** newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_pool_t *cntxt);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mmap_create(apr_mmap_t **newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_int32_t flag, apr_pool_t *cntxt);</b>
<dd>
Create a new mmap'ed file out of an existing APR file.
<p><dl>
@@ -97,11 +127,18 @@
size</th><td>The size of the file
</td></tr>
<tr valign=top><th align=right>
+ flag</th><td>bit-wise or of:
+<PRE>
+ APR_MMAP_READ MMap opened for reading
+ APR_MMAP_WRITE MMap opened for writing
+</PRE>
+</td></tr>
+<tr valign=top><th align=right>
cntxt</th><td>The pool to use when creating the mmap.</td></tr>
</table>
</dl></dl>
-<a name="apr_mmap_delete"></a>
+<a name="apr_status_t-69"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mmap_delete(apr_mmap_t *mmap);</b>
@@ -116,7 +153,7 @@
</table>
</dl></dl>
-<a name="apr_mmap_offset"></a>
+<a name="apr_status_t-70"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mmap_offset(void **addr, apr_mmap_t *mmap, apr_off_t offset);</b>
@@ -141,7 +178,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +419 -335 apr-site/docs/APR_Network_library.html
Index: APR_Network_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_Network_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_Network_library.html 2000/12/04 18:13:59 1.3
+++ APR_Network_library.html 2001/02/11 02:54:57 1.4
@@ -25,6 +25,7 @@
<li><a href="APR_Network_library.html#apr_sockaddr_t-hostname">hostname</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-ipaddr_len">ipaddr_len</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-ipaddr_ptr">ipaddr_ptr</a>
+<li><a href="APR_Network_library.html#apr_sockaddr_t-next">next</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-pool">pool</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-port">port</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-salen">salen</a>
@@ -99,6 +100,7 @@
<li><a href="APR_Network_library.html#apr_sockaddr_t-hostname"> char *hostname</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-ipaddr_len"> int ipaddr_len</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-ipaddr_ptr"> void *ipaddr_ptr</a>
+ <li><a href="APR_Network_library.html#apr_sockaddr_t-next"> apr_sockaddr_t *next</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-pool"> apr_pool_t *pool</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-port"> apr_port_t port</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t-salen"> apr_socklen_t salen</a>
@@ -140,6 +142,15 @@
<p><dl>
</dl></dl>
+ <a name="next"></a>
+ <dl><dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_sockaddr_t *next;</b>
+<dd>
+If multiple addresses were found by apr_sockaddr_info_get(), this
+ points to a representation of the next address.
+<p><dl>
+</dl></dl>
+
<a name="pool"></a>
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_pool_t *pool;</b>
@@ -175,138 +186,224 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_accept"></a>
+<a name="-10"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_accept(apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Accept a new connection request
+<p><img src="../images//warning.gif" align=left> This is not available on all platforms. Platforms that have the
+ ability to poll files for data to be read/written/exceptions will
+ have the APR_FILES_AS_SOCKETS macro defined as true.
+<p><dl>
+</dl></dl>
+
+<a name="-5"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
+ <dd>
+<p><img src="../images//tip.gif"> This does not actually close the socket descriptor, it just
+ controls which calls are still valid on the socket.
+<p><dl>
+</dl></dl>
+
+<a name="-6"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
+ <dd>
+<p><img src="../images//tip.gif">
+<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>
+</dl></dl>
+<a name="-7"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
+ <dd>
+<p><img src="../images//tip.gif">
+<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>
+</dl></dl>
+
+<a name="-8"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
+ <dd>
+<p><img src="../images//tip.gif"> This functions acts like a blocking write by default. To change
+ this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
+ The number of bytes actually sent is stored in argument 5.
+<p><dl>
+</dl></dl>
+
+<a name="-9"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
+ <dd>
+<p><img src="../images//tip.gif">
+<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>
+</dl></dl>
+
+<a name="apr_status_t-100"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_socket_clear(apr_pollfd_t *aprset, apr_int16_t events);</b>
+ <dd>
+Remove all sockets from the poll structure.
+<p><dl>
+
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- new_sock</th><td>A copy of the socket that is connected to the socket that
- made the connection request. This is the socket which should
- be used for all future communication.
-</td></tr>
<tr valign=top><th align=right>
- sock</th><td>The socket we are listening on.
+ aprset</th><td>The poll structure we will be using.
</td></tr>
<tr valign=top><th align=right>
- connection_pool</th><td>The pool for the new socket.</td></tr>
+ events</th><td>The events to clear from all sockets. One of:
+<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_add_poll_socket"></a>
+<a name="apr_status_t-101"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_add_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t event);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_revents_get(apr_int16_t *event, apr_socket_t *sock, apr_pollfd_t *aprset);</b>
<dd>
-Add a socket to the poll structure.
+Get the return events for the specified socket.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- aprset</th><td>The poll structure we will be using.
+ event</th><td>The returned events for the socket. One of:
+<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>
- socket</th><td>The socket to add to the current poll structure.
+ sock</th><td>The socket we wish to get information about.
</td></tr>
<tr valign=top><th align=right>
- event</th><td>The events to look for when we do the poll. One of:
-<PRE>
- APR_POLLIN signal if read will not block
- APR_POLLPRI signal if prioirty data is availble to be read
- APR_POLLOUT signal if write will not block
-</PRE></td></tr>
+ aprset</th><td>The poll structure we will be using.</td></tr>
</table>
</dl></dl>
-<a name="apr_bind"></a>
+<a name="apr_status_t-102"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_data_get(apr_pollfd_t *pollfd, const char *key, void *data);</b>
<dd>
-Bind the socket to its associated port
-<p><img src="../images//tip.gif"> This may be where we will find out if there is any other process
- using the selected port.
+Return the data associated with the current poll.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sock</th><td>The socket to bind
+ pollfd</th><td>The currently open pollfd.
</td></tr>
<tr valign=top><th align=right>
- sa</th><td>The socket address to bind to</td></tr>
+ key</th><td>The key to use for retreiving data associated with a poll struct.
+</td></tr>
+<tr valign=top><th align=right>
+ data</th><td>The user data associated with the pollfd.</td></tr>
</table>
</dl></dl>
-<a name="apr_clear_poll_sockets"></a>
+<a name="apr_status_t-103"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_clear_poll_sockets(apr_pollfd_t *aprset, apr_int16_t events);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_data_set(apr_pollfd_t *pollfd, void *data, const char *key, apr_status_t (*cleanup)(void *));</b>
<dd>
-Remove all sockets from the poll structure.
+Set the data associated with the current poll.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- aprset</th><td>The poll structure we will be using.
+ pollfd</th><td>The currently open pollfd.
</td></tr>
<tr valign=top><th align=right>
- events</th><td>The events to clear from all sockets. One of:
-<PRE>
- APR_POLLIN signal if read will not block
- APR_POLLPRI signal if prioirty data is availble to be read
- APR_POLLOUT signal if write will not block
-</PRE></td></tr>
+ data</th><td>The key to associate with the data.
+</td></tr>
+<tr valign=top><th align=right>
+ key</th><td>The user data to associate with the pollfd.
+</td></tr>
+<tr valign=top><th align=right>
+ cleanup</th><td>The cleanup function</td></tr>
</table>
</dl></dl>
-<a name="apr_close_socket"></a>
+<a name="apr_status_t-104"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_close_socket(apr_socket_t *thesocket);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file);</b>
<dd>
-Close a tcp socket.
+Convert a File type to a socket so that it can be used in a poll operation.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thesocket</th><td>The socket to close</td></tr>
+ newsock</th><td>the newly created socket which represents a file.
+</td></tr>
+<tr valign=top><th align=right>
+ file</th><td>the file to mask as a socket.</td></tr>
</table>
</dl></dl>
-<a name="apr_connect"></a>
+<a name="apr_status_t-105"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getservbyname(apr_sockaddr_t *sockaddr, const char *servname);</b>
<dd>
-Issue a connection request to a socket either on the same machine
-or a different one.
+Given an apr_sockaddr_t and a service name, set the port for the service
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sock</th><td>The socket we wish to use for our side of the connection
+ sockaddr</th><td>The apr_sockaddr_t that will have it's port set
</td></tr>
<tr valign=top><th align=right>
- sa</th><td>The address of the machine we wish to connect to. If NULL,
- APR assumes that the sockaddr_in in the apr_socket is
- completely filled out.</td></tr>
+ servname</th><td>The name of the service you wish to use</td></tr>
</table>
</dl></dl>
-<a name="apr_create_socket"></a>
+<a name="apr_status_t-71"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_socket(apr_socket_t **new_sock, int family, int type, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_create(apr_socket_t **new_sock, int family, int type, apr_pool_t *cont);</b>
<dd>
Create a socket.
<p><dl>
@@ -327,207 +424,224 @@
</table>
</dl></dl>
-<a name="apr_get_hostname"></a>
+<a name="apr_status_t-72"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_hostname(char **name, apr_interface_e which, apr_socket_t *sock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how);</b>
<dd>
-Get name of a machine we are currently connected to.
+Shutdown either reading, writing, or both sides of a tcp socket.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- name</th><td>A buffer to store the hostname in.
-</td></tr>
-<tr valign=top><th align=right>
- which</th><td>Which interface do we wnt the hostname for?
+ thesocket</th><td>The socket to close
</td></tr>
<tr valign=top><th align=right>
- sock</th><td>The socket to examine.</td></tr>
+ how</th><td>How to shutdown the socket. One of:
+<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_get_inaddr"></a>
+<a name="apr_status_t-73"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_inaddr(apr_in_addr_t *addr, char *hostname);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_close(apr_socket_t *thesocket);</b>
<dd>
-Given a hostname and a port, create an apr_in_addr for it...
+Close a tcp socket.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- addr</th><td>The apr_in_addr_t structure to return.
-</td></tr>
-<tr valign=top><th align=right>
- hostname</th><td>The hostname to lookup.</td></tr>
+ thesocket</th><td>The socket to close</td></tr>
</table>
</dl></dl>
-<a name="apr_get_ipaddr"></a>
+<a name="apr_status_t-74"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_ipaddr(char **addr, apr_sockaddr_t *sockaddr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa);</b>
<dd>
-Return the IP address (in numeric address string format) in
-an APR socket address.
+Bind the socket to its associated port
+<p><img src="../images//tip.gif"> This may be where we will find out if there is any other process
+ using the selected port.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- addr</th><td>The IP address.
+ sock</th><td>The socket to bind
</td></tr>
<tr valign=top><th align=right>
- sockaddr</th><td>The socket address to reference.</td></tr>
+ sa</th><td>The socket address to bind to</td></tr>
</table>
</dl></dl>
-<a name="apr_get_polldata"></a>
+<a name="apr_status_t-75"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_polldata(apr_pollfd_t *pollfd, const char *key, void *data);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog);</b>
<dd>
-Return the data associated with the current poll.
+Listen to a bound socket for connections.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- pollfd</th><td>The currently open pollfd.
-</td></tr>
<tr valign=top><th align=right>
- key</th><td>The key to use for retreiving data associated with a poll struct.
+ sock</th><td>The socket to listen on
</td></tr>
<tr valign=top><th align=right>
- data</th><td>The user data associated with the pollfd.</td></tr>
+ backlog</th><td>The number of outstanding connections allowed in the sockets
+ listen queue. If this value is less than zero, the listen
+ queue size is set to zero.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_port"></a>
+<a name="apr_status_t-76"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_port(apr_port_t *port, apr_sockaddr_t *sockaddr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_accept(apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool);</b>
<dd>
-Return the port in an APR socket address.
+Accept a new connection request
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- port</th><td>The port from the socket address.
+ new_sock</th><td>A copy of the socket that is connected to the socket that
+ made the connection request. This is the socket which should
+ be used for all future communication.
</td></tr>
<tr valign=top><th align=right>
- sockaddr</th><td>The socket address to reference.</td></tr>
+ sock</th><td>The socket we are listening on.
+</td></tr>
+<tr valign=top><th align=right>
+ connection_pool</th><td>The pool for the new socket.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_revents"></a>
+<a name="apr_status_t-77"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_revents(apr_int16_t *event, apr_socket_t *sock, apr_pollfd_t *aprset);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa);</b>
<dd>
-Get the return events for the specified socket.
+Issue a connection request to a socket either on the same machine
+or a different one.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- event</th><td>The returned events for the socket. One of:
-<PRE>
- APR_POLLIN Data is available to be read
- APR_POLLPRI Prioirty data is availble to be read
- APR_POLLOUT Write will succeed
- APR_POLLERR An error occurred on the socket
- APR_POLLHUP The connection has been terminated
- APR_POLLNVAL This is an invalid socket to poll on.
- Socket not open.
-</PRE>
-</td></tr>
<tr valign=top><th align=right>
- sock</th><td>The socket we wish to get information about.
+ sock</th><td>The socket we wish to use for our side of the connection
</td></tr>
<tr valign=top><th align=right>
- aprset</th><td>The poll structure we will be using.</td></tr>
+ sa</th><td>The address of the machine we wish to connect to. If NULL,
+ APR assumes that the sockaddr_in in the apr_socket is
+ completely filled out.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_sockaddr"></a>
+<a name="apr_status_t-78"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_sockaddr(apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_info_get(apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p);</b>
<dd>
-Return an apr_sockaddr_t from an apr_socket_t
+Create apr_sockaddr_t from hostname, address family, and port.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sa</th><td>The returned apr_sockaddr_t.
+ sa</th><td>The new apr_sockaddr_t.
</td></tr>
<tr valign=top><th align=right>
- which</th><td>Which interface do we want the apr_sockaddr_t for?
+ hostname</th><td>The hostname or numeric address string to resolve/parse.
</td></tr>
<tr valign=top><th align=right>
- sock</th><td>The socket to use</td></tr>
+ family</th><td>The address family to use, or APR_UNSPEC if the system should
+ decide.
+</td></tr>
+<tr valign=top><th align=right>
+ port</th><td>The port number.
+</td></tr>
+<tr valign=top><th align=right>
+ flags</th><td>Special processing flags.
+</td></tr>
+<tr valign=top><th align=right>
+ p</th><td>The pool for the apr_sockaddr_t and associated storage.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_socketdata"></a>
+<a name="apr_status_t-79"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_socketdata(void **data, const char *key, apr_socket_t *sock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getnameinfo(char **hostname, apr_sockaddr_t *sa, apr_int32_t flags);</b>
<dd>
-Return the data associated with the current socket
+Look up the host name from an apr_sockaddr_t.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- data</th><td>The user data associated with the socket.
+ hostname</th><td>The hostname.
</td></tr>
<tr valign=top><th align=right>
- key</th><td>The key to associate with the user data.
+ sa</th><td>The apr_sockaddr_t.
</td></tr>
<tr valign=top><th align=right>
- sock</th><td>The currently open socket.</td></tr>
+ flags</th><td>Special processing flags.</td></tr>
</table>
</dl></dl>
-<a name="apr_getaddrinfo"></a>
+<a name="apr_status_t-80"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getaddrinfo(apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_parse_addr_port(char **addr, char **scope_id, apr_port_t *port, const char *str, apr_pool_t *p);</b>
<dd>
-Create apr_sockaddr_t from hostname, address family, and port.
+Parse hostname/IP address with scope id and port.
+Any of the following strings are accepted:
+ 8080 (just the port number)
+ www.apache.org (just the hostname)
+ www.apache.org:8080 (hostname and port number)
+ [fe80::1]:80 (IPv6 numeric address string only)
+ [fe80::1%eth0] (IPv6 numeric address string and scope id)
+Invalid strings:
+ (empty string)
+ [abc] (not valid IPv6 numeric address string)
+ abc:65536 (invalid port number)
+<p><img src="../images//tip.gif"> If scope id shouldn't be allowed, check for scope_id != NULL in addition
+ to checking the return code. If addr/hostname should be required, check
+ for addr == NULL in addition to checking the return code.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- sa</th><td>The new apr_sockaddr_t.
-</td></tr>
<tr valign=top><th align=right>
- hostname</th><td>The hostname or numeric address string to resolve/parse.
+ addr</th><td>The new buffer containing just the hostname. On output, *addr
+ will be NULL if no hostname/IP address was specfied.
</td></tr>
<tr valign=top><th align=right>
- family</th><td>The address family to use, or APR_UNSPEC if the system should
- decide.
+ scope_id</th><td>The new buffer containing just the scope id. On output,
+ *scope_id will be NULL if no scope id was specified.
</td></tr>
<tr valign=top><th align=right>
- port</th><td>The port number.
+ port</th><td>The port number. On output, *port will be 0 if no port was
+ specified.
</td></tr>
<tr valign=top><th align=right>
- flags</th><td>Special processing flags.
+ str</th><td>The input string to be parsed.
</td></tr>
<tr valign=top><th align=right>
- p</th><td>The pool for the apr_sockaddr_t and associated storage.</td></tr>
+ p</th><td>The pool from which *addr and *scope_id are allocated.</td></tr>
</table>
</dl></dl>
-<a name="apr_gethostname"></a>
+<a name="apr_status_t-81"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_gethostname(char *buf, int len, apr_pool_t *cont);</b>
@@ -549,152 +663,136 @@
</table>
</dl></dl>
-<a name="apr_getservbyname"></a>
+<a name="apr_status_t-82"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getservbyname(apr_sockaddr_t *sockaddr, const char *servname);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock);</b>
<dd>
-Given an apr_sockaddr_t and a service name, set the port for the service
+Return the data associated with the current socket
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sockaddr</th><td>The apr_sockaddr_t that will have it's port set
+ data</th><td>The user data associated with the socket.
</td></tr>
<tr valign=top><th align=right>
- servname</th><td>The name of the service you wish to use</td></tr>
+ key</th><td>The key to associate with the user data.
+</td></tr>
+<tr valign=top><th align=right>
+ sock</th><td>The currently open socket.</td></tr>
</table>
</dl></dl>
-<a name="apr_getsocketopt"></a>
+<a name="apr_status_t-83"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t* on);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key, apr_status_t (*cleanup)(void*));</b>
<dd>
-Query socket options for the specified socket
+Set the data associated with the current socket.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sock</th><td>The socket to query
+ sock</th><td>The currently open socket.
</td></tr>
<tr valign=top><th align=right>
- opt</th><td>The option we would like to query. One of:
-<PRE>
- APR_SO_DEBUG -- turn on debugging information
- APR_SO_KEEPALIVE -- keep connections active
- APR_SO_LINGER -- lingers on close if data is present
- APR_SO_NONBLOCK -- Turns blocking on/off for socket
- APR_SO_REUSEADDR -- The rules used in validating addresses
- supplied to bind should allow reuse
- of local addresses.
- APR_SO_TIMEOUT -- Set the timeout value in microseconds.
- values < 0 mean wait forever. 0 means
- don't wait at all.
- APR_SO_SNDBUF -- Set the SendBufferSize
- APR_SO_RCVBUF -- Set the ReceiveBufferSize
- APR_SO_DISCONNECTED -- Query the disconnected state of the socket.
- (Currently only used on Windows)
-</PRE>
+ data</th><td>The user data to associate with the socket.
</td></tr>
<tr valign=top><th align=right>
- on</th><td>Socket option returned on the call.</td></tr>
+ key</th><td>The key to associate with the data.
+</td></tr>
+<tr valign=top><th align=right>
+ cleanup</th><td>The cleanup to call when the socket is destroyed.</td></tr>
</table>
</dl></dl>
-<a name="apr_listen"></a>
+<a name="apr_status_t-84"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len);</b>
<dd>
-Listen to a bound socket for connections.
+Send data over a network.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sock</th><td>The socket to listen on
+ sock</th><td>The socket to send the data over.
</td></tr>
<tr valign=top><th align=right>
- backlog</th><td>The number of outstanding connections allowed in the sockets
- listen queue. If this value is less than zero, the listen
- queue size is set to zero.</td></tr>
+ buf</th><td>The buffer which contains the data to be sent.
+</td></tr>
+<tr valign=top><th align=right>
+ len</th><td>On entry, the number of bytes to send; on exit, the number
+ of bytes sent.</td></tr>
</table>
</dl></dl>
-<a name="apr_mask_poll_socket"></a>
+<a name="apr_status_t-85"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_mask_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t events);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len);</b>
<dd>
-Modify a socket in the poll structure with mask.
+Send multiple packets of data over a network.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- aprset</th><td>The poll structure we will be using.
+ sock</th><td>The socket to send the data over.
</td></tr>
<tr valign=top><th align=right>
- sock</th><td>The socket to modify in poll structure.
+ vec</th><td>The array of iovec structs containing the data to send
</td></tr>
<tr valign=top><th align=right>
- events</th><td>The events to stop looking for during the poll. One of:
-<PRE>
- APR_POLLIN signal if read will not block
- APR_POLLPRI signal if prioirty data is availble to be read
- APR_POLLOUT signal if write will not block
-</PRE></td></tr>
+ nvec</th><td>The number of iovec structs in the array
+</td></tr>
+<tr valign=top><th align=right>
+ len</th><td>Receives the number of bytes actually written</td></tr>
</table>
</dl></dl>
-<a name="apr_poll"></a>
+<a name="apr_status_t-86"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll(apr_pollfd_t *aprset, apr_int32_t *nsds, apr_interval_time_t timeout);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags);</b>
<dd>
-Poll the sockets in the poll structure
-<p><img src="../images//tip.gif">
-<PRE>
-The number of sockets signalled is returned in the second argument.
- This is a blocking call, and it will not return until either a
- socket has been signalled, or the timeout has expired.
-</PRE>
+Send a file from an open file descriptor to a socket, along with
+optional headers and trailers
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- aprset</th><td>The poll structure we will be using.
+ sock</th><td>The socket to which we're writing
</td></tr>
<tr valign=top><th align=right>
- nsds</th><td>The number of sockets we are polling.
+ file</th><td>The open file from which to read
</td></tr>
<tr valign=top><th align=right>
- timeout</th><td>The amount of time in microseconds to wait. This is
- a maximum, not a minimum. If a socket is signalled, we
- will wake up before this time. A negative number means
- wait until a socket is signalled.</td></tr>
+ hdtr</th><td>A structure containing the headers and trailers to send
+</td></tr>
+<tr valign=top><th align=right>
+ offset</th><td>Offset into the file where we should begin writing
+</td></tr>
+<tr valign=top><th align=right>
+ len</th><td>(input) - Number of bytes to send from the file
+ (output) - Number of bytes actually sent,
+ including headers, file, and trailers
+</td></tr>
+<tr valign=top><th align=right>
+ flags</th><td>APR flags that are mapped to OS specific flags</td></tr>
</table>
</dl></dl>
-<a name="apr_recv"></a>
+<a name="apr_status_t-87"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_recv(apr_socket_t *sock, char *buf, apr_size_t *len);</b>
<dd>
Read data from a network.
-<p><img src="../images//tip.gif">
-<PRE>
-This functions acts like a blocking read by default. To change
-this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
-The number of bytes actually sent is stored in argument 3.
-It is possible for both bytes to be received and an APR_EOF or
-other error to be returned.
-APR_EINTR is never returned.
-</PRE>
<p><dl>
<dt><b>Parameters</b><dd>
@@ -711,305 +809,291 @@
</table>
</dl></dl>
-<a name="apr_remove_poll_socket"></a>
+<a name="apr_status_t-88"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_remove_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on);</b>
<dd>
-Remove a socket from the poll structure.
+Setup socket options for the specified socket
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- aprset</th><td>The poll structure we will be using.
+ sock</th><td>The socket to set up.
</td></tr>
<tr valign=top><th align=right>
- sock</th><td>The socket to remove from the current poll structure.</td></tr>
+ opt</th><td>The option we would like to configure. One of:
+<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>Value for the option.</td></tr>
</table>
</dl></dl>
-<a name="apr_send"></a>
+<a name="apr_status_t-89"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on);</b>
<dd>
-Send data over a network.
-<p><img src="../images//tip.gif">
-<PRE>
-This functions acts like a blocking write by default. To change
-this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
-It is possible for both bytes to be sent and an error to be returned.
-APR_EINTR is never returned.
-</PRE>
+Query socket options for the specified socket
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sock</th><td>The socket to send the data over.
+ sock</th><td>The socket to query
</td></tr>
<tr valign=top><th align=right>
- buf</th><td>The buffer which contains the data to be sent.
+ opt</th><td>The option we would like to query. One of:
+<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>
- len</th><td>On entry, the number of bytes to send; on exit, the number
- of bytes sent.</td></tr>
+ on</th><td>Socket option returned on the call.</td></tr>
</table>
</dl></dl>
-<a name="apr_sendfile"></a>
+<a name="apr_status_t-90"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_addr_get(apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock);</b>
<dd>
-Send a file from an open file descriptor to a socket, along with
-optional headers and trailers
-<p><img src="../images//tip.gif"> This functions acts like a blocking write by default. To change
- this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
- The number of bytes actually sent is stored in argument 5.
+Return an apr_sockaddr_t from an apr_socket_t
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- sock</th><td>The socket to which we're writing
-</td></tr>
-<tr valign=top><th align=right>
- file</th><td>The open file from which to read
-</td></tr>
-<tr valign=top><th align=right>
- hdtr</th><td>A structure containing the headers and trailers to send
-</td></tr>
<tr valign=top><th align=right>
- offset</th><td>Offset into the file where we should begin writing
+ sa</th><td>The returned apr_sockaddr_t.
</td></tr>
<tr valign=top><th align=right>
- len</th><td>(input) - Number of bytes to send from the file
- (output) - Number of bytes actually sent,
- including headers, file, and trailers
+ which</th><td>Which interface do we want the apr_sockaddr_t for?
</td></tr>
<tr valign=top><th align=right>
- flags</th><td>APR flags that are mapped to OS specific flags</td></tr>
+ sock</th><td>The socket to use</td></tr>
</table>
</dl></dl>
-<a name="apr_sendv"></a>
+<a name="apr_status_t-91"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_port_set(apr_sockaddr_t *sockaddr, apr_port_t port);</b>
<dd>
-Send multiple packets of data over a network.
-<p><img src="../images//tip.gif">
-<PRE>
-This functions acts like a blocking write by default. To change
-this behavior, use apr_setsocketopt with the APR_SO_TIMEOUT option.
-The number of bytes actually sent is stored in argument 3.
-It is possible for both bytes to be sent and an error to be returned.
-APR_EINTR is never returned.
-</PRE>
+Set the port in an APR socket address.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- sock</th><td>The socket to send the data over.
-</td></tr>
<tr valign=top><th align=right>
- vec</th><td>The array of iovec structs containing the data to send
-</td></tr>
-<tr valign=top><th align=right>
- nvec</th><td>The number of iovec structs in the array
+ sockaddr</th><td>The socket address to set.
</td></tr>
<tr valign=top><th align=right>
- len</th><td>Receives the number of bytes actually written</td></tr>
+ port</th><td>The port to be stored in the socket address.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_ipaddr"></a>
+<a name="apr_status_t-92"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_ipaddr(apr_sockaddr_t *sockaddr, const char *addr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_port_get(apr_port_t *port, apr_sockaddr_t *sockaddr);</b>
<dd>
-Set the IP address in an APR socket address.
+Return the port in an APR socket address.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sockaddr</th><td>The socket address to use
+ port</th><td>The port from the socket address.
</td></tr>
<tr valign=top><th align=right>
- addr</th><td>The IP address to attach to the socket.
- Use APR_ANYADDR to use any IP addr on the machine.</td></tr>
+ sockaddr</th><td>The socket address to reference.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_polldata"></a>
+<a name="apr_status_t-93"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_polldata(apr_pollfd_t *pollfd, void *data, const char *key, apr_status_t (*cleanup) (void *));</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_ip_set(apr_sockaddr_t *sockaddr, const char *addr);</b>
<dd>
-Set the data associated with the current poll.
+Set the IP address in an APR socket address.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- pollfd</th><td>The currently open pollfd.
-</td></tr>
-<tr valign=top><th align=right>
- data</th><td>The key to associate with the data.
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The user data to associate with the pollfd.
+ sockaddr</th><td>The socket address to use
</td></tr>
<tr valign=top><th align=right>
- cleanup</th><td>The cleanup function</td></tr>
+ addr</th><td>The IP address to attach to the socket.
+ Use APR_ANYADDR to use any IP addr on the machine.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_port"></a>
+<a name="apr_status_t-94"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_port(apr_sockaddr_t *sockaddr, apr_port_t port);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_sockaddr_ip_get(char **addr, apr_sockaddr_t *sockaddr);</b>
<dd>
-Set the port in an APR socket address.
+Return the IP address (in numeric address string format) in
+an APR socket address.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sockaddr</th><td>The socket address to set.
+ addr</th><td>The IP address.
</td></tr>
<tr valign=top><th align=right>
- port</th><td>The port to be stored in the socket address.</td></tr>
+ sockaddr</th><td>The socket address to reference.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_socketdata"></a>
+<a name="apr_status_t-95"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_socketdata(apr_socket_t *sock, void *data, const char *key, apr_status_t (*cleanup) (void*));</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_setup(apr_pollfd_t **new_poll, apr_int32_t num, apr_pool_t *cont);</b>
<dd>
-Set the data associated with the current socket.
+Setup the memory required for poll to operate properly
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sock</th><td>The currently open socket.
-</td></tr>
-<tr valign=top><th align=right>
- data</th><td>The user data to associate with the socket.
+ new_poll</th><td>The poll structure to be used.
</td></tr>
<tr valign=top><th align=right>
- key</th><td>The key to associate with the data.
+ num</th><td>The number of socket descriptors to be polled.
</td></tr>
<tr valign=top><th align=right>
- cleanup</th><td>The cleanup to call when the socket is destroyed.</td></tr>
+ cont</th><td>The pool to operate on.</td></tr>
</table>
</dl></dl>
-<a name="apr_setsocketopt"></a>
+<a name="apr_status_t-96"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll(apr_pollfd_t *aprset, apr_int32_t *nsds, apr_interval_time_t timeout);</b>
<dd>
-Setup socket options for the specified socket
+Poll the sockets in the poll structure
+<p><img src="../images//tip.gif">
+<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>
- sock</th><td>The socket to set up.
+ aprset</th><td>The poll structure we will be using.
</td></tr>
<tr valign=top><th align=right>
- opt</th><td>The option we would like to configure. One of:
-<PRE>
- APR_SO_DEBUG -- turn on debugging information
- APR_SO_KEEPALIVE -- keep connections active
- APR_SO_LINGER -- lingers on close if data is present
- APR_SO_NONBLOCK -- Turns blocking on/off for socket
- APR_SO_REUSEADDR -- The rules used in validating addresses
- supplied to bind should allow reuse
- of local addresses.
- APR_SO_TIMEOUT -- Set the timeout value in microseconds.
- values < 0 mean wait forever. 0 means
- don't wait at all.
- APR_SO_SNDBUF -- Set the SendBufferSize
- APR_SO_RCVBUF -- Set the ReceiveBufferSize
-</PRE>
+ nsds</th><td>The number of sockets we are polling.
</td></tr>
<tr valign=top><th align=right>
- on</th><td>Value for the option.</td></tr>
+ timeout</th><td>The amount of time in microseconds to wait. This is
+ a maximum, not a minimum. If a socket is signalled, we
+ will wake up before this time. A negative number means
+ wait until a socket is signalled.</td></tr>
</table>
</dl></dl>
-<a name="apr_setup_poll"></a>
+<a name="apr_status_t-97"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setup_poll(apr_pollfd_t **new_poll, apr_int32_t num, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_socket_add(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t event);</b>
<dd>
-Setup the memory required for poll to operate properly
+Add a socket to the poll structure.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- new_poll</th><td>The poll structure to be used.
+ aprset</th><td>The poll structure we will be using.
</td></tr>
<tr valign=top><th align=right>
- num</th><td>The number of socket descriptors to be polled.
+ socket</th><td>The socket to add to the current poll structure.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to operate on.</td></tr>
+ event</th><td>The events to look for when we do the poll. One of:
+<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_shutdown"></a>
+<a name="apr_status_t-98"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_socket_mask(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t events);</b>
<dd>
-Shutdown either reading, writing, or both sides of a tcp socket.
-<p><img src="../images//tip.gif"> This does not actually close the socket descriptor, it just
- controls which calls are still valid on the socket.
+Modify a socket in the poll structure with mask.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thesocket</th><td>The socket to close
+ aprset</th><td>The poll structure we will be using.
</td></tr>
<tr valign=top><th align=right>
- how</th><td>How to shutdown the socket. One of:
-<PRE>
- APR_SHUTDOWN_READ no longer allow read requests
- APR_SHUTDOWN_WRITE no longer allow write requests
- APR_SHUTDOWN_READWRITE no longer allow read or write requests
-</PRE></td></tr>
+ sock</th><td>The socket to modify in poll structure.
+</td></tr>
+<tr valign=top><th align=right>
+ events</th><td>The events to stop looking for during the poll. One of:
+<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_socket_from_file"></a>
+<a name="apr_status_t-99"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_poll_socket_remove(apr_pollfd_t *aprset, apr_socket_t *sock);</b>
<dd>
-Convert a File type to a socket so that it can be used in a poll operation.
-<p><img src="../images//warning.gif" align=left> This is not available on all platforms. Platforms that have the
- ability to poll files for data to be read/written/exceptions will
- have the APR_FILES_AS_SOCKETS macro defined as true.
+Remove a socket from the poll structure.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- newsock</th><td>the newly created socket which represents a file.
+ aprset</th><td>The poll structure we will be using.
</td></tr>
<tr valign=top><th align=right>
- file</th><td>the file to mask as a socket.</td></tr>
+ sock</th><td>The socket to remove from the current poll structure.</td></tr>
</table>
</dl></dl>
</blockquote>
@@ -1017,7 +1101,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +236 -196 apr-site/docs/APR_Process_library.html
Index: APR_Process_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_Process_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_Process_library.html 2000/12/04 18:13:59 1.3
+++ APR_Process_library.html 2001/02/11 02:54:57 1.4
@@ -15,183 +15,148 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_check_other_child"></a>
+<a name="-16"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_check_other_child(void);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Loop through all registered other_children and call the appropriate
-maintenance function when necessary.
+<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
+ useful if you have already opened a pipe (or multiple files)
+ that you wish to use, perhaps persistently across multiple
+ process invocations - such as a log file. You can save some
+ extra function calls by not creating your own pipe since this
+ creates one in the process space for you.
<p><dl>
</dl></dl>
-<a name="apr_create_process"></a>
+<a name="-17"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_process(apr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, apr_procattr_t *attr, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Create a new process and execute a new program within that process.
+<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
+ useful if you have already opened a pipe (or multiple files)
+ that you wish to use, perhaps persistently across multiple
+ process invocations - such as a log file.
<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- new_proc</th><td>The resulting process handle.
-</td></tr>
-<tr valign=top><th align=right>
- progname</th><td>The program to run
-</td></tr>
-<tr valign=top><th align=right>
- const_args</th><td>the arguments to pass to the new program. The first
- one should be the program name.
-</td></tr>
-<tr valign=top><th align=right>
- env</th><td>The new environment table for the new process. This
- should be a list of NULL-terminated strings.
-</td></tr>
-<tr valign=top><th align=right>
- attr</th><td>the procattr we should use to determine how to create the new
- process
-</td></tr>
-<tr valign=top><th align=right>
- cont</th><td>The pool to use.</td></tr>
-</table>
</dl></dl>
-<a name="apr_createprocattr_init"></a>
+<a name="-18"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_createprocattr_init(apr_procattr_t **new_attr, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Create and initialize a new procattr variable
+<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
+ useful if you have already opened a pipe (or multiple files)
+ that you wish to use, perhaps persistently across multiple
+ process invocations - such as a log file.
<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- new_attr</th><td>The newly created procattr.
-</td></tr>
-<tr valign=top><th align=right>
- cont</th><td>The pool to use</td></tr>
-</table>
</dl></dl>
-<a name="apr_detach"></a>
+<a name="-19"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_detach(void);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Detach the process from the controlling terminal.
+<p><img src="../images//tip.gif"> The childs status is in the return code to this process. It is one of:
+<PRE>
+ APR_CHILD_DONE -- child is no longer running.
+ APR_CHILD_NOTDONE -- child is still running.
+</PRE>
<p><dl>
</dl></dl>
-<a name="apr_fork"></a>
+<a name="-20"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_fork(apr_proc_t *proc, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(void);</b>
<dd>
-This is currently the only non-portable call in APR. This executes
-a standard unix fork.
+<p><img src="../images//tip.gif"> Since this can be called by a maintenance function while we're
+ scanning the other_children list, all scanners should protect
+ themself by loading ocr->next before calling any maintenance
+ function.
<p><dl>
+</dl></dl>
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- proc</th><td>The resulting process handle.
-</td></tr>
-<tr valign=top><th align=right>
- cont</th><td>The pool to use.</td></tr>
-</table>
+<a name="apr_proc_detach"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_detach(void);</b>
+ <dd>
+Detach the process from the controlling terminal.
+<p><dl>
</dl></dl>
-<a name="apr_kill"></a>
+<a name="apr_status_t-152"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_kill(apr_proc_t *proc, int sig);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_create(apr_procattr_t **new_attr, apr_pool_t *cont);</b>
<dd>
-Terminate a process.
+Create and initialize a new procattr variable
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- proc</th><td>The process to terminate.
+ new_attr</th><td>The newly created procattr.
</td></tr>
<tr valign=top><th align=right>
- sig</th><td>How to kill the process.</td></tr>
+ cont</th><td>The pool to use</td></tr>
</table>
</dl></dl>
-
-<a name="apr_probe_writable_fds"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_probe_writable_fds(void);</b>
- <dd>
-Ensure all the registered write_fds are still writable, otherwise
-invoke the maintenance functions as appropriate.
-<p><dl>
-</dl></dl>
-<a name="apr_reap_other_child"></a>
+<a name="apr_status_t-153"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_reap_other_child(apr_proc_t *pid, int status);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err);</b>
<dd>
-Check on the specified process. If it is gone, call the maintenance
-function.
+Determine if any of stdin, stdout, or stderr should be linked to pipes
+when starting a child process.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- pid</th><td>The process to check.
+ attr</th><td>The procattr we care about.
</td></tr>
<tr valign=top><th align=right>
- status</th><td>The status to pass to the maintenance function.</td></tr>
+ in</th><td>Should stdin be a pipe back to the parent?
+</td></tr>
+<tr valign=top><th align=right>
+ out</th><td>Should stdout be a pipe back to the parent?
+</td></tr>
+<tr valign=top><th align=right>
+ err</th><td>Should stderr be a pipe back to the parent?</td></tr>
</table>
</dl></dl>
-<a name="apr_register_other_child"></a>
+<a name="apr_status_t-154"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_register_other_child(apr_proc_t *pid, void (*maintenance) (int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_child_in_set(struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in);</b>
<dd>
-Register an other_child -- a child which must be kept track of so
-that the program knows when it has dies or disappeared.
+Set the child_in and/or parent_in values to existing apr_file_t values.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- pid</th><td>pid is the pid of the child.
-</td></tr>
<tr valign=top><th align=right>
- maintenance</th><td>maintenance is a function that is invoked with a
- reason and the data pointer passed here.
-</td></tr>
-<tr valign=top><th align=right>
- data</th><td>The data to pass to the maintenance function.
+ attr</th><td>The procattr we care about.
</td></tr>
<tr valign=top><th align=right>
- write_fd</th><td>An fd that is probed for writing. If it is ever unwritable
- then the maintenance is invoked with reason
- OC_REASON_UNWRITABLE.
+ child_in</th><td>apr_file_t value to use as child_in. Must be a valid file.
</td></tr>
<tr valign=top><th align=right>
- p</th><td>The pool to use for allocating memory.</td></tr>
+ parent_in</th><td>apr_file_t value to use as parent_in. Must be a valid file.</td></tr>
</table>
</dl></dl>
-<a name="apr_setprocattr_childerr"></a>
+<a name="apr_status_t-155"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_childerr(struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_child_out_set(struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out);</b>
<dd>
-Set the child_err and parent_err values to existing apr_file_t values.
-<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
- useful if you have already opened a pipe (or multiple files)
- that you wish to use, perhaps persistently across multiple
- process invocations - such as a log file.
+Set the child_out and parent_out values to existing apr_file_t values.
<p><dl>
<dt><b>Parameters</b><dd>
@@ -200,25 +165,19 @@
attr</th><td>The procattr we care about.
</td></tr>
<tr valign=top><th align=right>
- child_err</th><td>apr_file_t value to use as child_err. Must be a valid file.
+ child_out</th><td>apr_file_t value to use as child_out. Must be a valid file.
</td></tr>
<tr valign=top><th align=right>
- parent_err</th><td>apr_file_t value to use as parent_err. Must be a valid file.</td></tr>
+ parent_out</th><td>apr_file_t value to use as parent_out. Must be a valid file.</td></tr>
</table>
</dl></dl>
-<a name="apr_setprocattr_childin"></a>
+<a name="apr_status_t-156"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_childin(struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_child_err_set(struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err);</b>
<dd>
-Set the child_in and/or parent_in values to existing apr_file_t values.
-<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
- useful if you have already opened a pipe (or multiple files)
- that you wish to use, perhaps persistently across multiple
- process invocations - such as a log file. You can save some
- extra function calls by not creating your own pipe since this
- creates one in the process space for you.
+Set the child_err and parent_err values to existing apr_file_t values.
<p><dl>
<dt><b>Parameters</b><dd>
@@ -227,23 +186,19 @@
attr</th><td>The procattr we care about.
</td></tr>
<tr valign=top><th align=right>
- child_in</th><td>apr_file_t value to use as child_in. Must be a valid file.
+ child_err</th><td>apr_file_t value to use as child_err. Must be a valid file.
</td></tr>
<tr valign=top><th align=right>
- parent_in</th><td>apr_file_t value to use as parent_in. Must be a valid file.</td></tr>
+ parent_err</th><td>apr_file_t value to use as parent_err. Must be a valid file.</td></tr>
</table>
</dl></dl>
-<a name="apr_setprocattr_childout"></a>
+<a name="apr_status_t-157"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_childout(struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_dir_set(apr_procattr_t *attr, const char *dir);</b>
<dd>
-Set the child_out and parent_out values to existing apr_file_t values.
-<p><img src="../images//tip.gif"> This is NOT a required initializer function. This is
- useful if you have already opened a pipe (or multiple files)
- that you wish to use, perhaps persistently across multiple
- process invocations - such as a log file.
+Set which directory the child process should start executing in.
<p><dl>
<dt><b>Parameters</b><dd>
@@ -251,18 +206,17 @@
<tr valign=top><th align=right>
attr</th><td>The procattr we care about.
</td></tr>
-<tr valign=top><th align=right>
- child_out</th><td>apr_file_t value to use as child_out. Must be a valid file.
-</td></tr>
<tr valign=top><th align=right>
- parent_out</th><td>apr_file_t value to use as parent_out. Must be a valid file.</td></tr>
+ dir</th><td>Which dir to start in. By default, this is the same dir as
+ the parent currently resides in, when the createprocess call
+ is made.</td></tr>
</table>
</dl></dl>
-<a name="apr_setprocattr_cmdtype"></a>
+<a name="apr_status_t-158"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_cmdtype(apr_procattr_t *attr, apr_cmdtype_e cmd);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_cmdtype_set(apr_procattr_t *attr, apr_cmdtype_e cmd);</b>
<dd>
Set what type of command the child process will call.
<p><dl>
@@ -274,17 +228,17 @@
</td></tr>
<tr valign=top><th align=right>
cmd</th><td>The type of command. One of:
-<PRE>
+<PRE>
APR_SHELLCMD -- Shell script
APR_PROGRAM -- Executable program (default)
-</PRE></td></tr>
+</PRE></td></tr>
</table>
</dl></dl>
-<a name="apr_setprocattr_detach"></a>
+<a name="apr_status_t-159"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_detach(apr_procattr_t *attr, apr_int32_t detach);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_detach_set(apr_procattr_t *attr, apr_int32_t detach);</b>
<dd>
Determine if the chlid should start in detached state.
<p><dl>
@@ -299,12 +253,12 @@
</table>
</dl></dl>
-<a name="apr_setprocattr_dir"></a>
+<a name="apr_status_t-160"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_dir(apr_procattr_t *attr, const char *dir);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_procattr_limit_set(apr_procattr_t *attr, apr_int32_t what, apr_int32_t what, struct rlimit *limit);</b>
<dd>
-Set which directory the child process should start executing in.
+Set the Resource Utilization limits when starting a new process.
<p><dl>
<dt><b>Parameters</b><dd>
@@ -313,87 +267,97 @@
attr</th><td>The procattr we care about.
</td></tr>
<tr valign=top><th align=right>
- dir</th><td>Which dir to start in. By default, this is the same dir as
- the parent currently resides in, when the createprocess call
- is made.</td></tr>
+ what</th><td>Which limit to set, one of:
+<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_setprocattr_io"></a>
+<a name="apr_status_t-161"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_io(apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont);</b>
<dd>
-Determine if any of stdin, stdout, or stderr should be linked to pipes
-when starting a child process.
+This is currently the only non-portable call in APR. This executes
+a standard unix fork.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- attr</th><td>The procattr we care about.
-</td></tr>
<tr valign=top><th align=right>
- in</th><td>Should stdin be a pipe back to the parent?
-</td></tr>
-<tr valign=top><th align=right>
- out</th><td>Should stdout be a pipe back to the parent?
+ proc</th><td>The resulting process handle.
</td></tr>
<tr valign=top><th align=right>
- err</th><td>Should stderr be a pipe back to the parent?</td></tr>
+ cont</th><td>The pool to use.</td></tr>
</table>
</dl></dl>
-<a name="apr_setprocattr_limit"></a>
+<a name="apr_status_t-162"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setprocattr_limit(apr_procattr_t *attr, apr_int32_t what, struct rlimit *limit);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_create(apr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, apr_procattr_t *attr, apr_pool_t *cont);</b>
<dd>
-Set the Resource Utilization limits when starting a new process.
+Create a new process and execute a new program within that process.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- attr</th><td>The procattr we care about.
+ new_proc</th><td>The resulting process handle.
</td></tr>
<tr valign=top><th align=right>
- what</th><td>Which limit to set, one of:
-<PRE>
- APR_LIMIT_CPU
- APR_LIMIT_MEM
- APR_LIMIT_NPROC
-</PRE>
+ progname</th><td>The program to run
</td></tr>
<tr valign=top><th align=right>
- limit</th><td>Value to set the limit to.</td></tr>
+ const_args</th><td>the arguments to pass to the new program. The first
+ one should be the program name.
+</td></tr>
+<tr valign=top><th align=right>
+ env</th><td>The new environment table for the new process. This
+ should be a list of NULL-terminated strings.
+</td></tr>
+<tr valign=top><th align=right>
+ attr</th><td>the procattr we should use to determine how to create the new
+ process
+</td></tr>
+<tr valign=top><th align=right>
+ cont</th><td>The pool to use.</td></tr>
</table>
</dl></dl>
-<a name="apr_unregister_other_child"></a>
+<a name="apr_status_t-163"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_unregister_other_child(void *data);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_wait(apr_proc_t *proc, apr_wait_how_e waithow);</b>
<dd>
-Stop watching the specified process.
-<p><img src="../images//tip.gif"> Since this can be called by a maintenance function while we're
- scanning the other_children list, all scanners should protect
- themself by loading ocr->next before calling any maintenance
- function.
+Wait for a child process to die
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- data</th><td>The data to pass to the maintenance function. This is
- used to find the process to unregister.</td></tr>
+ proc</th><td>The process handle that corresponds to the desired child process
+</td></tr>
+<tr valign=top><th align=right>
+ waithow</th><td>How should we wait. One of:
+<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>
-<a name="apr_wait_all_procs"></a>
+<a name="apr_status_t-164"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_wait_all_procs(apr_proc_t *proc, apr_wait_t *status, apr_wait_how_e waithow, apr_pool_t *p);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_wait_all_procs(apr_proc_t *proc, apr_wait_t *status, apr_wait_how_e waithow, apr_pool_t *p);</b>
<dd>
Wait for any current child process to die and return information
about that child.
@@ -412,50 +376,126 @@
</td></tr>
<tr valign=top><th align=right>
waithow</th><td>How should we wait. One of:
-<PRE>
+<PRE>
APR_WAIT -- block until the child process dies.
APR_NOWAIT -- return immediately regardless of if the
child is dead or not.
-</PRE>
+</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>
+<a name="apr_status_t-165"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_wait_proc(apr_proc_t *proc, apr_wait_how_e waithow);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_other_child_read(apr_proc_t *pid, int status);;</b>
<dd>
-Wait for a child process to die
-<p><img src="../images//tip.gif"> The childs status is in the return code to this process. It is one of:
-<PRE>
- APR_CHILD_DONE -- child is no longer running.
- APR_CHILD_NOTDONE -- child is still running.
-</PRE>
+Check on the specified process. If it is gone, call the maintenance
+function.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- proc</th><td>The process handle that corresponds to the desired child process
+ pid</th><td>The process to check.
</td></tr>
<tr valign=top><th align=right>
- waithow</th><td>How should we wait. One of:
-<PRE>
- APR_WAIT -- block until the child process dies.
- APR_NOWAIT -- return immediately regardless of if the
- child is dead or not.
-</PRE></td></tr>
+ status</th><td>The status to pass to the maintenance function.</td></tr>
</table>
</dl></dl>
+<a name="apr_status_t-166"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_proc_kill(apr_proc_t *proc, int sig);</b>
+ <dd>
+Terminate a process.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ proc</th><td>The process to terminate.
+</td></tr>
+<tr valign=top><th align=right>
+ sig</th><td>How to kill the process.</td></tr>
+</table>
+ </dl></dl>
+
<a name="void-30"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_proc_other_child_register(apr_proc_t *pid, void (*maintenance) (int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p);</b>
+ <dd>
+Register an other_child -- a child which must be kept track of so
+that the program knows when it has dies or disappeared.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ pid</th><td>pid is the pid of the child.
+</td></tr>
+<tr valign=top><th align=right>
+ maintenance</th><td>maintenance is a function that is invoked with a
+ reason and the data pointer passed here.
+</td></tr>
+<tr valign=top><th align=right>
+ data</th><td>The data to pass to the maintenance function.
+</td></tr>
+<tr valign=top><th align=right>
+ write_fd</th><td>An fd that is probed for writing. If it is ever unwritable
+ then the maintenance is invoked with reason
+ OC_REASON_UNWRITABLE.
+</td></tr>
+<tr valign=top><th align=right>
+ p</th><td>The pool to use for allocating memory.</td></tr>
+</table>
+ </dl></dl>
+
+<a name="void-31"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_proc_other_child_unregister(void *data);</b>
+ <dd>
+Stop watching the specified process.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ data</th><td>The data to pass to the maintenance function. This is
+ used to find the process to unregister.</td></tr>
+</table>
+ </dl></dl>
+
+<a name="void-32"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_proc_other_child_check();;</b>
<dd>
+Loop through all registered other_children and call the appropriate
+maintenance function when necessary.
+<p><dl>
+</dl></dl>
+
+<a name="void-33"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_proc_probe_writable_fds();</b>
+ <dd>
+Ensure all the registered write_fds are still writable, otherwise
+invoke the maintenance functions as appropriate.
+<p><dl>
+</dl></dl>
+
+<a name="void-34"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how);</b>
+ <dd>
Register a process to be killed when a pool dies.
<p><dl>
@@ -469,13 +509,13 @@
</td></tr>
<tr valign=top><th align=right>
how</th><td>How to kill the process, one of:
-<PRE>
+<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>
+</PRE></td></tr>
</table>
</dl></dl>
</blockquote>
@@ -483,7 +523,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +5 -5 apr-site/docs/APR_Random_Functions.html
Index: APR_Random_Functions.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_Random_Functions.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_Random_Functions.html 2000/12/04 18:13:59 1.3
+++ APR_Random_Functions.html 2001/02/11 02:54:57 1.4
@@ -15,7 +15,7 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_generate_random_bytes"></a>
+<a name="apr_status_t-48"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_generate_random_bytes(unsigned char * buf, int length);</b>
@@ -33,7 +33,7 @@
</table>
</dl></dl>
-<a name="apr_initialize"></a>
+<a name="apr_status_t-49"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_initialize(void);</b>
@@ -43,7 +43,7 @@
<p><dl>
</dl></dl>
-<a name="apr_set_abort"></a>
+<a name="apr_status_t-50"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_abort(int (*apr_abort)(int retcode), apr_pool_t *cont);</b>
@@ -58,7 +58,7 @@
<p><dl>
</dl></dl>
-<a name="apr_terminate"></a>
+<a name="void-2"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_terminate(void);</b>
@@ -75,7 +75,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +50 -355 apr-site/docs/APR_Table_library.html
Index: APR_Table_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_Table_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_Table_library.html 2000/12/04 18:14:01 1.3
+++ APR_Table_library.html 2001/02/11 02:54:57 1.4
@@ -20,18 +20,6 @@
<li><a href="APR_Table_library.html#apr_array_header_t-nelts">nelts</a>
</ul>
<h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
- <a href="APR_Table_library.html#apr_btable_entry_t">struct apr_btable_entry_t</h3></a>
- <ul>
-<li><a href="APR_Table_library.html#apr_btable_entry_t-key">key</a>
-<li><a href="APR_Table_library.html#apr_btable_entry_t-val">val</a>
-</ul>
-<h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
- <a href="APR_Table_library.html#apr_btable_t">struct apr_btable_t</h3></a>
- <ul>
-<li><a href="APR_Table_library.html#apr_btable_t-a">a</a>
-<li><a href="APR_Table_library.html#apr_btable_t-creator">creator</a>
-</ul>
-<h3><img src="../images/ball1.gif" width=18 height=17 align=texttop>
<a href="APR_Table_library.html#apr_table_entry_t">struct apr_table_entry_t</h3></a>
<ul>
<li><a href="APR_Table_library.html#apr_table_entry_t-key">key</a>
@@ -106,72 +94,6 @@
</dl></dl>
</blockquote>
<hr size="4">
- <a name="apr_btable_entry_t"></a>
- <h1>struct apr_btable_entry_t</h1>
- <table bgcolor="ffffff" border="0" cellspacing="4">
- <tr>
- <th align=center colspan=2>
- </th>
- </tr>
- <tr><th width=20% align=right>Source:</th><td>./include/apr_tables.h</td></tr></tr>
-</table>
-<p>
-The type for each entry in a binary-content table<h2>Member Index</h2>
-<ul><li><a href="APR_Table_library.html#apr_btable_entry_t-key"> char *key</a>
- <li><a href="APR_Table_library.html#apr_btable_entry_t-val"> apr_item_t *val</a>
- </ul><h2>Class Variables</h2>
-<blockquote>
-
- <a name="key"></a>
- <dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> char *key;</b>
-<dd>
-The key for the current table entry
-<p><dl>
-</dl></dl>
-
- <a name="val"></a>
- <dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_item_t *val;</b>
-<dd>
-The value for the current table entry
-<p><dl>
-</dl></dl>
-</blockquote>
-<hr size="4">
- <a name="apr_btable_t"></a>
- <h1>struct apr_btable_t</h1>
- <table bgcolor="ffffff" border="0" cellspacing="4">
- <tr>
- <th align=center colspan=2>
- </th>
- </tr>
- <tr><th width=20% align=right>Source:</th><td>./include/apr_tables.h</td></tr></tr>
-</table>
-<p>
-The opaque binary-content table type<h2>Member Index</h2>
-<ul><li><a href="APR_Table_library.html#apr_btable_t-a"> apr_array_header_t a</a>
- <li><a href="APR_Table_library.html#apr_btable_t-creator"> void *creator</a>
- </ul><h2>Class Variables</h2>
-<blockquote>
-
- <a name="a"></a>
- <dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_array_header_t a;</b>
-<dd>
-The underlying array for the table
-<p><dl>
-</dl></dl>
-
- <a name="creator"></a>
- <dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> void *creator;</b>
-<dd>
-Who created the array.
-<p><dl>
-</dl></dl>
-</blockquote>
-<hr size="4">
<a name="apr_table_entry_t"></a>
<h1>struct apr_table_entry_t</h1>
<table bgcolor="ffffff" border="0" cellspacing="4">
@@ -238,54 +160,28 @@
<p><dl>
</dl></dl>
</blockquote>
-<h2>Global Variables</h2>
+<h2>Global Functions</h2>
<blockquote>
- <a name="apr_item_t"></a>
- <dl><dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop> apr_item_t;</b>
+<a name="-14"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_array_header_t *);</b>
<dd>
-The (opaque) structure for binary-content tables.
- A transparent type for items stored in binary-content tables, and
-possibly elsewhere.
+<p><img src="../images//tip.gif"> The alternate apr_array_copy_hdr copies only the header, and arranges
+for the elements to be copied if (and only if) the code subsequently does
+a push or arraycat.
<p><dl>
</dl></dl>
-</blockquote>
-<h2>Global Functions</h2>
- <blockquote>
-<a name=""></a>
+<a name="-15"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_array_header_t *);</b>
<dd>
-Determine if the table is empty
-Determine if the binary table is empty
-Create an array
+<p><img src="../images//tip.gif"> The alternate apr_array_copy copies the *entire* array.
<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- t</th><td>The table to check
-</td></tr>
-<tr valign=top><th align=right>
- t</th><td>The table to check
-</td></tr>
-<tr valign=top><th align=right>
- p</th><td>The pool to allocate the memory out of
-</td></tr>
-<tr valign=top><th align=right>
- nelts</th><td>the number of elements in the initial array
-</td></tr>
-<tr valign=top><th align=right>
- elt_size</th><td>The size of each element in the array.</td></tr>
-</table>
- <dt><b>Return Value</b>
- <dd>True if empty, Falso otherwise
- True if empty, Falso otherwise
- The new array
-#deffunc apr_array_header_t *apr_make_array(struct apr_pool_t *p, int nelts, int elt_size)<p></dl></dl>
+</dl></dl>
<a name="apr_array_header_t"></a>
<dl>
@@ -306,23 +202,29 @@
<a name="apr_array_header_t-2"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_table_elts(apr_table_t *t);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_array_make(struct apr_pool_t *p, int nelts, int elt_size);</b>
<dd>
-Get the elements from a binary table
+Create an array
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- t</th><td>The table</td></tr>
+ p</th><td>The pool to allocate the memory out of
+</td></tr>
+<tr valign=top><th align=right>
+ nelts</th><td>the number of elements in the initial array
+</td></tr>
+<tr valign=top><th align=right>
+ elt_size</th><td>The size of each element in the array.</td></tr>
</table>
<dt><b>Return Value</b>
- <dd>An array containing the contents of the table<p></dl></dl>
+ <dd>The new array<p></dl></dl>
<a name="apr_array_header_t-3"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_copy_array(apr_pool_t *p, const apr_array_header_t *arr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_array_copy(apr_pool_t *p, const apr_array_header_t *arr);</b>
<dd>
Copy the entire array
<p><dl>
@@ -341,7 +243,7 @@
<a name="apr_array_header_t-4"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_copy_array_hdr(apr_pool_t *p, const apr_array_header_t *arr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_array_copy_hdr(apr_pool_t *p, const apr_array_header_t *arr);</b>
<dd>
Copy the headers of the array, and arrange for the elements to be copied if
and only if the code subsequently does a push or arraycat.
@@ -361,7 +263,7 @@
<a name="apr_array_header_t-5"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_append_arrays(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_array_header_t *apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second);</b>
<dd>
Append one array to the end of another, creating a new array in the process.
<p><dl>
@@ -382,32 +284,10 @@
</table>
</dl></dl>
-<a name="apr_btable_t"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_btable_t *apr_overlay_tables(apr_pool_t *p, const apr_btable_t *overlay, const apr_btable_t *base);;</b>
- <dd>
-Merge two binary tables into one new table
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- p</th><td>The pool to use for the new table
-</td></tr>
-<tr valign=top><th align=right>
- overlay</th><td>The first table to put in the new table
-</td></tr>
-<tr valign=top><th align=right>
- base</th><td>The table to add at the end of the new table</td></tr>
-</table>
- <dt><b>Return Value</b>
- <dd>A new table containing all of the data from the two passed in<p></dl></dl>
-
<a name="apr_table_t"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_make_table(apr_pool_t *p, int nelts);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_table_make(apr_pool_t *p, int nelts);</b>
<dd>
Make a new table
<p><img src="../images//warning.gif" align=left> This table can only store text data
@@ -426,27 +306,8 @@
<a name="apr_table_t-2"></a>
<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_make_btable(apr_pool_t *p, int nelts);</b>
- <dd>
-Make a new table capable of storing binary data
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- p</th><td>The pool to allocate the pool out of
-</td></tr>
-<tr valign=top><th align=right>
- nelts</th><td>The number of elements in the initial table.</td></tr>
-</table>
- <dt><b>Return Value</b>
- <dd>The new table.<p></dl></dl>
-
-<a name="apr_table_t-3"></a>
-<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *) apr_copy_table(apr_pool_t *p, const apr_table_t *t);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_table_copy(apr_pool_t *p, const apr_table_t *t);</b>
<dd>
Create a new table and copy another table into it
<p><dl>
@@ -461,30 +322,11 @@
</table>
<dt><b>Return Value</b>
<dd>A copy of the table passed in<p></dl></dl>
-
-<a name="apr_table_t-4"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *) apr_copy_btable(apr_pool_t *p, const apr_btable_t *t);</b>
- <dd>
-Create a new binary table and copy another table into it
-<p><dl>
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- p</th><td>The pool to allocate the new table out of
-</td></tr>
-<tr valign=top><th align=right>
- t</th><td>The table to copy</td></tr>
-</table>
- <dt><b>Return Value</b>
- <dd>A copy of the table passed in<p></dl></dl>
-
-<a name="apr_table_t-5"></a>
+<a name="apr_table_t-3"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_overlay_tables(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base);;</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_table_t *apr_table_overlay(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base);;</b>
<dd>
Merge two tables into one new table
<p><dl>
@@ -503,7 +345,7 @@
<dt><b>Return Value</b>
<dd>A new table containing all of the data from the two passed in<p></dl></dl>
-<a name="char-8"></a>
+<a name="char-9"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_array_pstrcat(apr_pool_t *p, const apr_array_header_t *arr, const char sep);</b>
@@ -529,7 +371,7 @@
<dt><b>Return Value</b>
<dd>A string containing all of the data in the array.<p></dl></dl>
-<a name="const-2"></a>
+<a name="const-4"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const char *apr_table_get(const apr_table_t *t, const char *key);</b>
@@ -549,30 +391,26 @@
<dt><b>Return Value</b>
<dd>The value associated with the key<p></dl></dl>
-<a name="const-3"></a>
+<a name="int-10"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const apr_item_t *apr_btable_get(const apr_btable_t *t, const char *key);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_is_empty_table(apr_table_t *t);</b>
<dd>
-Get the value associated with a given key from a binary table. After this
-call, the data is still in the table.
+Determine if the table is empty
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- t</th><td>The table to search for the key
-</td></tr>
<tr valign=top><th align=right>
- key</th><td>The key to search for</td></tr>
+ t</th><td>The table to check</td></tr>
</table>
<dt><b>Return Value</b>
- <dd>The value associated with the key<p></dl></dl>
+ <dd>True if empty, Falso otherwise<p></dl></dl>
-<a name="void-11"></a>
+<a name="void-17"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_push_array(apr_array_header_t *arr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_array_push(apr_array_header_t *arr);</b>
<dd>
Add a new element to an array
<p><img src="../images//tip.gif"> If there are no free spots in the array, then this function will
@@ -587,7 +425,7 @@
<dt><b>Return Value</b>
<dd>Location for the new element in the array.<p></dl></dl>
-<a name="void-12"></a>
+<a name="void-18"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_array_cat(apr_array_header_t *dst, const apr_array_header_t *src);</b>
@@ -606,10 +444,10 @@
</table>
</dl></dl>
-<a name="void-13"></a>
+<a name="void-19"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_clear_table(apr_table_t *t);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_clear(apr_table_t *t);</b>
<dd>
Delete all of the elements from a table
<p><dl>
@@ -620,23 +458,8 @@
t</th><td>The table to clear</td></tr>
</table>
</dl></dl>
-
-<a name="void-14"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_clear_btable(apr_btable_t *t);</b>
- <dd>
-Delete all of the elements from a binary table
-<p><dl>
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- t</th><td>The table to clear</td></tr>
-</table>
- </dl></dl>
-
-<a name="void-15"></a>
+<a name="void-20"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_set(apr_table_t *t, const char *key, const char *val);</b>
@@ -659,35 +482,8 @@
val</th><td>The value to add</td></tr>
</table>
</dl></dl>
-
-<a name="void-16"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_set(apr_btable_t *t, const char *key, size_t size, const void *val);</b>
- <dd>
-Add a key/value pair to a binary table if another element already exists
-with the same key, this will over-write the old data.
-<p><img src="../images//tip.gif"> When adding data, this function makes a copy of both the key and the
- value.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- t</th><td>The table to add the data to.
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The key fo use
-</td></tr>
-<tr valign=top><th align=right>
- size</th><td>The size of the data to add
-</td></tr>
-<tr valign=top><th align=right>
- val</th><td>The value to add</td></tr>
-</table>
- </dl></dl>
-<a name="void-17"></a>
+<a name="void-21"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_setn(apr_table_t *t, const char *key, const char *val);</b>
@@ -712,35 +508,7 @@
</table>
</dl></dl>
-<a name="void-18"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_setn(apr_btable_t *t, const char *key, size_t size, const void *val);</b>
- <dd>
-Add a key/value pair to a binary table if another element already exists
-with the same key, this will over-write the old data.
-<p><img src="../images//tip.gif"> When adding data, this function does not make a copy of the key or the
- value, so care should be taken to ensure that the values will not
- change after they have been added..
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- t</th><td>The table to add the data to.
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The key fo use
-</td></tr>
-<tr valign=top><th align=right>
- size</th><td>The size of the data to add
-</td></tr>
-<tr valign=top><th align=right>
- val</th><td>The value to add</td></tr>
-</table>
- </dl></dl>
-
-<a name="void-19"></a>
+<a name="void-22"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_unset(apr_table_t *t, const char *key);</b>
@@ -757,26 +525,8 @@
key</th><td>The key of the data being removed</td></tr>
</table>
</dl></dl>
-
-<a name="void-20"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_unset(apr_btable_t *t, const char *key);</b>
- <dd>
-Remove data from a binary table
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- t</th><td>The table to remove data from
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The key of the data being removed</td></tr>
-</table>
- </dl></dl>
-<a name="void-21"></a>
+<a name="void-23"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_merge(apr_table_t *t, const char *key, const char *val);</b>
@@ -799,7 +549,7 @@
</table>
</dl></dl>
-<a name="void-22"></a>
+<a name="void-24"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_mergen(apr_table_t *t, const char *key, const char *val);</b>
@@ -822,7 +572,7 @@
</table>
</dl></dl>
-<a name="void-23"></a>
+<a name="void-25"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_add(apr_table_t *t, const char *key, const char *val);</b>
@@ -845,35 +595,8 @@
val</th><td>The value to add.</td></tr>
</table>
</dl></dl>
-
-<a name="void-24"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_add(apr_btable_t *t, const char *key, size_t size, const char *val);</b>
- <dd>
-Add data to a binary table, regardless of whether there is another element
-with the same key.
-<p><img src="../images//tip.gif"> When adding data, this function makes a copy of both the key and the
- value.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- t</th><td>The table to add to
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The key to use
-</td></tr>
-<tr valign=top><th align=right>
- size</th><td>The size of the value to add
-</td></tr>
-<tr valign=top><th align=right>
- val</th><td>The value to add.</td></tr>
-</table>
- </dl></dl>
-<a name="void-25"></a>
+<a name="void-26"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_addn(apr_table_t *t, const char *key, const char *val);</b>
@@ -898,34 +621,6 @@
</table>
</dl></dl>
-<a name="void-26"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_btable_addn(apr_btable_t *t, const char *key, size_t size, const char *val);</b>
- <dd>
-Add data to a binary table, regardless of whether there is another element
-with the same key.
-<p><img src="../images//tip.gif"> When adding data, this function does not make a copy of the key or the
- value, so care should be taken to ensure that the values will not
- change after they have been added..
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- t</th><td>The table to add to
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The key to use
-</td></tr>
-<tr valign=top><th align=right>
- size</th><td>The size of the value to add
-</td></tr>
-<tr valign=top><th align=right>
- val</th><td>The value to add.</td></tr>
-</table>
- </dl></dl>
-
<a name="void-27"></a>
<dl>
<dt>
@@ -987,7 +682,7 @@
<a name="void-29"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_overlap_tables(apr_table_t *a, const apr_table_t *b, unsigned flags);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_table_overlap(apr_table_t *a, const apr_table_t *b, unsigned flags);</b>
<dd>
For each element in table b, either use setn or mergen to add the data
to table a. Wich method is used is determined by the flags passed in.
@@ -1014,7 +709,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +103 -103 apr-site/docs/APR_Thread_library.html
Index: APR_Thread_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_Thread_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_Thread_library.html 2000/12/04 18:14:01 1.3
+++ APR_Thread_library.html 2001/02/11 02:54:57 1.4
@@ -96,12 +96,12 @@
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>process_chain *next ;</b>
<dd>
-When the process should be sent a signal. <PRE>
+When the process should be sent a signal. <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>
+ kill_only_once -- send SIGTERM and then wait </PRE>
The next process in the list
<p><dl>
</dl></dl>
@@ -109,184 +109,160 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_create_thread"></a>
+<a name="apr_status_t-137"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_thread(apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadattr_create(apr_threadattr_t **new_attr, apr_pool_t *cont);</b>
<dd>
-Create a new thread of execution
+Create and initialize a new threadattr variable
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- new_thread</th><td>The newly created thread handle.
-</td></tr>
<tr valign=top><th align=right>
- attr</th><td>The threadattr to use to determine how to create the thread
-</td></tr>
-<tr valign=top><th align=right>
- func</th><td>The function to start the new thread in
-</td></tr>
-<tr valign=top><th align=right>
- data</th><td>Any data to be passed to the starting function
+ new_attr</th><td>The newly created threadattr.
</td></tr>
<tr valign=top><th align=right>
cont</th><td>The pool to use</td></tr>
</table>
</dl></dl>
-<a name="apr_create_thread_private"></a>
+<a name="apr_status_t-138"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_thread_private(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadattr_detach_get(apr_threadattr_t *attr, apr_int32_t on);</b>
<dd>
-Create and initialize a new thread private address space
+Set if newly created threads should be created in detach mode.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- key</th><td>The thread private handle.
-</td></tr>
<tr valign=top><th align=right>
- dest</th><td>The destructor to use when freeing the private memory.
+ attr</th><td>The threadattr to affect
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use</td></tr>
+ on</th><td>Thread detach state on or off</td></tr>
</table>
</dl></dl>
-<a name="apr_create_threadattr"></a>
+<a name="apr_status_t-139"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_threadattr(apr_threadattr_t **new_attr, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadattr_detach_set(apr_threadattr_t *attr);</b>
<dd>
-Create and initialize a new threadattr variable
+Get the detach mode for this threadattr.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- new_attr</th><td>The newly created threadattr.
-</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use</td></tr>
+ attr</th><td>The threadattr to reference</td></tr>
</table>
</dl></dl>
-<a name="apr_delete_thread_private"></a>
+<a name="apr_status_t-140"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_delete_thread_private(apr_threadkey_t *key);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_create(apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont);</b>
<dd>
-Free the thread private memory
+Create a new thread of execution
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- key</th><td>The handle for the desired thread private memory</td></tr>
-</table>
- </dl></dl>
-
-<a name="apr_get_thread_private"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_thread_private(void **new_mem, apr_threadkey_t *key);</b>
- <dd>
-Get a pointer to the thread private memory
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
+ new_thread</th><td>The newly created thread handle.
+</td></tr>
<tr valign=top><th align=right>
- new_mem</th><td>The data stored in private memory
+ attr</th><td>The threadattr to use to determine how to create the thread
</td></tr>
<tr valign=top><th align=right>
- key</th><td>The handle for the desired thread private memory</td></tr>
+ func</th><td>The function to start the new thread in
+</td></tr>
+<tr valign=top><th align=right>
+ data</th><td>Any data to be passed to the starting function
+</td></tr>
+<tr valign=top><th align=right>
+ cont</th><td>The pool to use</td></tr>
</table>
</dl></dl>
-<a name="apr_get_threaddata"></a>
+<a name="apr_status_t-141"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_threaddata(void **data, const char *key, apr_thread_t *thread);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t *retval);</b>
<dd>
-Return the pool associated with the current thread.
+stop the current thread
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- data</th><td>The user data associated with the thread.
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The key to associate with the data
+ thd</th><td>The thread to stop
</td></tr>
<tr valign=top><th align=right>
- thread</th><td>The currently open thread.</td></tr>
+ retval</th><td>The return value to pass back to any thread that cares</td></tr>
</table>
</dl></dl>
-<a name="apr_get_threadkeydata"></a>
+<a name="apr_status_t-142"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_threadkeydata(void **data, const char *key, apr_threadkey_t *threadkey);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd);;</b>
<dd>
-Return the pool associated with the current threadkey.
+block until the desired thread stops executing.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- data</th><td>The user data associated with the threadkey.
-</td></tr>
<tr valign=top><th align=right>
- key</th><td>The key associated with the data
+ retval</th><td>The return value from the dead thread.
</td></tr>
<tr valign=top><th align=right>
- threadkey</th><td>The currently open threadkey.</td></tr>
+ thd</th><td>The thread to join</td></tr>
</table>
</dl></dl>
-<a name="apr_getthreadattr_detach"></a>
+<a name="apr_status_t-143"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getthreadattr_detach(apr_threadattr_t *attr);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_detach(apr_thread_t *thd);</b>
<dd>
-Get the detach mode for this threadattr.
+detach a thread
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- attr</th><td>The threadattr to reference</td></tr>
+ thd</th><td>The thread to detach</td></tr>
</table>
</dl></dl>
-<a name="apr_set_thread_private"></a>
+<a name="apr_status_t-144"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_thread_private(void *priv, apr_threadkey_t *key);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_data_get(void **data, const char *key, apr_thread_t *thread);</b>
<dd>
-Set the data to be stored in thread private memory
+Return the pool associated with the current thread.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- priv</th><td>The data to be stored in private memory
+ data</th><td>The user data associated with the thread.
</td></tr>
<tr valign=top><th align=right>
- key</th><td>The handle for the desired thread private memory</td></tr>
+ key</th><td>The key to associate with the data
+</td></tr>
+<tr valign=top><th align=right>
+ thread</th><td>The currently open thread.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_threaddata"></a>
+<a name="apr_status_t-145"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_threaddata(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_thread_t *thread);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_data_set(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_thread_t *thread);</b>
<dd>
Return the pool associated with the current thread.
<p><dl>
@@ -307,96 +283,120 @@
</table>
</dl></dl>
-<a name="apr_set_threadkeydata"></a>
+<a name="apr_status_t-146"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_threadkeydata(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_threadkey_t *threadkey);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_private_create(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *cont);</b>
<dd>
-Return the pool associated with the current threadkey.
+Create and initialize a new thread private address space
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- data</th><td>The data to set.
+ key</th><td>The thread private handle.
</td></tr>
<tr valign=top><th align=right>
- key</th><td>The key to associate with the data.
+ dest</th><td>The destructor to use when freeing the private memory.
</td></tr>
<tr valign=top><th align=right>
- cleanup</th><td>The cleanup routine to use when the file is destroyed.
+ cont</th><td>The pool to use</td></tr>
+</table>
+ </dl></dl>
+
+<a name="apr_status_t-147"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_private_get(void **new_mem, apr_threadkey_t *key);</b>
+ <dd>
+Get a pointer to the thread private memory
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ new_mem</th><td>The data stored in private memory
</td></tr>
<tr valign=top><th align=right>
- threadkey</th><td>The currently open threadkey.</td></tr>
+ key</th><td>The handle for the desired thread private memory</td></tr>
</table>
</dl></dl>
-<a name="apr_setthreadattr_detach"></a>
+<a name="apr_status_t-148"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_setthreadattr_detach(apr_threadattr_t *attr, apr_int32_t on);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_private_set(void *priv, apr_threadkey_t *key);</b>
<dd>
-Set if newly created threads should be created in detach mode.
+Set the data to be stored in thread private memory
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- attr</th><td>The threadattr to affect
+ priv</th><td>The data to be stored in private memory
</td></tr>
<tr valign=top><th align=right>
- on</th><td>Thread detach state on or off</td></tr>
+ key</th><td>The handle for the desired thread private memory</td></tr>
</table>
</dl></dl>
-<a name="apr_thread_detach"></a>
+<a name="apr_status_t-149"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_detach(apr_thread_t *thd);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_private_delete(apr_threadkey_t *key);</b>
<dd>
-detach a thread
+Free the thread private memory
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thd</th><td>The thread to detach</td></tr>
+ key</th><td>The handle for the desired thread private memory</td></tr>
</table>
</dl></dl>
-<a name="apr_thread_exit"></a>
+<a name="apr_status_t-150"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t *retval);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_data_get(void **data, const char *key, apr_threadkey_t *threadkey);</b>
<dd>
-stop the current thread
+Return the pool associated with the current threadkey.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thd</th><td>The thread to stop
+ data</th><td>The user data associated with the threadkey.
</td></tr>
<tr valign=top><th align=right>
- retval</th><td>The return value to pass back to any thread that cares</td></tr>
+ key</th><td>The key associated with the data
+</td></tr>
+<tr valign=top><th align=right>
+ threadkey</th><td>The currently open threadkey.</td></tr>
</table>
</dl></dl>
-<a name="apr_thread_join"></a>
+<a name="apr_status_t-151"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_threadkey_data_set(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_threadkey_t *threadkey);</b>
<dd>
-block until the desired thread stops executing.
+Return the pool associated with the current threadkey.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- retval</th><td>The return value from the dead thread.
+ data</th><td>The data to set.
</td></tr>
<tr valign=top><th align=right>
- thd</th><td>The thread to join</td></tr>
+ key</th><td>The key to associate with the data.
+</td></tr>
+<tr valign=top><th align=right>
+ cleanup</th><td>The cleanup routine to use when the file is destroyed.
+</td></tr>
+<tr valign=top><th align=right>
+ threadkey</th><td>The currently open threadkey.</td></tr>
</table>
</dl></dl>
</blockquote>
@@ -404,7 +404,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +49 -41 apr-site/docs/APR_Time_library.html
Index: APR_Time_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_Time_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_Time_library.html 2000/12/04 18:14:01 1.3
+++ APR_Time_library.html 2001/02/11 02:54:57 1.4
@@ -146,46 +146,34 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_ansi_time_to_apr_time"></a>
+<a name="-21"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ansi_time_to_apr_time(apr_time_t *result, time_t input);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(void);</b>
<dd>
-convert an ansi time_t to an apr_time_t
+<p><img src="../images//tip.gif"> May sleep for longer than the specified time.
<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- result</th><td>the resulting apr_time_t
-</td></tr>
-<tr valign=top><th align=right>
- input</th><td>the time_t to convert</td></tr>
-</table>
</dl></dl>
-<a name="apr_ctime"></a>
+<a name="apr_status_t-167"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ctime(char *date_str, apr_time_t t);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ansi_time_to_apr_time(apr_time_t *result, time_t input);</b>
<dd>
-apr_ctime formats dates in the ctime() format
-in an efficient manner. it is a fixed length format
-and requires the indicated amount of storage
-including trailing \0
+convert an ansi time_t to an apr_time_t
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- date_str</th><td>String to write to.
+ result</th><td>the resulting apr_time_t
</td></tr>
<tr valign=top><th align=right>
- t</th><td>the time to convert</td></tr>
+ input</th><td>the time_t to convert</td></tr>
</table>
</dl></dl>
-<a name="apr_explode_gmt"></a>
+<a name="apr_status_t-168"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_explode_gmt(apr_exploded_time_t *result, apr_time_t input);</b>
@@ -203,7 +191,7 @@
</table>
</dl></dl>
-<a name="apr_explode_localtime"></a>
+<a name="apr_status_t-169"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_explode_localtime(apr_exploded_time_t *result, apr_time_t input);</b>
@@ -221,7 +209,7 @@
</table>
</dl></dl>
-<a name="apr_implode_time"></a>
+<a name="apr_status_t-170"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_implode_time(apr_time_t *result, apr_exploded_time_t *input);</b>
@@ -240,16 +228,7 @@
</table>
</dl></dl>
-<a name="apr_now"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_time_t apr_now(void);</b>
- <dd>
-return the current time
-<p><dl>
-</dl></dl>
-
-<a name="apr_rfc822_date"></a>
+<a name="apr_status_t-171"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_rfc822_date(char *date_str, apr_time_t t);</b>
@@ -270,23 +249,28 @@
</table>
</dl></dl>
-<a name="apr_sleep"></a>
+<a name="apr_status_t-172"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_sleep(apr_interval_time_t t);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_ctime(char *date_str, apr_time_t t);</b>
<dd>
-Sleep for the specified number of micro-seconds.
-<p><img src="../images//tip.gif"> May sleep for longer than the specified time.
+apr_ctime formats dates in the ctime() format
+in an efficient manner. it is a fixed length format
+and requires the indicated amount of storage
+including trailing \0
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- t</th><td>desired amount of time to sleep.</td></tr>
+ date_str</th><td>String to write to.
+</td></tr>
+<tr valign=top><th align=right>
+ t</th><td>the time to convert</td></tr>
</table>
</dl></dl>
-<a name="apr_strftime"></a>
+<a name="apr_status_t-173"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_strftime(char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_exploded_time_t *tm);</b>
@@ -312,12 +296,36 @@
tm</th><td>The time to convert</td></tr>
</table>
</dl></dl>
+
+<a name="apr_time_t"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_time_t apr_time_now(void);</b>
+ <dd>
+return the current time
+<p><dl>
+</dl></dl>
+
+<a name="void-35"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_sleep(apr_interval_time_t t);</b>
+ <dd>
+Sleep for the specified number of micro-seconds.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ t</th><td>desired amount of time to sleep.</td></tr>
+</table>
+ </dl></dl>
</blockquote>
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +7 -7 apr-site/docs/APR_UUID_Handling.html
Index: APR_UUID_Handling.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_UUID_Handling.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_UUID_Handling.html 2000/12/04 18:14:02 1.3
+++ APR_UUID_Handling.html 2001/02/11 02:54:57 1.4
@@ -15,10 +15,10 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_status_t-15"></a>
+<a name="apr_status_t-174"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_parse_uuid(apr_uuid_t *uuid, const char *uuid_str);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_uuid_parse(apr_uuid_t *uuid, const char *uuid_str);</b>
<dd>
Parse a standard-format string into a UUID
<p><dl>
@@ -33,10 +33,10 @@
</table>
</dl></dl>
-<a name="void-31"></a>
+<a name="void-36"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_get_uuid(apr_uuid_t *uuid);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_uuid_get(apr_uuid_t *uuid);</b>
<dd>
Generate and return a (new) UUID
<p><dl>
@@ -48,10 +48,10 @@
</table>
</dl></dl>
-<a name="void-32"></a>
+<a name="void-37"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_format_uuid(apr_pool_t *p, const apr_uuid_t *uuid);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_uuid_format(char *buffer, const apr_uuid_t *uuid);</b>
<dd>
Format a UUID into a string, following the standard format
<p><dl>
@@ -72,7 +72,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +16 -16 apr-site/docs/APR_command_arguments.html
Index: APR_command_arguments.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_command_arguments.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_command_arguments.html 2000/12/04 18:14:02 1.3
+++ APR_command_arguments.html 2001/02/11 02:54:57 1.4
@@ -193,10 +193,10 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_status_t-2"></a>
+<a name="apr_status_t-51"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_initopt(apr_getopt_t **os, apr_pool_t *cont,int argc, char *const *argv);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont,int argc, char *const *argv);</b>
<dd>
Initialize the arguments for parsing by apr_getopt().
<p><img src="../images//tip.gif"> Arguments 2 and 3 are most commonly argc and argv from main(argc, argv)
@@ -218,18 +218,18 @@
</table>
</dl></dl>
-<a name="apr_status_t-3"></a>
+<a name="apr_status_t-52"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getopt(apr_getopt_t *os, const char *opts, char *optch, const char **optarg);</b>
<dd>
-Parse the options initialized by apr_initopt().
+Parse the options initialized by apr_getopt_init().
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- os</th><td>The apr_opt_t structure returned by apr_initopt()
+ os</th><td>The apr_opt_t structure returned by apr_getopt_init()
</td></tr>
<tr valign=top><th align=right>
opts</th><td>A string of characters that are acceptable options to the
@@ -244,19 +244,19 @@
</table>
<dt><b>Return Value</b>
<dd>There are four potential status values on exit. They are:
-<PRE>
+<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></dl>
+</PRE><p></dl></dl>
-<a name="apr_status_t-4"></a>
+<a name="apr_status_t-53"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getopt_long(apr_getopt_t *os, const apr_getopt_option_t *opts, int *optch, const char **optarg);</b>
<dd>
-Parse the options initialized by apr_initopt(), accepting long
+Parse the options initialized by apr_getopt_init(), accepting long
options beginning with "--" in addition to single-character
options beginning with "-".
<p><dl>
@@ -264,7 +264,7 @@
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- os</th><td>The apr_getopt_t structure created by apr_initopt()
+ os</th><td>The apr_getopt_t structure created by apr_getopt_init()
</td></tr>
<tr valign=top><th align=right>
opts</th><td>A pointer to a list of apr_getopt_option_t structures, which
@@ -281,23 +281,23 @@
</table>
<dt><b>Return Value</b>
<dd>There are four potential status values on exit. They are:
-<PRE>
+<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>
-When APR_SUCCESS is returned, os->ind gives the index of the first
+</PRE>
+When APR_SUCCESS is returned, os->ind gives the index of the first
non-option argument. On error, a message will be printed to stdout unless
-os->err is set to 0. If os->interleave is set to nonzero, options can come
-after arguments, and os->argv will be permuted to leave non-option arguments
+os->err is set to 0. If os->interleave is set to nonzero, options can come
+after arguments, and os->argv will be permuted to leave non-option arguments
at the end (the original argv is unaffected).<p></dl></dl>
</blockquote>
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +18 -65 apr-site/docs/APR_general-purpose_library.html
Index: APR_general-purpose_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_general-purpose_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_general-purpose_library.html 2000/12/04 18:14:02 1.3
+++ APR_general-purpose_library.html 2001/02/11 02:54:58 1.4
@@ -54,10 +54,10 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_status_t-5"></a>
+<a name="apr_status_t-54"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_validate_password(const char *passwd, const char *hash);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_password_validate(const char *passwd, const char *hash);</b>
<dd>
Validate any password encypted with any algorithm that APR understands
<p><dl>
@@ -72,10 +72,10 @@
</table>
</dl></dl>
-<a name="apr_status_t-6"></a>
+<a name="apr_status_t-55"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_getpass(const char *prompt, char *pwbuf, size_t *bufsize);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_password_get(const char *prompt, char *pwbuf, size_t *bufsize);</b>
<dd>
Display a prompt and read in the password from stdin.
<p><dl>
@@ -93,19 +93,19 @@
</table>
</dl></dl>
-<a name="const"></a>
+<a name="const-2"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const char * apr_filename_of_pathname(const char *pathname);</b>
<dd>
return the final element of the pathname
<p><img src="../images//tip.gif"> Examples:
-<PRE>
- "/foo/bar/gum" -> "gum"
- "/foo/bar/gum/" -> ""
- "gum" -> "gum"
- "wi\\n32\\stuff" -> "stuff"
-</PRE>
+<PRE>
+ "/foo/bar/gum" -> "gum"
+ "/foo/bar/gum/" -> ""
+ "gum" -> "gum"
+ "wi\\n32\\stuff" -> "stuff"
+</PRE>
<p><dl>
<dt><b>Parameters</b><dd>
@@ -116,17 +116,18 @@
<dt><b>Return Value</b>
<dd>the final element of the path<p></dl></dl>
-<a name="int-3"></a>
+<a name="int-4"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), apr_vformatter_buff_t *c, const char *fmt, va_list ap);</b>
<dd>
apr_vformatter() is a generic printf-style formatting routine
with some extensions.
-<p><img src="../images//tip.gif"> <PRE>
+<p><img src="../images//tip.gif"> <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
+%pI takes an apr_sockaddr_t * and prints it as a.b.c.d:port or
+ [ipv6-address]:port
%pp takes a void * and outputs it in hex
The %p hacks are to force gcc's printf warning code to skip
over a pointer argument without complaining. This does
@@ -148,7 +149,7 @@
the flush_func should flush the buffer in whatever manner is
appropriate, re apr_pool_t nitialize curpos and endpos, and return 0.
Note that flush_func is only invoked as a result of attempting to
-write another byte at curpos when curpos >= endpos. So for
+write another byte at curpos when curpos >= endpos. So for
example, it's possible when the output exactly matches the buffer
space available that curpos == endpos will be true when
apr_vformatter returns.
@@ -162,7 +163,7 @@
space at the end of its output buffer, and doesn't actually note
that the space is in use until it either has to flush the buffer
or until apr_vformatter returns.
-</PRE>
+</PRE>
<p><dl>
<dt><b>Parameters</b><dd>
@@ -180,60 +181,12 @@
ap</th><td>The arguments to use to fill out the format string.</td></tr>
</table>
</dl></dl>
-
-<a name="int-4"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_snprintf(char *buf, size_t len, const char *format, ...);</b>
- <dd>
-snprintf routine based on apr_vformatter. This means it understands the
-same extensions.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- buf</th><td>The buffer to write to
-</td></tr>
-<tr valign=top><th align=right>
- len</th><td>The size of the buffer
-</td></tr>
-<tr valign=top><th align=right>
- format</th><td>The format string
-... The arguments to use to fill out the format string.</td></tr>
-</table>
- </dl></dl>
-
-<a name="int-5"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_vsnprintf(char *buf, size_t len, const char *format, va_list ap);</b>
- <dd>
-vsnprintf routine based on apr_vformatter. This means it understands the
-same extensions.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- buf</th><td>The buffer to write to
-</td></tr>
-<tr valign=top><th align=right>
- len</th><td>The size of the buffer
-</td></tr>
-<tr valign=top><th align=right>
- format</th><td>The format string
-</td></tr>
-<tr valign=top><th align=right>
- ap</th><td>The arguments to use to fill out the format string.</td></tr>
-</table>
- </dl></dl>
</blockquote>
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +68 -60 apr-site/docs/APR_lock_library.html
Index: APR_lock_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_lock_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_lock_library.html 2000/12/04 18:14:02 1.3
+++ APR_lock_library.html 2001/02/11 02:54:58 1.4
@@ -15,38 +15,20 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_child_init_lock"></a>
+<a name="-4"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_child_init_lock(apr_lock_t **lock, const char *fname, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-Re-open a lock in a child process.
-<p><img src="../images//tip.gif"> This function doesn't always do something, it depends on the
- locking mechanism chosen for the platform, but it is a good
- idea to call it regardless, because it makes the code more
- portable.
+<p><img src="../images//tip.gif"> If the lock is currently active when it is destroyed, it
+ will be unlocked first.
<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- lock</th><td>The newly re-opened lock structure.
-</td></tr>
-<tr valign=top><th align=right>
- fname</th><td>A file name to use if the lock mechanism requires one. This
- argument should always be provided. The lock code itself will
- determine if it should be used. This filename should be the
- same one that was passed to apr_create_lock
-</td></tr>
-<tr valign=top><th align=right>
- cont</th><td>The pool to operate on.</td></tr>
-</table>
</dl></dl>
-<a name="apr_create_lock"></a>
+<a name="apr_status_t-56"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_lock(apr_lock_t **lock, apr_locktype_e type, apr_lockscope_e scope, const char *fname, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_create(apr_lock_t **lock, apr_locktype_e type, apr_lockscope_e scope, const char *fname, apr_pool_t *cont);</b>
<dd>
Create a new instance of a lock structure.
<p><img src="../images//tip.gif"> APR_CROSS_PROCESS may lock both processes and threads, but it is
@@ -60,19 +42,19 @@
</td></tr>
<tr valign=top><th align=right>
type</th><td>The type of lock to create, one of:
-<PRE>
+<PRE>
APR_MUTEX
APR_READWRITE
-</PRE>
+</PRE>
</td></tr>
<tr valign=top><th align=right>
scope</th><td>The scope of the lock to create, one of:
-<PRE>
+<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>
+</PRE>
</td></tr>
<tr valign=top><th align=right>
fname</th><td>A file name to use if the lock mechanism requires one. This
@@ -84,63 +66,83 @@
</table>
</dl></dl>
-<a name="apr_destroy_lock"></a>
+<a name="apr_status_t-57"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_destroy_lock(apr_lock_t *lock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_aquire(apr_lock_t *lock);</b>
<dd>
-Free the memory associated with a lock.
-<p><img src="../images//tip.gif"> If the lock is currently active when it is destroyed, it
- will be unlocked first.
+Lock a protected region.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- lock</th><td>The lock to free.</td></tr>
+ lock</th><td>The lock to set.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_lockdata"></a>
+<a name="apr_status_t-58"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_lockdata(apr_lock_t *lock, const char *key, void *data);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_release(apr_lock_t *lock);</b>
<dd>
-Return the pool associated with the current lock.
+Unlock a protected region.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- lock</th><td>The currently open lock.
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The key to use when retreiving data associated with this lock
-</td></tr>
+ lock</th><td>The lock to reset.</td></tr>
+</table>
+ </dl></dl>
+
+<a name="apr_status_t-59"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_destroy(apr_lock_t *lock);</b>
+ <dd>
+Free the memory associated with a lock.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
<tr valign=top><th align=right>
- data</th><td>The user data associated with the lock.</td></tr>
+ lock</th><td>The lock to free.</td></tr>
</table>
</dl></dl>
-<a name="apr_lock"></a>
+<a name="apr_status_t-60"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock(apr_lock_t *lock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_child_init(apr_lock_t **lock, const char *fname, apr_pool_t *cont);</b>
<dd>
-Lock a protected region.
+Re-open a lock in a child process.
+<p><img src="../images//tip.gif"> This function doesn't always do something, it depends on the
+ locking mechanism chosen for the platform, but it is a good
+ idea to call it regardless, because it makes the code more
+ portable.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- lock</th><td>The lock to set.</td></tr>
+ lock</th><td>The newly re-opened lock structure.
+</td></tr>
+<tr valign=top><th align=right>
+ fname</th><td>A file name to use if the lock mechanism requires one. This
+ argument should always be provided. The lock code itself will
+ determine if it should be used. This filename should be the
+ same one that was passed to apr_lock_create
+</td></tr>
+<tr valign=top><th align=right>
+ cont</th><td>The pool to operate on.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_lockdata"></a>
+<a name="apr_status_t-61"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_lockdata(apr_lock_t *lock, void *data, const char *key, apr_status_t (*cleanup) (void *));</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_data_get(apr_lock_t *lock, const char *key, void *data);</b>
<dd>
Return the pool associated with the current lock.
<p><dl>
@@ -150,29 +152,35 @@
<tr valign=top><th align=right>
lock</th><td>The currently open lock.
</td></tr>
-<tr valign=top><th align=right>
- data</th><td>The user data to associate with the lock.
-</td></tr>
<tr valign=top><th align=right>
- key</th><td>The key to use when associating data with this lock
+ key</th><td>The key to use when retreiving data associated with this lock
</td></tr>
<tr valign=top><th align=right>
- cleanup</th><td>The cleanup to use when the lock is destroyed.</td></tr>
+ data</th><td>The user data associated with the lock.</td></tr>
</table>
</dl></dl>
-<a name="apr_unlock"></a>
+<a name="apr_status_t-62"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_unlock(apr_lock_t *lock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_lock_data_set(apr_lock_t *lock, void *data, const char *key, apr_status_t (*cleanup)(void *));</b>
<dd>
-Unlock a protected region.
+Return the pool associated with the current lock.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- lock</th><td>The lock to reset.</td></tr>
+ lock</th><td>The currently open lock.
+</td></tr>
+<tr valign=top><th align=right>
+ data</th><td>The user data to associate with the lock.
+</td></tr>
+<tr valign=top><th align=right>
+ key</th><td>The key to use when associating data with this lock
+</td></tr>
+<tr valign=top><th align=right>
+ cleanup</th><td>The cleanup to use when the lock is destroyed.</td></tr>
</table>
</dl></dl>
</blockquote>
@@ -180,7 +188,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +122 -116 apr-site/docs/APR_memory_allocation.html
Index: APR_memory_allocation.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_memory_allocation.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_memory_allocation.html 2000/12/04 18:14:02 1.3
+++ APR_memory_allocation.html 2001/02/11 02:54:58 1.4
@@ -52,7 +52,7 @@
<li><a href="APR_memory_allocation.html#apr_pool_t-apr_pool_t">apr_pool_t *joined </a>
<li><a href="APR_memory_allocation.html#apr_pool_t-first"> union block_hdr *first</a>
<li><a href="APR_memory_allocation.html#apr_pool_t-free_first_avail"> char *free_first_avail</a>
- <li><a href="APR_memory_allocation.html#apr_pool_t-int">int apr_abort(int retcode) </a>
+ <li><a href="APR_memory_allocation.html#apr_pool_t-int">int (*apr_abort)(int retcode) </a>
<li><a href="APR_memory_allocation.html#apr_pool_t-last"> union block_hdr *last</a>
</ul><h2>Class Variables</h2>
<blockquote>
@@ -111,7 +111,7 @@
<a name="apr_pool_t-int"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_abort(int retcode) ;</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int (*apr_abort)(int retcode) ;</b>
<dd>
A function to control how pools behave when they receive ENOMEM
<p><dl>
@@ -153,84 +153,92 @@
A list of processes to kill when this pool is cleared<h2>Global Functions</h2>
<blockquote>
-<a name="apr_create_pool"></a>
+<a name="apr_pool_t-2"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_create_pool(apr_pool_t **newcont, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_pool_t *apr_pool_sub_make(apr_pool_t *p, int (*apr_abort)(int retcode));</b>
<dd>
-Create a new pool.
+make a sub pool from the current pool
+<p><img src="../images//tip.gif"> The apr_abort function provides a way to quit the program if the
+ machine is out of memory. By default, APR will return on error.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- newcont</th><td>The pool we have just created.
+ p</th><td>The pool to use as a parent pool
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The parent pool. If this is NULL, the new pool is a root
- pool. If it is non-NULL, the new pool will inherit all
- of it's parent pool's attributes, except the apr_pool_t will
- be a sub-pool.</td></tr>
+ apr_abort</th><td>A function to use if the pool cannot allocate more memory.</td></tr>
</table>
- </dl></dl>
+ <dt><b>Return Value</b>
+ <dd>The new sub-pool<p></dl></dl>
-<a name="apr_get_userdata"></a>
+<a name="apr_size_t"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_userdata(void **data, const char *key, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_size_t apr_pool_num_bytes(apr_pool_t *p);</b>
<dd>
-Return the data associated with the current pool.
+report the number of bytes currently in the pool
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- data</th><td>The key for the data to retrieve
-</td></tr>
-<tr valign=top><th align=right>
- key</th><td>The user data associated with the pool.
-</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The current pool.</td></tr>
+ p</th><td>The pool to inspect</td></tr>
</table>
- </dl></dl>
+ <dt><b>Return Value</b>
+ <dd>The number of bytes<p></dl></dl>
-<a name="apr_init_alloc"></a>
+<a name="apr_size_t-2"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_init_alloc(void);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_size_t apr_pool_free_blocks_num_bytes(void);</b>
+ <dd>
+report the number of bytes currently in the list of free blocks
+<p><dl>
+<dt><b>Return Value</b>
+ <dd>The number of bytes<p></dl></dl>
+
+<a name="apr_status_t-106"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_alloc_init(apr_pool_t *globalp);</b>
<dd>
Setup all of the internal structures required to use pools
+@parm globalp The apr global pool, used to allocate APR structures
+ before any other pools are created. This pool should not
+ ever be used outside of APR.
<p><img src="../images//tip.gif"> Programs do NOT need to call this directly. APR will call this
automatically from apr_initialize.
<p><dl>
</dl></dl>
-<a name="apr_pool_t"></a>
+<a name="apr_status_t-107"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_pool_t *apr_make_sub_pool(apr_pool_t *p, int (*apr_abort)(int retcode));</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_create(apr_pool_t **newcont, apr_pool_t *cont);</b>
<dd>
-make a sub pool from the current pool
-<p><img src="../images//tip.gif"> The apr_abort function provides a way to quit the program if the
- machine is out of memory. By default, APR will return on error.
+Create a new pool.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- p</th><td>The pool to use as a parent pool
+ newcont</th><td>The pool we have just created.
</td></tr>
<tr valign=top><th align=right>
- apr_abort</th><td>A function to use if the pool cannot allocate more memory.</td></tr>
+ cont</th><td>The parent pool. If this is NULL, the new pool is a root
+ pool. If it is non-NULL, the new pool will inherit all
+ of it's parent pool's attributes, except the apr_pool_t will
+ be a sub-pool.</td></tr>
</table>
- <dt><b>Return Value</b>
- <dd>The new sub-pool<p></dl></dl>
+ </dl></dl>
-<a name="apr_set_userdata"></a>
+<a name="apr_status_t-108"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_userdata(const void *data, const char *key, apr_status_t (*cleanup) (void *), apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_userdata_set(const void *data, const char *key, apr_status_t (*cleanup)(void *), apr_pool_t *cont);</b>
<dd>
Set the data associated with the current pool
<p><img src="../images//tip.gif"> The data to be attached to the pool should have the same
@@ -258,36 +266,31 @@
</table>
</dl></dl>
-<a name="apr_size_t"></a>
+<a name="apr_status_t-109"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_size_t apr_bytes_in_pool(apr_pool_t *p);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_userdata_get(void **data, const char *key, apr_pool_t *cont);</b>
<dd>
-report the number of bytes currently in the pool
+Return the data associated with the current pool.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- p</th><td>The pool to inspect</td></tr>
+ data</th><td>The key for the data to retrieve
+</td></tr>
+<tr valign=top><th align=right>
+ key</th><td>The user data associated with the pool.
+</td></tr>
+<tr valign=top><th align=right>
+ cont</th><td>The current pool.</td></tr>
</table>
- <dt><b>Return Value</b>
- <dd>The number of bytes<p></dl></dl>
-
-<a name="apr_size_t-2"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_size_t apr_bytes_in_free_blocks(void);</b>
- <dd>
-report the number of bytes currently in the list of free blocks
-<p><dl>
-<dt><b>Return Value</b>
- <dd>The number of bytes<p></dl></dl>
+ </dl></dl>
-<a name="apr_status_t-12"></a>
+<a name="apr_status_t-110"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_run_cleanup(apr_pool_t *p, void *data, apr_status_t (*cleanup) (void *));</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_cleanup_run(apr_pool_t *p, void *data, apr_status_t (*cleanup)(void *));</b>
<dd>
Run the specified cleanup function immediately and unregister it
<p><dl>
@@ -305,10 +308,10 @@
</table>
</dl></dl>
-<a name="apr_status_t-13"></a>
+<a name="apr_status_t-111"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_null_cleanup(void *data);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_pool_cleanup_null(void *data);</b>
<dd>
An empty cleanup function
<p><dl>
@@ -319,19 +322,8 @@
data</th><td>The data to cleanup</td></tr>
</table>
</dl></dl>
-
-<a name="apr_term_alloc"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_term_alloc(void);</b>
- <dd>
-Tear down all of the internal structures required to use pools
-<p><img src="../images//tip.gif"> Programs do NOT need to call this directly. APR will call this
- automatically from apr_terminate.
-<p><dl>
-</dl></dl>
-<a name="int-6"></a>
+<a name="int-5"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b);</b>
@@ -354,49 +346,6 @@
<a name="void-10"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_cleanup_for_exec(void);</b>
- <dd>
-Run all of the child_cleanups, so that any unnecessary files are
-closed because we are about to exec a new program
-<p><dl>
-</dl></dl>
-
-<a name="void-4"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_clear_pool(apr_pool_t *p);</b>
- <dd>
-clear all memory in the pool
-<p><img src="../images//tip.gif"> This does not actually free the memory, it just allows the pool
- to re-use this memory for the next allocation.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- p</th><td>The pool to clear</td></tr>
-</table>
- </dl></dl>
-
-<a name="void-5"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_destroy_pool(apr_pool_t *p);</b>
- <dd>
-destroy the pool
-<p><img src="../images//tip.gif"> This will actually free the memory
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- p</th><td>The pool to destroy</td></tr>
-</table>
- </dl></dl>
-
-<a name="void-6"></a>
-<dl>
- <dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_palloc(apr_pool_t *c, apr_size_t reqsize);</b>
<dd>
Allocate a block of memory from a pool
@@ -413,7 +362,7 @@
<dt><b>Return Value</b>
<dd>The allocated memory<p></dl></dl>
-<a name="void-7"></a>
+<a name="void-11"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_pcalloc(apr_pool_t *p, apr_size_t size);</b>
@@ -432,10 +381,10 @@
<dt><b>Return Value</b>
<dd>The allocated memory<p></dl></dl>
-<a name="void-8"></a>
+<a name="void-12"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_register_cleanup(apr_pool_t *p, const void *data, apr_status_t (*plain_cleanup) (void *), apr_status_t (*child_cleanup) (void *));</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_cleanup_register(apr_pool_t *p, const void *data, apr_status_t (*plain_cleanup)(void *), apr_status_t (*child_cleanup)(void *));</b>
<dd>
Register a function to be called when a pool is cleared or destroyed
<p><dl>
@@ -457,10 +406,10 @@
</table>
</dl></dl>
-<a name="void-9"></a>
+<a name="void-13"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_kill_cleanup(apr_pool_t *p, const void *data, apr_status_t (*cleanup) (void *));</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_cleanup_kill(apr_pool_t *p, const void *data, apr_status_t (*cleanup)(void *));</b>
<dd>
remove a previously registered cleanup function
<p><dl>
@@ -477,12 +426,69 @@
cleanup</th><td>The function to remove from cleanup</td></tr>
</table>
</dl></dl>
+
+<a name="void-14"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_cleanup_for_exec(void);</b>
+ <dd>
+Run all of the child_cleanups, so that any unnecessary files are
+closed because we are about to exec a new program
+<p><dl>
+</dl></dl>
+
+<a name="void-7"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_alloc_term(apr_pool_t *globalp);</b>
+ <dd>
+Tear down all of the internal structures required to use pools
+@parm globalp The apr global pool, used to allocate APR structures
+ before any other pools are created. This pool should not
+ ever be used outside of APR.
+<p><img src="../images//tip.gif"> Programs do NOT need to call this directly. APR will call this
+ automatically from apr_terminate.
+<p><dl>
+</dl></dl>
+
+<a name="void-8"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_clear_pool(apr_pool_t *p);</b>
+ <dd>
+clear all memory in the pool
+<p><img src="../images//tip.gif"> This does not actually free the memory, it just allows the pool
+ to re-use this memory for the next allocation.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ p</th><td>The pool to clear</td></tr>
+</table>
+ </dl></dl>
+
+<a name="void-9"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_pool_destroy(apr_pool_t *p);</b>
+ <dd>
+destroy the pool
+<p><img src="../images//tip.gif"> This will actually free the memory
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ p</th><td>The pool to destroy</td></tr>
+</table>
+ </dl></dl>
</blockquote>
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +109 -85 apr-site/docs/APR_portability_Routines.html
Index: APR_portability_Routines.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_portability_Routines.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_portability_Routines.html 2000/12/04 18:14:04 1.3
+++ APR_portability_Routines.html 2001/02/11 02:54:58 1.4
@@ -31,120 +31,148 @@
an APR socket from it; currently, this is platform-independent<h2>Global Functions</h2>
<blockquote>
-<a name="apr_get_os_dir"></a>
+<a name="-11"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_dir(apr_os_dir_t **thedir, apr_dir_t *dir);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
<dd>
-convert the dir from apr type to os specific type.
+<p><img src="../images//tip.gif"> On Unix, it is only possible to get a file descriptor from
+ an apr file type.
<p><dl>
+</dl></dl>
+<a name="-12"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
+ <dd>
+<p><img src="../images//tip.gif"> On Unix, it is only possible to put a file descriptor into
+ an apr file type.
+<p><dl>
+</dl></dl>
+
+<a name="-13"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>(apr_status_t);</b>
+ <dd>
+<p><img src="../images//tip.gif"> If you only know the descriptor/handle or if it isn't really
+ a true socket, use apr_os_sock_put() instead.
+<p><dl>
+</dl></dl>
+
+<a name="apr_status_t-112"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_file_get(apr_os_file_t *thefile, apr_file_t *file);</b>
+ <dd>
+convert the file from apr type to os specific type.
+<p><dl>
+
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thedir</th><td>The os specific dir we are converting to
+ thefile</th><td>The os specific file we are converting to
</td></tr>
<tr valign=top><th align=right>
- dir</th><td>The apr dir to convert.</td></tr>
+ file</th><td>The apr file to convert.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_os_exp_time"></a>
+<a name="apr_status_t-113"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_exp_time(apr_os_exp_time_t **ostime, apr_exploded_time_t *aprtime);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir);</b>
<dd>
-Get the exploded time in the platforms native format.
+convert the dir from apr type to os specific type.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- ostime</th><td>the native time format
+ thedir</th><td>The os specific dir we are converting to
</td></tr>
<tr valign=top><th align=right>
- aprtime</th><td>the time to convert</td></tr>
+ dir</th><td>The apr dir to convert.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_os_file"></a>
+<a name="apr_status_t-114"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_file(apr_os_file_t *thefile, apr_file_t *file);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock);</b>
<dd>
-convert the file from apr type to os specific type.
-<p><img src="../images//tip.gif"> On Unix, it is only possible to get a file descriptor from
- an apr file type.
+Convert the socket from an apr type to an OS specific socket
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thefile</th><td>The os specific file we are converting to
+ thesock</th><td>The socket to convert.
</td></tr>
<tr valign=top><th align=right>
- file</th><td>The apr file to convert.</td></tr>
+ sock</th><td>The os specifc equivelant of the apr socket..</td></tr>
</table>
</dl></dl>
-<a name="apr_get_os_imp_time"></a>
+<a name="apr_status_t-115"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_imp_time(apr_os_imp_time_t **ostime, apr_time_t *aprtime);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_lock_get(apr_os_lock_t *oslock, apr_lock_t *lock);</b>
<dd>
-Get the imploded time in the platforms native format.
+Convert the lock from os specific type to apr type
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- ostime</th><td>the native time format
+ oslock</th><td>The os specific lock we are converting to.
</td></tr>
<tr valign=top><th align=right>
- aprtimethe</th><td>time to convert</td></tr>
+ lock</th><td>The apr lock to convert.</td></tr>
</table>
</dl></dl>
-<a name="apr_get_os_lock"></a>
+<a name="apr_status_t-116"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_lock(apr_os_lock_t *oslock, apr_lock_t *lock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_exp_time_get(apr_os_exp_time_t **ostime, apr_exploded_time_t *aprtime);</b>
<dd>
-Convert the lock from os specific type to apr type
+Get the exploded time in the platforms native format.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- oslock</th><td>The os specific lock we are converting to.
+ ostime</th><td>the native time format
</td></tr>
<tr valign=top><th align=right>
- lock</th><td>The apr lock to convert.</td></tr>
+ aprtime</th><td>the time to convert</td></tr>
</table>
</dl></dl>
-<a name="apr_get_os_sock"></a>
+<a name="apr_status_t-117"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_sock(apr_os_sock_t *thesock, apr_socket_t *sock);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_imp_time_get(apr_os_imp_time_t **ostime, apr_time_t *aprtime);</b>
<dd>
-Convert the socket from an apr type to an OS specific socket
+Get the imploded time in the platforms native format.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- thesock</th><td>The socket to convert.
+ ostime</th><td>the native time format
</td></tr>
<tr valign=top><th align=right>
- sock</th><td>The os specifc equivelant of the apr socket..</td></tr>
+ aprtimethe</th><td>time to convert</td></tr>
</table>
</dl></dl>
-<a name="apr_get_os_thread"></a>
+<a name="apr_status_t-118"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_thread(apr_os_thread_t **thethd, apr_thread_t *thd);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_thread_get(apr_os_thread_t **thethd, apr_thread_t *thd);</b>
<dd>
convert the thread to os specific type from apr type.
<p><dl>
@@ -159,10 +187,10 @@
</table>
</dl></dl>
-<a name="apr_get_os_threadkey"></a>
+<a name="apr_status_t-119"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_threadkey(apr_os_threadkey_t *thekey, apr_threadkey_t *key);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_threadkey_get(apr_os_threadkey_t *thekey, apr_threadkey_t *key);</b>
<dd>
convert the thread private memory key to os specific type from an apr type.
<p><dl>
@@ -177,35 +205,31 @@
</table>
</dl></dl>
-<a name="apr_make_os_sock"></a>
+<a name="apr_status_t-120"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_make_os_sock(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_file_put(apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont);</b>
<dd>
-Create a socket from an existing descriptor and local and remote
-socket addresses.
-<p><img src="../images//tip.gif"> If you only know the descriptor/handle or if it isn't really
- a true socket, use apr_put_os_sock() instead.
+convert the file from os specific type to apr type.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- apr_sock</th><td>The new socket that has been set up
+ file</th><td>The apr file we are converting to.
</td></tr>
<tr valign=top><th align=right>
- os_sock_info</th><td>The os representation of the socket handle and
- other characteristics of the socket
+ thefile</th><td>The os specific file to convert
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use</td></tr>
+ cont</th><td>The pool to use if it is needed.</td></tr>
</table>
</dl></dl>
-<a name="apr_put_os_dir"></a>
+<a name="apr_status_t-121"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_dir(apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_dir_put(apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont);</b>
<dd>
convert the dir from os specific type to apr type.
<p><dl>
@@ -223,117 +247,117 @@
</table>
</dl></dl>
-<a name="apr_put_os_exp_time"></a>
+<a name="apr_status_t-122"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_exp_time(apr_exploded_time_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont);</b>
<dd>
-Put the exploded time in the APR format.
+Convert a socket from the os specific type to the apr type
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- aprtime</th><td>the APR time format
+ sock</th><td>The pool to use.
</td></tr>
<tr valign=top><th align=right>
- ostime</th><td>the time to convert
+ thesock</th><td>The socket to convert to.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>the pool to use if necessary</td></tr>
+ cont</th><td>The socket we are converting to an apr type.</td></tr>
</table>
</dl></dl>
-<a name="apr_put_os_file"></a>
+<a name="apr_status_t-123"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_file(apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_sock_make(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont);</b>
<dd>
-convert the file from os specific type to apr type.
-<p><img src="../images//tip.gif"> On Unix, it is only possible to put a file descriptor into
- an apr file type.
+Create a socket from an existing descriptor and local and remote
+socket addresses.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- file</th><td>The apr file we are converting to.
+ apr_sock</th><td>The new socket that has been set up
</td></tr>
<tr valign=top><th align=right>
- thefile</th><td>The os specific file to convert
+ os_sock_info</th><td>The os representation of the socket handle and
+ other characteristics of the socket
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use if it is needed.</td></tr>
+ cont</th><td>The pool to use</td></tr>
</table>
</dl></dl>
-<a name="apr_put_os_imp_time"></a>
+<a name="apr_status_t-124"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_imp_time(apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_lock_put(apr_lock_t **lock, apr_os_lock_t *thelock, apr_pool_t *cont);</b>
<dd>
-Put the imploded time in the APR format.
+Convert the lock from os specific type to apr type
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- aprtime</th><td>the APR time format
+ lock</th><td>The apr lock we are converting to.
</td></tr>
<tr valign=top><th align=right>
- ostime</th><td>the time to convert
+ thelock</th><td>The os specific lock to convert.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>the pool to use if necessary</td></tr>
+ cont</th><td>The pool to use if it is needed.</td></tr>
</table>
</dl></dl>
-<a name="apr_put_os_lock"></a>
+<a name="apr_status_t-125"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_lock(apr_lock_t **lock, apr_os_lock_t *thelock, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_imp_time_put(apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont);</b>
<dd>
-Convert the lock from os specific type to apr type
+Put the imploded time in the APR format.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- lock</th><td>The apr lock we are converting to.
+ aprtime</th><td>the APR time format
</td></tr>
<tr valign=top><th align=right>
- thelock</th><td>The os specific lock to convert.
+ ostime</th><td>the time to convert
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use if it is needed.</td></tr>
+ cont</th><td>the pool to use if necessary</td></tr>
</table>
</dl></dl>
-<a name="apr_put_os_sock"></a>
+<a name="apr_status_t-126"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_sock(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_exp_time_put(apr_exploded_time_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont);</b>
<dd>
-Convert a socket from the os specific type to the apr type
+Put the exploded time in the APR format.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- sock</th><td>The pool to use.
+ aprtime</th><td>the APR time format
</td></tr>
<tr valign=top><th align=right>
- thesock</th><td>The socket to convert to.
+ ostime</th><td>the time to convert
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The socket we are converting to an apr type.</td></tr>
+ cont</th><td>the pool to use if necessary</td></tr>
</table>
</dl></dl>
-<a name="apr_put_os_thread"></a>
+<a name="apr_status_t-127"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_thread(apr_thread_t **thd, apr_os_thread_t *thethd, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_thread_put(apr_thread_t **thd, apr_os_thread_t *thethd,;</b>
<dd>
convert the thread from os specific type to apr type.
<p><dl>
@@ -351,10 +375,10 @@
</table>
</dl></dl>
-<a name="apr_put_os_threadkey"></a>
+<a name="apr_status_t-128"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_put_os_threadkey(apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_os_threadkey_put(apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont);</b>
<dd>
convert the thread private memory key from os specific type to apr type.
<p><dl>
@@ -376,7 +400,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +103 -55 apr-site/docs/APR_strings_library.html
Index: APR_strings_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/APR_strings_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- APR_strings_library.html 2000/12/04 18:14:04 1.3
+++ APR_strings_library.html 2001/02/11 02:54:58 1.4
@@ -15,7 +15,7 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_status_t-14"></a>
+<a name="apr_status_t-136"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_tokenize_to_argv(const char *arg_str, char ***argv_out, apr_pool_t *token_context);;</b>
@@ -36,51 +36,8 @@
token_context</th><td>Pool to use.</td></tr>
</table>
</dl></dl>
-
-<a name="apr_strnatcasecmp"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_strnatcasecmp(char const *a, char const *b);</b>
- <dd>
-Do a natural order comparison of two strings ignoring the case of the
-strings.
-<p><dl>
-
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- a</th><td>The first string to compare
-</td></tr>
-<tr valign=top><th align=right>
- b</th><td>The second string to compare</td></tr>
-</table>
- <dt><b>Return Value</b>
- <dd>Either <0, 0, or >0. If the first string is less than the second
- this returns <0, if they are equivalent it returns 0, and if the
- first string is greater than second string it retuns >0.<p></dl></dl>
-
-<a name="apr_strnatcmp"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_strnatcmp(char const *a, char const *b);</b>
- <dd>
-Do a natural order comparison of two strings.
-<p><dl>
- <dt><b>Parameters</b><dd>
- <table width="85%">
-<tr valign=top><th align=right>
- a</th><td>The first string to compare
-</td></tr>
-<tr valign=top><th align=right>
- b</th><td>The second string to compare</td></tr>
-</table>
- <dt><b>Return Value</b>
- <dd>Either <0, 0, or >0. If the first string is less than the second
- this returns <0, if they are equivalent it returns 0, and if the
- first string is greater than second string it retuns >0.<p></dl></dl>
-
-<a name="char"></a>
+<a name="char-2"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pstrdup(apr_pool_t *p, const char *s);</b>
@@ -99,7 +56,7 @@
<dt><b>Return Value</b>
<dd>The new string<p></dl></dl>
-<a name="char-2"></a>
+<a name="char-3"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n);</b>
@@ -122,7 +79,7 @@
<dt><b>Return Value</b>
<dd>The new string<p></dl></dl>
-<a name="char-3"></a>
+<a name="char-4"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pstrcat(apr_pool_t *p, ...);</b>
@@ -139,7 +96,7 @@
<dt><b>Return Value</b>
<dd>The new string<p></dl></dl>
-<a name="char-4"></a>
+<a name="char-5"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap);</b>
@@ -162,7 +119,7 @@
<dt><b>Return Value</b>
<dd>The new string<p></dl></dl>
-<a name="char-5"></a>
+<a name="char-6"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_psprintf(apr_pool_t *p, const char *fmt, ...);</b>
@@ -183,14 +140,14 @@
<dt><b>Return Value</b>
<dd>The new string<p></dl></dl>
-<a name="char-6"></a>
+<a name="char-7"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_cpystrn(char *dst, const char *src, size_t dst_size);</b>
<dd>
-copy n characters from src to des>
+copy n characters from src to des>
<p><img src="../images//tip.gif">
-<PRE>
+<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
@@ -198,7 +155,7 @@
3) Instead of returning the pointer to the beginning of the
destination string, we return a pointer to the terminating '\0'
to allow us to check for truncation.
-</PRE>
+</PRE>
<p><dl>
<dt><b>Parameters</b><dd>
@@ -214,7 +171,7 @@
</table>
</dl></dl>
-<a name="char-7"></a>
+<a name="char-8"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_collapse_spaces(char *dest, const char *src);</b>
@@ -232,12 +189,103 @@
src</th><td>The string to rid the spaces from.</td></tr>
</table>
</dl></dl>
+
+<a name="int-6"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_strnatcmp(char const *a, char const *b);</b>
+ <dd>
+Do a natural order comparison of two strings.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ a</th><td>The first string to compare
+</td></tr>
+<tr valign=top><th align=right>
+ b</th><td>The second string to compare</td></tr>
+</table>
+ <dt><b>Return Value</b>
+ <dd>Either <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="int-7"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_strnatcasecmp(char const *a, char const *b);</b>
+ <dd>
+Do a natural order comparison of two strings ignoring the case of the
+strings.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ a</th><td>The first string to compare
+</td></tr>
+<tr valign=top><th align=right>
+ b</th><td>The second string to compare</td></tr>
+</table>
+ <dt><b>Return Value</b>
+ <dd>Either <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="int-8"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_snprintf(char *buf, size_t len, const char *format, ...);</b>
+ <dd>
+snprintf routine based on apr_vformatter. This means it understands the
+same extensions.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ buf</th><td>The buffer to write to
+</td></tr>
+<tr valign=top><th align=right>
+ len</th><td>The size of the buffer
+</td></tr>
+<tr valign=top><th align=right>
+ format</th><td>The format string
+... The arguments to use to fill out the format string.</td></tr>
+</table>
+ </dl></dl>
+
+<a name="int-9"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_vsnprintf(char *buf, size_t len, const char *format, va_list ap);</b>
+ <dd>
+vsnprintf routine based on apr_vformatter. This means it understands the
+same extensions.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ buf</th><td>The buffer to write to
+</td></tr>
+<tr valign=top><th align=right>
+ len</th><td>The size of the buffer
+</td></tr>
+<tr valign=top><th align=right>
+ format</th><td>The format string
+</td></tr>
+<tr valign=top><th align=right>
+ ap</th><td>The arguments to use to fill out the format string.</td></tr>
+</table>
+ </dl></dl>
</blockquote>
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +22 -22 apr-site/docs/Dynamic_Object_Handling.html
Index: Dynamic_Object_Handling.html
===================================================================
RCS file: /home/cvs/apr-site/docs/Dynamic_Object_Handling.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- Dynamic_Object_Handling.html 2000/12/04 18:14:04 1.3
+++ Dynamic_Object_Handling.html 2001/02/11 02:54:58 1.4
@@ -34,49 +34,43 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_dso_error"></a>
+<a name="apr_status_t"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const char *apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx);</b>
<dd>
-Report more information when a DSO function fails.
+Load a DSO library.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- dso</th><td>The dso handle that has been opened
+ res_handle</th><td>Location to store new handle for the DSO.
</td></tr>
<tr valign=top><th align=right>
- buf</th><td>Location to store the dso error
+ path</th><td>Path to the DSO library
</td></tr>
<tr valign=top><th align=right>
- bufsize</th><td>The size of the provided buffer</td></tr>
+ ctx</th><td>Pool to use.</td></tr>
</table>
</dl></dl>
-<a name="apr_dso_load"></a>
+<a name="apr_status_t-2"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_unload(apr_dso_handle_t *handle);</b>
<dd>
-Load a DSO library.
+Close a DSO library.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- res_handle</th><td>Location to store new handle for the DSO.
-</td></tr>
-<tr valign=top><th align=right>
- path</th><td>Path to the DSO library
-</td></tr>
<tr valign=top><th align=right>
- ctx</th><td>Pool to use.</td></tr>
+ handle</th><td>handle to close.</td></tr>
</table>
</dl></dl>
-<a name="apr_dso_sym"></a>
+<a name="apr_status_t-3"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname);</b>
@@ -97,18 +91,24 @@
</table>
</dl></dl>
-<a name="apr_dso_unload"></a>
+<a name="const"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_dso_unload(apr_dso_handle_t *handle);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>const char *apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize);</b>
<dd>
-Close a DSO library.
+Report more information when a DSO function fails.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- handle</th><td>handle to close.</td></tr>
+ dso</th><td>The dso handle that has been opened
+</td></tr>
+<tr valign=top><th align=right>
+ buf</th><td>Location to store the dso error
+</td></tr>
+<tr valign=top><th align=right>
+ bufsize</th><td>The size of the provided buffer</td></tr>
</table>
</dl></dl>
</blockquote>
@@ -116,7 +116,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +148 -11 apr-site/docs/Error_Codes.html
Index: Error_Codes.html
===================================================================
RCS file: /home/cvs/apr-site/docs/Error_Codes.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- Error_Codes.html 2000/12/04 18:14:04 1.3
+++ Error_Codes.html 2001/02/11 02:54:58 1.4
@@ -15,29 +15,53 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_canonical_error"></a>
+<a name="apr_status_t-4"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_canonical_error(apr_status_t err);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t APR_FROM_OS_ERROR(os_err_type syserr);</b>
<dd>
-Type for specifying an error or status code.
- Convert an APR error to a canonical error
-<p><img src="../images//tip.gif"> see apr/APRDesgin for an explanation of why this is necessary.
+Fold a platform specific error into an apr_status_t code.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- err</th><td>The APR error value</td></tr>
+ syserr</th><td>The platform os error code.</td></tr>
</table>
- <dt><b>Return Value</b>
- <dd>The canonical error value<p></dl></dl>
+ </dl></dl>
-<a name="apr_strerror"></a>
+<a name="apr_status_t-5"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_os_error();</b>
+ <dd>
+<p><img src="../images//tip.gif"> Warning: macro implementation; the statcode argument may be evaluated
+ multiple times. If the statcode was not created by apr_get_os_error
+ or APR_FROM_OS_ERROR, the results are undefined.
+ Return the last platform error, folded into apr_status_t, on some platforms
+<p><dl>
+</dl></dl>
+
+<a name="apr_status_t-6"></a>
<dl>
<dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_netos_error();</b>
+ <dd>
+<p><img src="../images//tip.gif"> This retrieves errno, or calls a GetLastError() style function, and
+ folds it with APR_FROM_OS_ERROR. Some platforms (such as OS2) have no
+ such mechanism, so this call may be unsupported. Some platforms
+ require the alternate apr_get_netos_error() to retrieve the last
+ socket error.
+ Return the last socket error, folded into apr_status_t, on some platforms
+<p><dl>
+</dl></dl>
+
+<a name="char"></a>
+<dl>
+ <dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>char *apr_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize);</b>
<dd>
+Type for specifying an error or status code.
Return a human readable string describing the specified error.
<p><dl>
@@ -53,12 +77,125 @@
bufsize</th><td>Size of the buffer to hold the string.</td></tr>
</table>
</dl></dl>
+
+<a name="int"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int APR_STATUS_IS_status(apr_status_t statcode);</b>
+ <dd>
+<p><img src="../images//tip.gif"> Warning: macro implementation; the statcode argument may be evaluated
+ multiple times. If the statcode was not created by apr_get_os_error
+ or APR_FROM_OS_ERROR, the results are undefined. This macro sets
+ errno, or calls a SetLastError() style function, unfolding statcode
+ with APR_TO_OS_ERROR. Some platforms (such as OS2) have no such
+ mechanism, so this call may be unsupported.
+ APR_OS_START_ERROR is where the APR specific error values start.
+ APR_OS_START_STATUS is where the APR specific status codes start.
+ APR_OS_START_USEERR are reserved for applications that use APR that
+ layer their own error codes along with APR's.
+ APR_OS_START_CANONERR is where APR versions of errno values are defined
+ on systems which don't have the corresponding errno.
+ APR_OS_START_SYSERR folds platform-specific system error values into
+ apr_status_t values.
+ <PRE>
+<b>APR ERROR VALUES</b>
+APR_ENOSTAT APR was unable to perform a stat on the file
+APR_ENOPOOL APR was not provided a pool with which to allocate memory
+APR_EBADDATE APR was given an invalid date
+APR_EINVALSOCK APR was given an invalid socket
+APR_ENOFILE APR was not given a file structure
+APR_ENOPROC APR was not given a process structure
+APR_ENOTIME APR was not given a time structure
+APR_ENODIR APR was not given a directory structure
+APR_ENOLOCK APR was not given a lock structure
+APR_ENOPOLL APR was not given a poll structure
+APR_ENOSOCKET APR was not given a socket
+APR_ENOTHREAD APR was not given a thread structure
+APR_ENOTHDKEY APR was not given a thread key structure
+APR_ENOSHMAVAIL There is no more shared memory available
+APR_EDSOOPEN APR was unable to open the dso object. For more
+ information call apr_dso_error().
+APR_EGENERAL General failure (specific information not available)
+</PRE>
+<PRE>
+<b>APR STATUS VALUES</b>
+APR_INCHILD Program is currently executing in the child
+APR_INPARENT Program is currently executing in the parent
+APR_DETACH The thread is detached
+APR_NOTDETACH The thread is not detached
+APR_CHILD_DONE The child has finished executing
+APR_CHILD_NOTDONE The child has not finished executing
+APR_TIMEUP The operation did not finish before the timeout
+APR_INCOMPLETE The character conversion stopped because of an
+ incomplete character or shift sequence at the end
+ of the input buffer.
+APR_BADCH Getopt found an option not in the option string
+APR_BADARG Getopt found an option that is missing an argument
+ and and argument was specified in the option string
+APR_EOF APR has encountered the end of the file
+APR_NOTFOUND APR was unable to find the socket in the poll structure
+APR_ANONYMOUS APR is using anonymous shared memory
+APR_FILEBASED APR is using a file name as the key to the shared memory
+APR_KEYBASED APR is using a shared key as the key to the shared memory
+APR_EINIT Ininitalizer value. If no option has been found, but
+ the status variable requires a value, this should be used
+APR_ENOTIMPL The APR function has not been implemented on this
+ platform, either because nobody has gotten to it yet,
+ or the function is impossible on this platform.
+APR_EMISMATCH Two passwords do not match.
+</PRE>
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ status</th><td>The APR_status code to check.
+</td></tr>
+<tr valign=top><th align=right>
+ statcode</th><td>The apr status code to test.</td></tr>
+</table>
+ </dl></dl>
+
+<a name="os_err_type"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>os_err_type APR_TO_OS_ERROR(apr_status_t statcode);</b>
+ <dd>
+<p><img src="../images//tip.gif"> Warning: macro implementation; the syserr argument may be evaluated
+ multiple times.
+ Fold an apr_status_t code back to the native platform defined error.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ syserr</th><td>The apr_status_t folded platform os error code.</td></tr>
+</table>
+ </dl></dl>
+
+<a name="void"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_set_os_error(apr_status_t statcode);</b>
+ <dd>
+<p><img src="../images//tip.gif"> This retrieves errno, h_errno, or calls a GetLastSocketError() style
+ function, and folds it with APR_FROM_OS_ERROR. Some platforms (such
+ as OS2) have no such mechanism, so this call may be unsupported.
+ Reset the last platform error, unfolded from an apr_status_t, on some platforms
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ statcode</th><td>The OS error folded in a prior call to APR_FROM_OS_ERROR()</td></tr>
+</table>
+ </dl></dl>
</blockquote>
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +5 -5 apr-site/docs/Fnmatch_functions.html
Index: Fnmatch_functions.html
===================================================================
RCS file: /home/cvs/apr-site/docs/Fnmatch_functions.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- Fnmatch_functions.html 2000/12/04 18:14:04 1.3
+++ Fnmatch_functions.html 2001/02/11 02:54:58 1.4
@@ -15,7 +15,7 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_status_t"></a>
+<a name="apr_status_t-47"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_fnmatch(const char *pattern, const char *strings, int flags);</b>
@@ -33,16 +33,16 @@
</td></tr>
<tr valign=top><th align=right>
flags</th><td>flags to use in the match. Bitwise OR of:
-<PRE>
+<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>
+</PRE></td></tr>
</table>
</dl></dl>
-<a name="int-2"></a>
+<a name="int-3"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>int apr_is_fnmatch(const char *pattern);</b>
@@ -62,7 +62,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +1 -11 apr-site/docs/General.html
Index: General.html
===================================================================
RCS file: /home/cvs/apr-site/docs/General.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- General.html 2000/12/04 18:14:04 1.3
+++ General.html 2001/02/11 02:54:58 1.4
@@ -53,22 +53,12 @@
AP_DECLARE(), as they must use the C language calling convention.
<p><dl>
</dl></dl>
-
-<a name="apr_signal"></a>
-<dl>
- <dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>Sigfunc *apr_signal(int signo, Sigfunc * func);</b>
- <dd>
-<p><img src="../images//tip.gif"> extern APR_DECLARE_DATA type apr_variable; syntax is required for
-declarations within headers to properly import the variable.
-<p><dl>
-</dl></dl>
</blockquote>
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +26 -8 apr-site/docs/Hash_Tables.html
Index: Hash_Tables.html
===================================================================
RCS file: /home/cvs/apr-site/docs/Hash_Tables.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- Hash_Tables.html 2000/12/04 18:14:04 1.3
+++ Hash_Tables.html 2001/02/11 02:54:58 1.4
@@ -27,6 +27,8 @@
<dl><dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_hash_t ;</b>
<dd>
+<p><img src="../images//tip.gif"> extern APR_DECLARE_DATA type apr_variable; syntax is required for
+declarations within headers to properly import the variable.
Abstract type for hash tables.
<p><dl>
</dl></dl>
@@ -41,7 +43,7 @@
<dd>
Start iterating over the entries in a hash table.
<p><img src="../images//tip.gif"> Example:
-<PRE><p>
+<PRE><p>
int sum_values(apr_hash_t *ht)
{
apr_hash_index_t *hi;
@@ -57,7 +59,7 @@
iteration (although the results may be unpredictable unless all you do
is delete the current entry) and multiple iterations can be in
progress at the same time.
-</PRE>
+</PRE>
<p><dl>
<dt><b>Parameters</b><dd>
@@ -87,7 +89,7 @@
<a name="apr_hash_t-2"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_hash_t *apr_make_hash(apr_pool_t *pool);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_hash_t *apr_hash_make(apr_pool_t *pool);</b>
<dd>
Create a hash table.
<p><dl>
@@ -100,7 +102,7 @@
<dt><b>Return Value</b>
<dd>The hash table just created<p></dl></dl>
-<a name="void"></a>
+<a name="void-3"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_hash_set(apr_hash_t *ht, const void *key, apr_size_t klen, const void *val);</b>
@@ -125,7 +127,7 @@
</table>
</dl></dl>
-<a name="void-2"></a>
+<a name="void-4"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_hash_get(apr_hash_t *ht, const void *key, apr_size_t klen);</b>
@@ -147,7 +149,7 @@
<dt><b>Return Value</b>
<dd>Returns NULL if the key is not present.<p></dl></dl>
-<a name="void-3"></a>
+<a name="void-5"></a>
<dl>
<dt>
<b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_hash_this(apr_hash_index_t *hi, const void **key, apr_size_t *klen, void **val);;</b>
@@ -172,12 +174,28 @@
val</th><td>Return pointer for the associated value.</td></tr>
</table>
</dl></dl>
+
+<a name="void-6"></a>
+<dl>
+ <dt>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void apr_hash_count(apr_hash_t *ht, apr_size_t *count);;</b>
+ <dd>
+Get the number of key/value pairs in the hash table.
+<p><dl>
+
+ <dt><b>Parameters</b><dd>
+ <table width="85%">
+<tr valign=top><th align=right>
+ ht</th><td>The hash table</td></tr>
+</table>
+ <dt><b>Return Value</b>
+ <dd>The number of key/value pairs in the hash table.<p></dl></dl>
</blockquote>
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +68 -68 apr-site/docs/Shared_Memory_library.html
Index: Shared_Memory_library.html
===================================================================
RCS file: /home/cvs/apr-site/docs/Shared_Memory_library.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- Shared_Memory_library.html 2000/12/04 18:14:05 1.3
+++ Shared_Memory_library.html 2001/02/11 02:54:58 1.4
@@ -15,179 +15,179 @@
<h2>Global Functions</h2>
<blockquote>
-<a name="apr_get_shm_name"></a>
+<a name="apr_status_t-129"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_get_shm_name(apr_shmem_t *c, apr_shm_name_t **name);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_init(apr_shmem_t **m, apr_size_t reqsize, const char *file, apr_pool_t *cont);</b>
<dd>
-Get the name of the shared memory segment if not using anonymous
-shared memory.
+Create a pool of shared memory for use later.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- c</th><td>The shared memory block to destroy.
+ m</th><td>The shared memory block.
</td></tr>
<tr valign=top><th align=right>
- name</th><td>The name of the shared memory block, NULL if anonymous
- shared memory.</td></tr>
+ reqsize</th><td>The size of the shared memory pool.
+</td></tr>
+<tr valign=top><th align=right>
+ file</th><td>The file to use for the shared memory on platforms
+ that require it.
+</td></tr>
+<tr valign=top><th align=right>
+ cont</th><td>The pool to use</td></tr>
</table>
- <dt><b>Return Value</b>
- <dd>APR_USES_ANONYMOUS_SHM if we are using anonymous shared
- memory. APR_USES_FILEBASED_SHM if our shared memory is
- based on file access. APR_USES_KEYBASED_SHM if shared
- memory is based on a key value such as shmctl. If the
- shared memory is anonymous, the name is NULL.<p></dl></dl>
+ </dl></dl>
-<a name="apr_open_shmem"></a>
+<a name="apr_status_t-130"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_open_shmem(apr_shmem_t *c);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_destroy(apr_shmem_t *m);</b>
<dd>
-Open the shared memory block in a child process.
+Destroy the shared memory block.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- The</th><td>shared memory block to open in the child.</td></tr>
+ m</th><td>The shared memory block to destroy.</td></tr>
</table>
</dl></dl>
-<a name="apr_set_shm_name"></a>
+<a name="apr_status_t-131"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_set_shm_name(apr_shmem_t *c, apr_shm_name_t *name);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_free(apr_shmem_t *shared, void *entity);</b>
<dd>
-Set the name of the shared memory segment if not using anonymous
-shared memory. This is to allow processes to open shared memory
-created by another process.
+free shared memory previously allocated.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- c</th><td>The shared memory block to destroy.
+ shared</th><td>The shared memory block to destroy.
</td></tr>
<tr valign=top><th align=right>
- name</th><td>The name of the shared memory block, NULL if anonymous
- shared memory.</td></tr>
+ entity</th><td>The actual data to free.</td></tr>
</table>
- <dt><b>Return Value</b>
- <dd>APR_USES_ANONYMOUS_SHM if we are using anonymous shared
- memory. APR_SUCCESS if we are using named shared memory
- and we were able to assign the name correctly.<p></dl></dl>
+ </dl></dl>
-<a name="apr_shm_avail"></a>
+<a name="apr_status_t-132"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_avail(apr_shmem_t *c, apr_size_t *avail);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_name_get(apr_shmem_t *c, apr_shm_name_t **name);</b>
<dd>
-Determine how much memory is available in the specified shared memory block
+Get the name of the shared memory segment if not using anonymous
+shared memory.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- c</th><td>The shared memory block to open in the child.
+ c</th><td>The shared memory block to destroy.
</td></tr>
<tr valign=top><th align=right>
- avail</th><td>The amount of space available in the shared memory block.</td></tr>
+ name</th><td>The name of the shared memory block, NULL if anonymous
+ shared memory.</td></tr>
</table>
- </dl></dl>
+ <dt><b>Return Value</b>
+ <dd>APR_USES_ANONYMOUS_SHM if we are using anonymous shared
+ memory. APR_USES_FILEBASED_SHM if our shared memory is
+ based on file access. APR_USES_KEYBASED_SHM if shared
+ memory is based on a key value such as shmctl. If the
+ shared memory is anonymous, the name is NULL.<p></dl></dl>
-<a name="apr_shm_calloc"></a>
+<a name="apr_status_t-133"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_shm_calloc(apr_shmem_t *shared, apr_size_t size);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_name_set(apr_shmem_t *c, apr_shm_name_t *name);</b>
<dd>
-allocate memory from the block of shared memory and initialize it to zero.
+Set the name of the shared memory segment if not using anonymous
+shared memory. This is to allow processes to open shared memory
+created by another process.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- shared</th><td>The shared memory block to destroy.
+ c</th><td>The shared memory block to destroy.
</td></tr>
<tr valign=top><th align=right>
- size</th><td>How much memory to allocate</td></tr>
+ name</th><td>The name of the shared memory block, NULL if anonymous
+ shared memory.</td></tr>
</table>
- </dl></dl>
+ <dt><b>Return Value</b>
+ <dd>APR_USES_ANONYMOUS_SHM if we are using anonymous shared
+ memory. APR_SUCCESS if we are using named shared memory
+ and we were able to assign the name correctly.<p></dl></dl>
-<a name="apr_shm_destroy"></a>
+<a name="apr_status_t-134"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_destroy(apr_shmem_t *m);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_open(apr_shmem_t *c);</b>
<dd>
-Destroy the shared memory block.
+Open the shared memory block in a child process.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- m</th><td>The shared memory block to destroy.</td></tr>
+ The</th><td>shared memory block to open in the child.</td></tr>
</table>
</dl></dl>
-<a name="apr_shm_free"></a>
+<a name="apr_status_t-135"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_free(apr_shmem_t *shared, void *entity);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_avail(apr_shmem_t *c, apr_size_t *avail);</b>
<dd>
-free shared memory previously allocated.
+Determine how much memory is available in the specified shared memory block
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- shared</th><td>The shared memory block to destroy.
+ c</th><td>The shared memory block to open in the child.
</td></tr>
<tr valign=top><th align=right>
- entity</th><td>The actual data to free.</td></tr>
+ avail</th><td>The amount of space available in the shared memory block.</td></tr>
</table>
</dl></dl>
-<a name="apr_shm_init"></a>
+<a name="void-15"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>apr_status_t apr_shm_init(apr_shmem_t **m, apr_size_t reqsize, const char *file, apr_pool_t *cont);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_shm_malloc(apr_shmem_t *c, apr_size_t reqsize);</b>
<dd>
-Create a pool of shared memory for use later.
+allocate memory from the block of shared memory.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
-<tr valign=top><th align=right>
- m</th><td>The shared memory block.
-</td></tr>
-<tr valign=top><th align=right>
- reqsize</th><td>The size of the shared memory pool.
-</td></tr>
<tr valign=top><th align=right>
- file</th><td>The file to use for the shared memory on platforms
- that require it.
+ c</th><td>The shared memory block to destroy.
</td></tr>
<tr valign=top><th align=right>
- cont</th><td>The pool to use</td></tr>
+ reqsize</th><td>How much memory to allocate</td></tr>
</table>
</dl></dl>
-<a name="apr_shm_malloc"></a>
+<a name="void-16"></a>
<dl>
<dt>
- <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_shm_malloc(apr_shmem_t *c, apr_size_t reqsize);</b>
+ <b><img src="../images/ball2.gif" width=19 height=17 align=texttop>void *apr_shm_calloc(apr_shmem_t *shared, apr_size_t size);</b>
<dd>
-allocate memory from the block of shared memory.
+allocate memory from the block of shared memory and initialize it to zero.
<p><dl>
<dt><b>Parameters</b><dd>
<table width="85%">
<tr valign=top><th align=right>
- c</th><td>The shared memory block to destroy.
+ shared</th><td>The shared memory block to destroy.
</td></tr>
<tr valign=top><th align=right>
- reqsize</th><td>How much memory to allocate</td></tr>
+ size</th><td>How much memory to allocate</td></tr>
</table>
</dl></dl>
</blockquote>
@@ -195,7 +195,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +284 -276 apr-site/docs/master.html
Index: master.html
===================================================================
RCS file: /home/cvs/apr-site/docs/master.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- master.html 2000/12/04 18:14:05 1.3
+++ master.html 2001/02/11 02:54:59 1.4
@@ -15,359 +15,367 @@
<li><a href="General.html#APR_DECLARE(rettype)" target="Documentation">APR_DECLARE(rettype) apr_func(args);</a>
<li><a href="General.html#APR_DECLARE_DATA" target="Documentation">APR_DECLARE_DATA type apr_variable;</a>
<li><a href="General.html#APR_DECLARE_NONSTD(rettype)" target="Documentation">APR_DECLARE_NONSTD(rettype) apr_func(args, ...);</a>
-<li><a href="General.html#apr_signal" target="Documentation">Sigfunc *apr_signal(int signo, Sigfunc * func)</a>
</dir><a href="APR_File_handling.html" target="Documentation"><b>APR File handling</b></a><br>
<dir>
<li><a href="APR_File_handling.html#apr_finfo_t" target="Documentation">struct apr_finfo_t</a>
-<li><a href="APR_File_handling.html#apr_canon_t" target="Documentation">apr_canon_t </a>
-<li><a href="APR_File_handling.html#apr_close" target="Documentation">apr_status_t apr_close(apr_file_t *file)</a>
-<li><a href="APR_File_handling.html#apr_closedir" target="Documentation">apr_status_t apr_closedir(apr_dir_t *thedir)</a>
-<li><a href="APR_File_handling.html#apr_count_canonical_elements" target="Documentation">int apr_count_canonical_elements(const apr_canon_t *trusted_name)</a>
-<li><a href="APR_File_handling.html#apr_create_namedpipe" target="Documentation">apr_status_t apr_create_namedpipe(const char *filename, apr_fileperms_t perm, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_create_pipe" target="Documentation">apr_status_t apr_create_pipe(apr_file_t **in, apr_file_t **out, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_finfo_t-apr_file_t" target="Documentation">struct apr_file_t</a>
+<li><a href="APR_File_handling.html#" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_File_handling.html#-2" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_File_handling.html#-3" target="Documentation">(apr_status_t)</a>
<li><a href="APR_File_handling.html#apr_dev_t" target="Documentation">apr_dev_t </a>
-<li><a href="APR_File_handling.html#apr_dir_entry_ftype" target="Documentation">apr_status_t apr_dir_entry_ftype(apr_filetype_e *type, apr_dir_t *thedir)</a>
-<li><a href="APR_File_handling.html#apr_dir_entry_mtime" target="Documentation">apr_status_t apr_dir_entry_mtime(apr_time_t *mtime, apr_dir_t *thedir)</a>
-<li><a href="APR_File_handling.html#apr_dir_entry_size" target="Documentation">apr_status_t apr_dir_entry_size(apr_size_t *size, apr_dir_t *thedir)</a>
<li><a href="APR_File_handling.html#apr_dir_t" target="Documentation">apr_dir_t </a>
-<li><a href="APR_File_handling.html#apr_dupfile" target="Documentation">apr_status_t apr_dupfile(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)</a>
-<li><a href="APR_File_handling.html#apr_eof" target="Documentation">apr_status_t apr_eof(apr_file_t *fptr)</a>
-<li><a href="APR_File_handling.html#apr_ferror" target="Documentation">apr_status_t apr_ferror(apr_file_t *fptr)</a>
-<li><a href="APR_File_handling.html#apr_fgets" target="Documentation">apr_status_t apr_fgets(char *str, int len, apr_file_t *thefile)</a>
<li><a href="APR_File_handling.html#apr_file_t" target="Documentation">apr_file_t </a>
<li><a href="APR_File_handling.html#apr_fileperms_t" target="Documentation">apr_fileperms_t </a>
-<li><a href="APR_File_handling.html#apr_flush" target="Documentation">apr_status_t apr_flush(apr_file_t *thefile)</a>
-<li><a href="APR_File_handling.html#apr_full_read" target="Documentation">apr_status_t apr_full_read(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read)</a>
-<li><a href="APR_File_handling.html#apr_full_write" target="Documentation">apr_status_t apr_full_write(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written)</a>
-<li><a href="APR_File_handling.html#apr_get_canonical_elements" target="Documentation">apr_status_t apr_get_canonical_elements(char **path_elements, const apr_canon_t *trusted_name, int firstelement, int lastelement, apr_pool_t *pool)</a>
-<li><a href="APR_File_handling.html#apr_get_canonical_elements_length" target="Documentation">int apr_get_canonical_elements_length(const apr_canon_t *trusted_name, int firstelement, int lastelement)</a>
-<li><a href="APR_File_handling.html#apr_get_canonical_name" target="Documentation">apr_status_t apr_get_canonical_name(char **path, const apr_canon_t *trusted_name, apr_pool_t *pool)</a>
-<li><a href="APR_File_handling.html#apr_get_dir_filename" target="Documentation">apr_status_t apr_get_dir_filename(char **new_path, apr_dir_t *thedir)</a>
-<li><a href="APR_File_handling.html#apr_get_filedata" target="Documentation">apr_status_t apr_get_filedata(void **data, const char *key, apr_file_t *file)</a>
-<li><a href="APR_File_handling.html#apr_get_filename" target="Documentation">apr_status_t apr_get_filename(char **new_path, apr_file_t *thefile)</a>
-<li><a href="APR_File_handling.html#apr_get_pipe_timeout" target="Documentation">apr_status_t apr_get_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t *timeout)</a>
-<li><a href="APR_File_handling.html#apr_getc" target="Documentation">apr_status_t apr_getc(char *ch, apr_file_t *thefile)</a>
-<li><a href="APR_File_handling.html#apr_getfileinfo" target="Documentation">apr_status_t apr_getfileinfo(apr_finfo_t *finfo, apr_file_t *thefile)</a>
-<li><a href="APR_File_handling.html#apr_gid_t" target="Documentation">apr_gid_t </a>
<li><a href="APR_File_handling.html#apr_ino_t" target="Documentation">apr_ino_t </a>
-<li><a href="APR_File_handling.html#apr_is_absolute" target="Documentation">apr_status_t apr_is_absolute(apr_canon_t **path)</a>
-<li><a href="APR_File_handling.html#apr_is_relative" target="Documentation">apr_status_t apr_is_relative(apr_canon_t **path)</a>
-<li><a href="APR_File_handling.html#apr_is_virtualroot" target="Documentation">apr_status_t apr_is_virtualroot(apr_canon_t **path, int elements)</a>
-<li><a href="APR_File_handling.html#apr_lock_file" target="Documentation">apr_status_t apr_lock_file(apr_file_t *thefile, int type)</a>
-<li><a href="APR_File_handling.html#apr_lstat" target="Documentation">apr_status_t apr_lstat(apr_finfo_t *finfo, const char *fname, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_make_canonical_name" target="Documentation">apr_status_t apr_make_canonical_name(apr_canon_t **new_name, const apr_canon_t *trusted_name, const char *child_name, int options, apr_pool_t *pool)</a>
-<li><a href="APR_File_handling.html#apr_make_dir" target="Documentation">apr_status_t apr_make_dir(const char *path, apr_fileperms_t perm, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_merge_canonical_name" target="Documentation">apr_status_t apr_merge_canonical_name(apr_canon_t **new_name, const apr_canon_t *trusted_name, const apr_canon_t *child_name, int options, apr_pool_t *pool)</a>
-<li><a href="APR_File_handling.html#apr_open" target="Documentation">apr_status_t apr_open(apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_open_stderr" target="Documentation">apr_status_t apr_open_stderr(apr_file_t **thefile, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_opendir" target="Documentation">apr_status_t apr_opendir(apr_dir_t **new_dir, const char *dirname, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_putc" target="Documentation">apr_status_t apr_putc(char ch, apr_file_t *thefile)</a>
-<li><a href="APR_File_handling.html#apr_puts" target="Documentation">apr_status_t apr_puts(const char *str, apr_file_t *thefile)</a>
-<li><a href="APR_File_handling.html#apr_read" target="Documentation">apr_status_t apr_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes)</a>
-<li><a href="APR_File_handling.html#apr_readdir" target="Documentation">apr_status_t apr_readdir(apr_dir_t *thedir)</a>
-<li><a href="APR_File_handling.html#apr_remove_dir" target="Documentation">apr_status_t apr_remove_dir(const char *path, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_remove_file" target="Documentation">apr_status_t apr_remove_file(const char *path, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_rename_file" target="Documentation">apr_status_t apr_rename_file(const char *from_path, const char *to_path, apr_pool_t *pool)</a>
-<li><a href="APR_File_handling.html#apr_rewinddir" target="Documentation">apr_status_t apr_rewinddir(apr_dir_t *thedir)</a>
-<li><a href="APR_File_handling.html#apr_seek" target="Documentation">apr_status_t apr_seek(apr_file_t *thefile, apr_seek_where_t where,apr_off_t *offset)</a>
-<li><a href="APR_File_handling.html#apr_set_filedata" target="Documentation">apr_status_t apr_set_filedata(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup) (void *))</a>
-<li><a href="APR_File_handling.html#apr_set_pipe_timeout" target="Documentation">apr_status_t apr_set_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t timeout)</a>
-<li><a href="APR_File_handling.html#apr_setfileperms" target="Documentation">apr_status_t apr_setfileperms(const char *fname, apr_fileperms_t perms)</a>
-<li><a href="APR_File_handling.html#apr_stat" target="Documentation">apr_status_t apr_stat(apr_finfo_t *finfo, const char *fname, apr_pool_t *cont)</a>
-<li><a href="APR_File_handling.html#apr_uid_t" target="Documentation">apr_uid_t </a>
-<li><a href="APR_File_handling.html#apr_ungetc" target="Documentation">apr_status_t apr_ungetc(char ch, apr_file_t *thefile)</a>
-<li><a href="APR_File_handling.html#apr_unlock_file" target="Documentation">apr_status_t apr_unlock_file(apr_file_t *thefile)</a>
-<li><a href="APR_File_handling.html#apr_write" target="Documentation">apr_status_t apr_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)</a>
-<li><a href="APR_File_handling.html#apr_writev" target="Documentation">apr_status_t apr_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes)</a>
-<li><a href="APR_File_handling.html#int" target="Documentation">int apr_fprintf(apr_file_t *fptr, const char *format, ...)</a>
-<li><a href="APR_File_handling.html#time" target="Documentation"> or thread can hold a shared lock
- at any given time</a>
+<li><a href="APR_File_handling.html#apr_pool_t" target="Documentation">apr_pool_t apr_file_pool_get(apr_file_t *f)</a>
+<li><a href="APR_File_handling.html#apr_status_t-10" target="Documentation">apr_status_t apr_dir_close(apr_dir_t *thedir)</a>
+<li><a href="APR_File_handling.html#apr_status_t-11" target="Documentation">apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, apr_dir_t *thedir)</a>
+<li><a href="APR_File_handling.html#apr_status_t-12" target="Documentation">apr_status_t apr_dir_rewind(apr_dir_t *thedir)</a>
+<li><a href="APR_File_handling.html#apr_status_t-13" target="Documentation">apr_status_t apr_file_open(apr_file_t **new_file, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-14" target="Documentation">apr_status_t apr_file_close(apr_file_t *file)</a>
+<li><a href="APR_File_handling.html#apr_status_t-15" target="Documentation">apr_status_t apr_file_remove(const char *path, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-16" target="Documentation">apr_status_t apr_file_rename(const char *from_path, const char *to_path, apr_pool_t *pool)</a>
+<li><a href="APR_File_handling.html#apr_status_t-17" target="Documentation">apr_status_t apr_file_eof(apr_file_t *fptr)</a>
+<li><a href="APR_File_handling.html#apr_status_t-18" target="Documentation">apr_status_t apr_file_error(apr_file_t *fptr)</a>
+<li><a href="APR_File_handling.html#apr_status_t-19" target="Documentation">apr_status_t apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-20" target="Documentation">apr_status_t apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-21" target="Documentation">apr_status_t apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes)</a>
+<li><a href="APR_File_handling.html#apr_status_t-22" target="Documentation">apr_status_t apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes)</a>
+<li><a href="APR_File_handling.html#apr_status_t-23" target="Documentation">apr_status_t apr_file_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes)</a>
+<li><a href="APR_File_handling.html#apr_status_t-24" target="Documentation">apr_status_t apr_file_read_file(apr_file_t *thefile, void *buf, apr_size_t nbytes, apr_size_t *bytes_read)</a>
+<li><a href="APR_File_handling.html#apr_status_t-25" target="Documentation">apr_status_t apr_file_write_full(apr_file_t *thefile, const void *buf, apr_size_t nbytes, apr_size_t *bytes_written)</a>
+<li><a href="APR_File_handling.html#apr_status_t-26" target="Documentation">apr_status_t apr_file_putc(char ch, apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-27" target="Documentation">apr_status_t apr_file_getc(char *ch, apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-28" target="Documentation">apr_status_t apr_file_ungetc(char ch, apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-29" target="Documentation">apr_status_t apr_file_gets(char *str, int len, apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-30" target="Documentation">apr_status_t apr_file_puts(const char *str, apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-31" target="Documentation">apr_status_t apr_file_flush(apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-32" target="Documentation">apr_status_t apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p)</a>
+<li><a href="APR_File_handling.html#apr_status_t-33" target="Documentation">apr_status_t apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset)</a>
+<li><a href="APR_File_handling.html#apr_status_t-34" target="Documentation">apr_status_t apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-35" target="Documentation">apr_status_t apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-36" target="Documentation">apr_status_t apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)</a>
+<li><a href="APR_File_handling.html#apr_status_t-37" target="Documentation">apr_status_t apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)</a>
+<li><a href="APR_File_handling.html#apr_status_t-38" target="Documentation">apr_status_t apr_file_lock(apr_file_t *thefile, int type)</a>
+<li><a href="APR_File_handling.html#apr_status_t-39" target="Documentation">apr_status_t apr_file_unlock(apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-40" target="Documentation">apr_status_t apr_file_name_get(const char **new_path, apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-41" target="Documentation">apr_status_t apr_file_data_get(void **data, const char *key, apr_file_t *file)</a>
+<li><a href="APR_File_handling.html#apr_status_t-42" target="Documentation">apr_status_t apr_file_data_set(apr_file_t *file, void *data, const char *key, apr_status_t (*cleanup)(void *))</a>
+<li><a href="APR_File_handling.html#apr_status_t-43" target="Documentation">apr_status_t apr_file_perms_set(const char *fname, apr_fileperms_t perms)</a>
+<li><a href="APR_File_handling.html#apr_status_t-44" target="Documentation">apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-45" target="Documentation">apr_status_t apr_dir_remove(const char *path, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-46" target="Documentation">apr_status_t apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted, apr_file_t *thefile)</a>
+<li><a href="APR_File_handling.html#apr_status_t-7" target="Documentation">apr_status_t apr_stat(apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-8" target="Documentation">apr_status_t apr_lstat(apr_finfo_t *finfo, const char *fname, apr_int32_t wanted, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#apr_status_t-9" target="Documentation">apr_status_t apr_dir_open(apr_dir_t **new_dir, const char *dirname, apr_pool_t *cont)</a>
+<li><a href="APR_File_handling.html#int-2" target="Documentation">int apr_file_printf(apr_file_t *fptr, const char *format, ...)</a>
</dir><a href="APR_I18N_translation_library.html" target="Documentation"><b>APR I18N translation library</b></a><br>
<dir>
-<li><a href="APR_I18N_translation_library.html#apr_xlate_close" target="Documentation">apr_status_t apr_xlate_close(apr_xlate_t *convset)</a>
-<li><a href="APR_I18N_translation_library.html#apr_xlate_conv_buffer" target="Documentation">apr_status_t apr_xlate_conv_buffer(apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left)</a>
-<li><a href="APR_I18N_translation_library.html#apr_xlate_conv_byte" target="Documentation">apr_int32_t apr_xlate_conv_byte(apr_xlate_t *convset, unsigned char inchar)</a>
-<li><a href="APR_I18N_translation_library.html#apr_xlate_conv_char" target="Documentation">apr_status_t apr_xlate_conv_char(apr_xlate_t *convset, char inchar, char outchar)</a>
-<li><a href="APR_I18N_translation_library.html#apr_xlate_get_sb" target="Documentation">apr_status_t apr_xlate_get_sb(apr_xlate_t *convset, int *onoff)</a>
-<li><a href="APR_I18N_translation_library.html#apr_xlate_open" target="Documentation">apr_status_t apr_xlate_open(apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool)</a>
+<li><a href="APR_I18N_translation_library.html#-22" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_I18N_translation_library.html#-23" target="Documentation">(apr_int32_t)</a>
+<li><a href="APR_I18N_translation_library.html#apr_int32_t" target="Documentation">apr_int32_t apr_xlate_conv_byte(apr_xlate_t *convset, unsigned char inchar)</a>
+<li><a href="APR_I18N_translation_library.html#apr_status_t-175" target="Documentation">apr_status_t apr_xlate_open(apr_xlate_t **convset, const char *topage, const char *frompage, apr_pool_t *pool)</a>
+<li><a href="APR_I18N_translation_library.html#apr_status_t-176" target="Documentation">apr_status_t apr_xlate_get_sb(apr_xlate_t *convset, int *onoff)</a>
+<li><a href="APR_I18N_translation_library.html#apr_status_t-177" target="Documentation">apr_status_t apr_xlate_conv_buffer(apr_xlate_t *convset, const char *inbuf, apr_size_t *inbytes_left, char *outbuf, apr_size_t *outbytes_left)</a>
+<li><a href="APR_I18N_translation_library.html#apr_status_t-178" target="Documentation">apr_status_t apr_xlate_conv_char(apr_xlate_t *convset, char inchar, char outchar)</a>
+<li><a href="APR_I18N_translation_library.html#apr_status_t-179" target="Documentation">apr_status_t apr_xlate_close(apr_xlate_t *convset)</a>
</dir><a href="APR_MD5_Library.html" target="Documentation"><b>APR MD5 Library</b></a><br>
<dir>
<li><a href="APR_MD5_Library.html#apr_md5_ctx_t" target="Documentation">struct apr_md5_ctx_t</a>
-<li><a href="APR_MD5_Library.html#apr_status_t-10" target="Documentation">apr_status_t apr_MD5Final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context)</a>
-<li><a href="APR_MD5_Library.html#apr_status_t-11" target="Documentation">apr_status_t apr_MD5Encode(const char *password, const char *salt, char *result, size_t nbytes)</a>
-<li><a href="APR_MD5_Library.html#apr_status_t-7" target="Documentation">apr_status_t apr_MD5Init(apr_md5_ctx_t *context)</a>
-<li><a href="APR_MD5_Library.html#apr_status_t-8" target="Documentation">apr_status_t apr_MD5SetXlate(apr_md5_ctx_t *context, apr_xlate_t *xlate)</a>
-<li><a href="APR_MD5_Library.html#apr_status_t-9" target="Documentation">apr_status_t apr_MD5Update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen)</a>
+<li><a href="APR_MD5_Library.html#apr_status_t-63" target="Documentation">apr_status_t apr_md5_init(apr_md5_ctx_t *context)</a>
+<li><a href="APR_MD5_Library.html#apr_status_t-64" target="Documentation">apr_status_t apr_md5_set_xlate(apr_md5_ctx_t *context, apr_xlate_t *xlate)</a>
+<li><a href="APR_MD5_Library.html#apr_status_t-65" target="Documentation">apr_status_t apr_md5_update(apr_md5_ctx_t *context, const unsigned char *input, unsigned int inputLen)</a>
+<li><a href="APR_MD5_Library.html#apr_status_t-66" target="Documentation">apr_status_t apr_md5_final(unsigned char digest[MD5_DIGESTSIZE], apr_md5_ctx_t *context)</a>
+<li><a href="APR_MD5_Library.html#apr_status_t-67" target="Documentation">apr_status_t apr_md5_encode(const char *password, const char *salt, char *result, size_t nbytes)</a>
</dir><a href="APR_MMAP_library.html" target="Documentation"><b>APR MMAP library</b></a><br>
<dir>
<li><a href="APR_MMAP_library.html#apr_mmap_t" target="Documentation">struct apr_mmap_t</a>
-<li><a href="APR_MMAP_library.html#apr_mmap_create" target="Documentation">apr_status_t apr_mmap_create(apr_mmap_t ** newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_pool_t *cntxt)</a>
-<li><a href="APR_MMAP_library.html#apr_mmap_delete" target="Documentation">apr_status_t apr_mmap_delete(apr_mmap_t *mmap)</a>
-<li><a href="APR_MMAP_library.html#apr_mmap_offset" target="Documentation">apr_status_t apr_mmap_offset(void **addr, apr_mmap_t *mmap, apr_off_t offset)</a>
+<li><a href="APR_MMAP_library.html#apr_status_t-68" target="Documentation">apr_status_t apr_mmap_create(apr_mmap_t **newmmap, apr_file_t *file, apr_off_t offset, apr_size_t size, apr_int32_t flag, apr_pool_t *cntxt)</a>
+<li><a href="APR_MMAP_library.html#apr_status_t-69" target="Documentation">apr_status_t apr_mmap_delete(apr_mmap_t *mmap)</a>
+<li><a href="APR_MMAP_library.html#apr_status_t-70" target="Documentation">apr_status_t apr_mmap_offset(void **addr, apr_mmap_t *mmap, apr_off_t offset)</a>
</dir><a href="APR_Network_library.html" target="Documentation"><b>APR Network library</b></a><br>
<dir>
<li><a href="APR_Network_library.html#apr_hdtr_t" target="Documentation">struct apr_hdtr_t</a>
<li><a href="APR_Network_library.html#apr_sockaddr_t" target="Documentation">struct apr_sockaddr_t</a>
-<li><a href="APR_Network_library.html#apr_accept" target="Documentation">apr_status_t apr_accept(apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool)</a>
-<li><a href="APR_Network_library.html#apr_add_poll_socket" target="Documentation">apr_status_t apr_add_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t event)</a>
-<li><a href="APR_Network_library.html#apr_bind" target="Documentation">apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa)</a>
-<li><a href="APR_Network_library.html#apr_clear_poll_sockets" target="Documentation">apr_status_t apr_clear_poll_sockets(apr_pollfd_t *aprset, apr_int16_t events)</a>
-<li><a href="APR_Network_library.html#apr_close_socket" target="Documentation">apr_status_t apr_close_socket(apr_socket_t *thesocket)</a>
-<li><a href="APR_Network_library.html#apr_connect" target="Documentation">apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa)</a>
-<li><a href="APR_Network_library.html#apr_create_socket" target="Documentation">apr_status_t apr_create_socket(apr_socket_t **new_sock, int family, int type, apr_pool_t *cont)</a>
-<li><a href="APR_Network_library.html#apr_get_hostname" target="Documentation">apr_status_t apr_get_hostname(char **name, apr_interface_e which, apr_socket_t *sock)</a>
-<li><a href="APR_Network_library.html#apr_get_inaddr" target="Documentation">apr_status_t apr_get_inaddr(apr_in_addr_t *addr, char *hostname)</a>
-<li><a href="APR_Network_library.html#apr_get_ipaddr" target="Documentation">apr_status_t apr_get_ipaddr(char **addr, apr_sockaddr_t *sockaddr)</a>
-<li><a href="APR_Network_library.html#apr_get_polldata" target="Documentation">apr_status_t apr_get_polldata(apr_pollfd_t *pollfd, const char *key, void *data)</a>
-<li><a href="APR_Network_library.html#apr_get_port" target="Documentation">apr_status_t apr_get_port(apr_port_t *port, apr_sockaddr_t *sockaddr)</a>
-<li><a href="APR_Network_library.html#apr_get_revents" target="Documentation">apr_status_t apr_get_revents(apr_int16_t *event, apr_socket_t *sock, apr_pollfd_t *aprset)</a>
-<li><a href="APR_Network_library.html#apr_get_sockaddr" target="Documentation">apr_status_t apr_get_sockaddr(apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock)</a>
-<li><a href="APR_Network_library.html#apr_get_socketdata" target="Documentation">apr_status_t apr_get_socketdata(void **data, const char *key, apr_socket_t *sock)</a>
-<li><a href="APR_Network_library.html#apr_getaddrinfo" target="Documentation">apr_status_t apr_getaddrinfo(apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p)</a>
-<li><a href="APR_Network_library.html#apr_gethostname" target="Documentation">apr_status_t apr_gethostname(char *buf, int len, apr_pool_t *cont)</a>
-<li><a href="APR_Network_library.html#apr_getservbyname" target="Documentation">apr_status_t apr_getservbyname(apr_sockaddr_t *sockaddr, const char *servname)</a>
-<li><a href="APR_Network_library.html#apr_getsocketopt" target="Documentation">apr_status_t apr_getsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t* on)</a>
-<li><a href="APR_Network_library.html#apr_listen" target="Documentation">apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog)</a>
-<li><a href="APR_Network_library.html#apr_mask_poll_socket" target="Documentation">apr_status_t apr_mask_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t events)</a>
-<li><a href="APR_Network_library.html#apr_poll" target="Documentation">apr_status_t apr_poll(apr_pollfd_t *aprset, apr_int32_t *nsds, apr_interval_time_t timeout)</a>
-<li><a href="APR_Network_library.html#apr_recv" target="Documentation">apr_status_t apr_recv(apr_socket_t *sock, char *buf, apr_size_t *len)</a>
-<li><a href="APR_Network_library.html#apr_remove_poll_socket" target="Documentation">apr_status_t apr_remove_poll_socket(apr_pollfd_t *aprset, apr_socket_t *sock)</a>
-<li><a href="APR_Network_library.html#apr_send" target="Documentation">apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len)</a>
-<li><a href="APR_Network_library.html#apr_sendfile" target="Documentation">apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags)</a>
-<li><a href="APR_Network_library.html#apr_sendv" target="Documentation">apr_status_t apr_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len)</a>
-<li><a href="APR_Network_library.html#apr_set_ipaddr" target="Documentation">apr_status_t apr_set_ipaddr(apr_sockaddr_t *sockaddr, const char *addr)</a>
-<li><a href="APR_Network_library.html#apr_set_polldata" target="Documentation">apr_status_t apr_set_polldata(apr_pollfd_t *pollfd, void *data, const char *key, apr_status_t (*cleanup) (void *))</a>
-<li><a href="APR_Network_library.html#apr_set_port" target="Documentation">apr_status_t apr_set_port(apr_sockaddr_t *sockaddr, apr_port_t port)</a>
-<li><a href="APR_Network_library.html#apr_set_socketdata" target="Documentation">apr_status_t apr_set_socketdata(apr_socket_t *sock, void *data, const char *key, apr_status_t (*cleanup) (void*))</a>
-<li><a href="APR_Network_library.html#apr_setsocketopt" target="Documentation">apr_status_t apr_setsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)</a>
-<li><a href="APR_Network_library.html#apr_setup_poll" target="Documentation">apr_status_t apr_setup_poll(apr_pollfd_t **new_poll, apr_int32_t num, apr_pool_t *cont)</a>
-<li><a href="APR_Network_library.html#apr_shutdown" target="Documentation">apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how)</a>
-<li><a href="APR_Network_library.html#apr_socket_from_file" target="Documentation">apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file)</a>
+<li><a href="APR_Network_library.html#-10" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Network_library.html#-5" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Network_library.html#-6" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Network_library.html#-7" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Network_library.html#-8" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Network_library.html#-9" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Network_library.html#apr_status_t-100" target="Documentation">apr_status_t apr_poll_socket_clear(apr_pollfd_t *aprset, apr_int16_t events)</a>
+<li><a href="APR_Network_library.html#apr_status_t-101" target="Documentation">apr_status_t apr_poll_revents_get(apr_int16_t *event, apr_socket_t *sock, apr_pollfd_t *aprset)</a>
+<li><a href="APR_Network_library.html#apr_status_t-102" target="Documentation">apr_status_t apr_poll_data_get(apr_pollfd_t *pollfd, const char *key, void *data)</a>
+<li><a href="APR_Network_library.html#apr_status_t-103" target="Documentation">apr_status_t apr_poll_data_set(apr_pollfd_t *pollfd, void *data, const char *key, apr_status_t (*cleanup)(void *))</a>
+<li><a href="APR_Network_library.html#apr_status_t-104" target="Documentation">apr_status_t apr_socket_from_file(apr_socket_t **newsock, apr_file_t *file)</a>
+<li><a href="APR_Network_library.html#apr_status_t-105" target="Documentation">apr_status_t apr_getservbyname(apr_sockaddr_t *sockaddr, const char *servname)</a>
+<li><a href="APR_Network_library.html#apr_status_t-71" target="Documentation">apr_status_t apr_socket_create(apr_socket_t **new_sock, int family, int type, apr_pool_t *cont)</a>
+<li><a href="APR_Network_library.html#apr_status_t-72" target="Documentation">apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how)</a>
+<li><a href="APR_Network_library.html#apr_status_t-73" target="Documentation">apr_status_t apr_socket_close(apr_socket_t *thesocket)</a>
+<li><a href="APR_Network_library.html#apr_status_t-74" target="Documentation">apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa)</a>
+<li><a href="APR_Network_library.html#apr_status_t-75" target="Documentation">apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog)</a>
+<li><a href="APR_Network_library.html#apr_status_t-76" target="Documentation">apr_status_t apr_accept(apr_socket_t **new_sock, apr_socket_t *sock, apr_pool_t *connection_pool)</a>
+<li><a href="APR_Network_library.html#apr_status_t-77" target="Documentation">apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa)</a>
+<li><a href="APR_Network_library.html#apr_status_t-78" target="Documentation">apr_status_t apr_sockaddr_info_get(apr_sockaddr_t **sa, const char *hostname, apr_int32_t family, apr_port_t port, apr_int32_t flags, apr_pool_t *p)</a>
+<li><a href="APR_Network_library.html#apr_status_t-79" target="Documentation">apr_status_t apr_getnameinfo(char **hostname, apr_sockaddr_t *sa, apr_int32_t flags)</a>
+<li><a href="APR_Network_library.html#apr_status_t-80" target="Documentation">apr_status_t apr_parse_addr_port(char **addr, char **scope_id, apr_port_t *port, const char *str, apr_pool_t *p)</a>
+<li><a href="APR_Network_library.html#apr_status_t-81" target="Documentation">apr_status_t apr_gethostname(char *buf, int len, apr_pool_t *cont)</a>
+<li><a href="APR_Network_library.html#apr_status_t-82" target="Documentation">apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock)</a>
+<li><a href="APR_Network_library.html#apr_status_t-83" target="Documentation">apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key, apr_status_t (*cleanup)(void*))</a>
+<li><a href="APR_Network_library.html#apr_status_t-84" target="Documentation">apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len)</a>
+<li><a href="APR_Network_library.html#apr_status_t-85" target="Documentation">apr_status_t apr_sendv(apr_socket_t *sock, const struct iovec *vec, apr_int32_t nvec, apr_size_t *len)</a>
+<li><a href="APR_Network_library.html#apr_status_t-86" target="Documentation">apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file, apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len, apr_int32_t flags)</a>
+<li><a href="APR_Network_library.html#apr_status_t-87" target="Documentation">apr_status_t apr_recv(apr_socket_t *sock, char *buf, apr_size_t *len)</a>
+<li><a href="APR_Network_library.html#apr_status_t-88" target="Documentation">apr_status_t apr_setsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)</a>
+<li><a href="APR_Network_library.html#apr_status_t-89" target="Documentation">apr_status_t apr_getsocketopt(apr_socket_t *sock, apr_int32_t opt, apr_int32_t *on)</a>
+<li><a href="APR_Network_library.html#apr_status_t-90" target="Documentation">apr_status_t apr_socket_addr_get(apr_sockaddr_t **sa, apr_interface_e which, apr_socket_t *sock)</a>
+<li><a href="APR_Network_library.html#apr_status_t-91" target="Documentation">apr_status_t apr_sockaddr_port_set(apr_sockaddr_t *sockaddr, apr_port_t port)</a>
+<li><a href="APR_Network_library.html#apr_status_t-92" target="Documentation">apr_status_t apr_sockaddr_port_get(apr_port_t *port, apr_sockaddr_t *sockaddr)</a>
+<li><a href="APR_Network_library.html#apr_status_t-93" target="Documentation">apr_status_t apr_sockaddr_ip_set(apr_sockaddr_t *sockaddr, const char *addr)</a>
+<li><a href="APR_Network_library.html#apr_status_t-94" target="Documentation">apr_status_t apr_sockaddr_ip_get(char **addr, apr_sockaddr_t *sockaddr)</a>
+<li><a href="APR_Network_library.html#apr_status_t-95" target="Documentation">apr_status_t apr_poll_setup(apr_pollfd_t **new_poll, apr_int32_t num, apr_pool_t *cont)</a>
+<li><a href="APR_Network_library.html#apr_status_t-96" target="Documentation">apr_status_t apr_poll(apr_pollfd_t *aprset, apr_int32_t *nsds, apr_interval_time_t timeout)</a>
+<li><a href="APR_Network_library.html#apr_status_t-97" target="Documentation">apr_status_t apr_poll_socket_add(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t event)</a>
+<li><a href="APR_Network_library.html#apr_status_t-98" target="Documentation">apr_status_t apr_poll_socket_mask(apr_pollfd_t *aprset, apr_socket_t *sock, apr_int16_t events)</a>
+<li><a href="APR_Network_library.html#apr_status_t-99" target="Documentation">apr_status_t apr_poll_socket_remove(apr_pollfd_t *aprset, apr_socket_t *sock)</a>
</dir><a href="APR_Process_library.html" target="Documentation"><b>APR Process library</b></a><br>
<dir>
-<li><a href="APR_Process_library.html#apr_check_other_child" target="Documentation">void apr_check_other_child(void)</a>
-<li><a href="APR_Process_library.html#apr_create_process" target="Documentation">apr_status_t apr_create_process(apr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, apr_procattr_t *attr, apr_pool_t *cont)</a>
-<li><a href="APR_Process_library.html#apr_createprocattr_init" target="Documentation">apr_status_t apr_createprocattr_init(apr_procattr_t **new_attr, apr_pool_t *cont)</a>
-<li><a href="APR_Process_library.html#apr_detach" target="Documentation">apr_status_t apr_detach(void)</a>
-<li><a href="APR_Process_library.html#apr_fork" target="Documentation">apr_status_t apr_fork(apr_proc_t *proc, apr_pool_t *cont)</a>
-<li><a href="APR_Process_library.html#apr_kill" target="Documentation">apr_status_t apr_kill(apr_proc_t *proc, int sig)</a>
-<li><a href="APR_Process_library.html#apr_probe_writable_fds" target="Documentation">void apr_probe_writable_fds(void)</a>
-<li><a href="APR_Process_library.html#apr_reap_other_child" target="Documentation">apr_status_t apr_reap_other_child(apr_proc_t *pid, int status)</a>
-<li><a href="APR_Process_library.html#apr_register_other_child" target="Documentation">void apr_register_other_child(apr_proc_t *pid, void (*maintenance) (int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p)</a>
-<li><a href="APR_Process_library.html#apr_setprocattr_childerr" target="Documentation">apr_status_t apr_setprocattr_childerr(struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err)</a>
-<li><a href="APR_Process_library.html#apr_setprocattr_childin" target="Documentation">apr_status_t apr_setprocattr_childin(struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in)</a>
-<li><a href="APR_Process_library.html#apr_setprocattr_childout" target="Documentation">apr_status_t apr_setprocattr_childout(struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out)</a>
-<li><a href="APR_Process_library.html#apr_setprocattr_cmdtype" target="Documentation">apr_status_t apr_setprocattr_cmdtype(apr_procattr_t *attr, apr_cmdtype_e cmd)</a>
-<li><a href="APR_Process_library.html#apr_setprocattr_detach" target="Documentation">apr_status_t apr_setprocattr_detach(apr_procattr_t *attr, apr_int32_t detach)</a>
-<li><a href="APR_Process_library.html#apr_setprocattr_dir" target="Documentation">apr_status_t apr_setprocattr_dir(apr_procattr_t *attr, const char *dir)</a>
-<li><a href="APR_Process_library.html#apr_setprocattr_io" target="Documentation">apr_status_t apr_setprocattr_io(apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err)</a>
-<li><a href="APR_Process_library.html#apr_setprocattr_limit" target="Documentation">apr_status_t apr_setprocattr_limit(apr_procattr_t *attr, apr_int32_t what, struct rlimit *limit)</a>
-<li><a href="APR_Process_library.html#apr_unregister_other_child" target="Documentation">void apr_unregister_other_child(void *data)</a>
-<li><a href="APR_Process_library.html#apr_wait_all_procs" target="Documentation">apr_status_t apr_wait_all_procs(apr_proc_t *proc, apr_wait_t *status, apr_wait_how_e waithow, apr_pool_t *p)</a>
-<li><a href="APR_Process_library.html#apr_wait_proc" target="Documentation">apr_status_t apr_wait_proc(apr_proc_t *proc, apr_wait_how_e waithow)</a>
-<li><a href="APR_Process_library.html#void-30" target="Documentation">void apr_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how)</a>
+<li><a href="APR_Process_library.html#-16" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Process_library.html#-17" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Process_library.html#-18" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Process_library.html#-19" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_Process_library.html#-20" target="Documentation">(void)</a>
+<li><a href="APR_Process_library.html#apr_proc_detach" target="Documentation">apr_status_t apr_proc_detach(void)</a>
+<li><a href="APR_Process_library.html#apr_status_t-152" target="Documentation">apr_status_t apr_procattr_create(apr_procattr_t **new_attr, apr_pool_t *cont)</a>
+<li><a href="APR_Process_library.html#apr_status_t-153" target="Documentation">apr_status_t apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t in, apr_int32_t out, apr_int32_t err)</a>
+<li><a href="APR_Process_library.html#apr_status_t-154" target="Documentation">apr_status_t apr_procattr_child_in_set(struct apr_procattr_t *attr, apr_file_t *child_in, apr_file_t *parent_in)</a>
+<li><a href="APR_Process_library.html#apr_status_t-155" target="Documentation">apr_status_t apr_procattr_child_out_set(struct apr_procattr_t *attr, apr_file_t *child_out, apr_file_t *parent_out)</a>
+<li><a href="APR_Process_library.html#apr_status_t-156" target="Documentation">apr_status_t apr_procattr_child_err_set(struct apr_procattr_t *attr, apr_file_t *child_err, apr_file_t *parent_err)</a>
+<li><a href="APR_Process_library.html#apr_status_t-157" target="Documentation">apr_status_t apr_procattr_dir_set(apr_procattr_t *attr, const char *dir)</a>
+<li><a href="APR_Process_library.html#apr_status_t-158" target="Documentation">apr_status_t apr_procattr_cmdtype_set(apr_procattr_t *attr, apr_cmdtype_e cmd)</a>
+<li><a href="APR_Process_library.html#apr_status_t-159" target="Documentation">apr_status_t apr_procattr_detach_set(apr_procattr_t *attr, apr_int32_t detach)</a>
+<li><a href="APR_Process_library.html#apr_status_t-160" target="Documentation">apr_status_t apr_procattr_limit_set(apr_procattr_t *attr, apr_int32_t what, apr_int32_t what, struct rlimit *limit)</a>
+<li><a href="APR_Process_library.html#apr_status_t-161" target="Documentation">apr_status_t apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont)</a>
+<li><a href="APR_Process_library.html#apr_status_t-162" target="Documentation">apr_status_t apr_proc_create(apr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, apr_procattr_t *attr, apr_pool_t *cont)</a>
+<li><a href="APR_Process_library.html#apr_status_t-163" target="Documentation">apr_status_t apr_proc_wait(apr_proc_t *proc, apr_wait_how_e waithow)</a>
+<li><a href="APR_Process_library.html#apr_status_t-164" target="Documentation">apr_status_t apr_proc_wait_all_procs(apr_proc_t *proc, apr_wait_t *status, apr_wait_how_e waithow, apr_pool_t *p)</a>
+<li><a href="APR_Process_library.html#apr_status_t-165" target="Documentation">apr_status_t apr_proc_other_child_read(apr_proc_t *pid, int status);</a>
+<li><a href="APR_Process_library.html#apr_status_t-166" target="Documentation">apr_status_t apr_proc_kill(apr_proc_t *proc, int sig)</a>
+<li><a href="APR_Process_library.html#void-30" target="Documentation">void apr_proc_other_child_register(apr_proc_t *pid, void (*maintenance) (int reason, void *, int status), void *data, apr_file_t *write_fd, apr_pool_t *p)</a>
+<li><a href="APR_Process_library.html#void-31" target="Documentation">void apr_proc_other_child_unregister(void *data)</a>
+<li><a href="APR_Process_library.html#void-32" target="Documentation">void apr_proc_other_child_check();</a>
+<li><a href="APR_Process_library.html#void-33" target="Documentation">void apr_proc_probe_writable_fds()</a>
+<li><a href="APR_Process_library.html#void-34" target="Documentation">void apr_pool_note_subprocess(struct apr_pool_t *a, apr_proc_t *pid, enum kill_conditions how)</a>
</dir><a href="APR_Random_Functions.html" target="Documentation"><b>APR Random Functions</b></a><br>
<dir>
-<li><a href="APR_Random_Functions.html#apr_generate_random_bytes" target="Documentation">apr_status_t apr_generate_random_bytes(unsigned char * buf, int length)</a>
-<li><a href="APR_Random_Functions.html#apr_initialize" target="Documentation">apr_status_t apr_initialize(void)</a>
-<li><a href="APR_Random_Functions.html#apr_set_abort" target="Documentation">apr_status_t apr_set_abort(int (*apr_abort)(int retcode), apr_pool_t *cont)</a>
-<li><a href="APR_Random_Functions.html#apr_terminate" target="Documentation">void apr_terminate(void)</a>
+<li><a href="APR_Random_Functions.html#apr_status_t-48" target="Documentation">apr_status_t apr_generate_random_bytes(unsigned char * buf, int length)</a>
+<li><a href="APR_Random_Functions.html#apr_status_t-49" target="Documentation">apr_status_t apr_initialize(void)</a>
+<li><a href="APR_Random_Functions.html#apr_status_t-50" target="Documentation">apr_status_t apr_set_abort(int (*apr_abort)(int retcode), apr_pool_t *cont)</a>
+<li><a href="APR_Random_Functions.html#void-2" target="Documentation">void apr_terminate(void)</a>
</dir><a href="APR_Table_library.html" target="Documentation"><b>APR Table library</b></a><br>
<dir>
<li><a href="APR_Table_library.html#apr_array_header_t" target="Documentation">struct apr_array_header_t</a>
-<li><a href="APR_Table_library.html#apr_btable_entry_t" target="Documentation">struct apr_btable_entry_t</a>
-<li><a href="APR_Table_library.html#apr_btable_t" target="Documentation">struct apr_btable_t</a>
<li><a href="APR_Table_library.html#apr_table_entry_t" target="Documentation">struct apr_table_entry_t</a>
<li><a href="APR_Table_library.html#apr_table_t" target="Documentation">struct apr_table_t</a>
-<li><a href="APR_Table_library.html#" target="Documentation">(apr_array_header_t *)</a>
+<li><a href="APR_Table_library.html#-14" target="Documentation">(apr_array_header_t *)</a>
+<li><a href="APR_Table_library.html#-15" target="Documentation">(apr_array_header_t *)</a>
<li><a href="APR_Table_library.html#apr_array_header_t" target="Documentation">apr_array_header_t *apr_table_elts(apr_table_t *t)</a>
-<li><a href="APR_Table_library.html#apr_array_header_t-2" target="Documentation">apr_array_header_t *apr_table_elts(apr_table_t *t)</a>
-<li><a href="APR_Table_library.html#apr_array_header_t-3" target="Documentation">apr_array_header_t *apr_copy_array(apr_pool_t *p, const apr_array_header_t *arr)</a>
-<li><a href="APR_Table_library.html#apr_array_header_t-4" target="Documentation">apr_array_header_t *apr_copy_array_hdr(apr_pool_t *p, const apr_array_header_t *arr)</a>
-<li><a href="APR_Table_library.html#apr_array_header_t-5" target="Documentation">apr_array_header_t *apr_append_arrays(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)</a>
-<li><a href="APR_Table_library.html#apr_btable_t" target="Documentation">apr_btable_t *apr_overlay_tables(apr_pool_t *p, const apr_btable_t *overlay, const apr_btable_t *base);</a>
-<li><a href="APR_Table_library.html#apr_item_t" target="Documentation"> apr_item_t</a>
-<li><a href="APR_Table_library.html#apr_table_t" target="Documentation">apr_table_t *apr_make_table(apr_pool_t *p, int nelts)</a>
-<li><a href="APR_Table_library.html#apr_table_t-2" target="Documentation">apr_table_t *apr_make_btable(apr_pool_t *p, int nelts)</a>
-<li><a href="APR_Table_library.html#apr_table_t-3" target="Documentation">apr_table_t *) apr_copy_table(apr_pool_t *p, const apr_table_t *t)</a>
-<li><a href="APR_Table_library.html#apr_table_t-4" target="Documentation">apr_table_t *) apr_copy_btable(apr_pool_t *p, const apr_btable_t *t)</a>
-<li><a href="APR_Table_library.html#apr_table_t-5" target="Documentation">apr_table_t *apr_overlay_tables(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base);</a>
-<li><a href="APR_Table_library.html#char-8" target="Documentation">char *apr_array_pstrcat(apr_pool_t *p, const apr_array_header_t *arr, const char sep)</a>
-<li><a href="APR_Table_library.html#const-2" target="Documentation">const char *apr_table_get(const apr_table_t *t, const char *key)</a>
-<li><a href="APR_Table_library.html#const-3" target="Documentation">const apr_item_t *apr_btable_get(const apr_btable_t *t, const char *key)</a>
-<li><a href="APR_Table_library.html#void-11" target="Documentation">void *apr_push_array(apr_array_header_t *arr)</a>
-<li><a href="APR_Table_library.html#void-12" target="Documentation">void apr_array_cat(apr_array_header_t *dst, const apr_array_header_t *src)</a>
-<li><a href="APR_Table_library.html#void-13" target="Documentation">void apr_clear_table(apr_table_t *t)</a>
-<li><a href="APR_Table_library.html#void-14" target="Documentation">void apr_clear_btable(apr_btable_t *t)</a>
-<li><a href="APR_Table_library.html#void-15" target="Documentation">void apr_table_set(apr_table_t *t, const char *key, const char *val)</a>
-<li><a href="APR_Table_library.html#void-16" target="Documentation">void apr_btable_set(apr_btable_t *t, const char *key, size_t size, const void *val)</a>
-<li><a href="APR_Table_library.html#void-17" target="Documentation">void apr_table_setn(apr_table_t *t, const char *key, const char *val)</a>
-<li><a href="APR_Table_library.html#void-18" target="Documentation">void apr_btable_setn(apr_btable_t *t, const char *key, size_t size, const void *val)</a>
-<li><a href="APR_Table_library.html#void-19" target="Documentation">void apr_table_unset(apr_table_t *t, const char *key)</a>
-<li><a href="APR_Table_library.html#void-20" target="Documentation">void apr_btable_unset(apr_btable_t *t, const char *key)</a>
-<li><a href="APR_Table_library.html#void-21" target="Documentation">void apr_table_merge(apr_table_t *t, const char *key, const char *val)</a>
-<li><a href="APR_Table_library.html#void-22" target="Documentation">void apr_table_mergen(apr_table_t *t, const char *key, const char *val)</a>
-<li><a href="APR_Table_library.html#void-23" target="Documentation">void apr_table_add(apr_table_t *t, const char *key, const char *val)</a>
-<li><a href="APR_Table_library.html#void-24" target="Documentation">void apr_btable_add(apr_btable_t *t, const char *key, size_t size, const char *val)</a>
-<li><a href="APR_Table_library.html#void-25" target="Documentation">void apr_table_addn(apr_table_t *t, const char *key, const char *val)</a>
-<li><a href="APR_Table_library.html#void-26" target="Documentation">void apr_btable_addn(apr_btable_t *t, const char *key, size_t size, const char *val)</a>
+<li><a href="APR_Table_library.html#apr_array_header_t-2" target="Documentation">apr_array_header_t *apr_array_make(struct apr_pool_t *p, int nelts, int elt_size)</a>
+<li><a href="APR_Table_library.html#apr_array_header_t-3" target="Documentation">apr_array_header_t *apr_array_copy(apr_pool_t *p, const apr_array_header_t *arr)</a>
+<li><a href="APR_Table_library.html#apr_array_header_t-4" target="Documentation">apr_array_header_t *apr_array_copy_hdr(apr_pool_t *p, const apr_array_header_t *arr)</a>
+<li><a href="APR_Table_library.html#apr_array_header_t-5" target="Documentation">apr_array_header_t *apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)</a>
+<li><a href="APR_Table_library.html#apr_table_t" target="Documentation">apr_table_t *apr_table_make(apr_pool_t *p, int nelts)</a>
+<li><a href="APR_Table_library.html#apr_table_t-2" target="Documentation">apr_table_t *apr_table_copy(apr_pool_t *p, const apr_table_t *t)</a>
+<li><a href="APR_Table_library.html#apr_table_t-3" target="Documentation">apr_table_t *apr_table_overlay(apr_pool_t *p, const apr_table_t *overlay, const apr_table_t *base);</a>
+<li><a href="APR_Table_library.html#char-9" target="Documentation">char *apr_array_pstrcat(apr_pool_t *p, const apr_array_header_t *arr, const char sep)</a>
+<li><a href="APR_Table_library.html#const-4" target="Documentation">const char *apr_table_get(const apr_table_t *t, const char *key)</a>
+<li><a href="APR_Table_library.html#int-10" target="Documentation">int apr_is_empty_table(apr_table_t *t)</a>
+<li><a href="APR_Table_library.html#void-17" target="Documentation">void *apr_array_push(apr_array_header_t *arr)</a>
+<li><a href="APR_Table_library.html#void-18" target="Documentation">void apr_array_cat(apr_array_header_t *dst, const apr_array_header_t *src)</a>
+<li><a href="APR_Table_library.html#void-19" target="Documentation">void apr_table_clear(apr_table_t *t)</a>
+<li><a href="APR_Table_library.html#void-20" target="Documentation">void apr_table_set(apr_table_t *t, const char *key, const char *val)</a>
+<li><a href="APR_Table_library.html#void-21" target="Documentation">void apr_table_setn(apr_table_t *t, const char *key, const char *val)</a>
+<li><a href="APR_Table_library.html#void-22" target="Documentation">void apr_table_unset(apr_table_t *t, const char *key)</a>
+<li><a href="APR_Table_library.html#void-23" target="Documentation">void apr_table_merge(apr_table_t *t, const char *key, const char *val)</a>
+<li><a href="APR_Table_library.html#void-24" target="Documentation">void apr_table_mergen(apr_table_t *t, const char *key, const char *val)</a>
+<li><a href="APR_Table_library.html#void-25" target="Documentation">void apr_table_add(apr_table_t *t, const char *key, const char *val)</a>
+<li><a href="APR_Table_library.html#void-26" target="Documentation">void apr_table_addn(apr_table_t *t, const char *key, const char *val)</a>
<li><a href="APR_Table_library.html#void-27" target="Documentation">void apr_table_do(int (*comp) (void *, const char *, const char *), void *rec, const apr_table_t *t, ...)</a>
<li><a href="APR_Table_library.html#void-28" target="Documentation">void apr_table_vdo(int (*comp) (void *, const char *, const char *), void *rec, const apr_table_t *t, va_list vp)</a>
-<li><a href="APR_Table_library.html#void-29" target="Documentation">void apr_overlap_tables(apr_table_t *a, const apr_table_t *b, unsigned flags)</a>
+<li><a href="APR_Table_library.html#void-29" target="Documentation">void apr_table_overlap(apr_table_t *a, const apr_table_t *b, unsigned flags)</a>
</dir><a href="APR_Thread_library.html" target="Documentation"><b>APR Thread library</b></a><br>
<dir>
<li><a href="APR_Thread_library.html#apr_proc_t" target="Documentation">struct apr_proc_t</a>
<li><a href="APR_Thread_library.html#process_chain" target="Documentation">struct process_chain</a>
-<li><a href="APR_Thread_library.html#apr_create_thread" target="Documentation">apr_status_t apr_create_thread(apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont)</a>
-<li><a href="APR_Thread_library.html#apr_create_thread_private" target="Documentation">apr_status_t apr_create_thread_private(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *cont)</a>
-<li><a href="APR_Thread_library.html#apr_create_threadattr" target="Documentation">apr_status_t apr_create_threadattr(apr_threadattr_t **new_attr, apr_pool_t *cont)</a>
-<li><a href="APR_Thread_library.html#apr_delete_thread_private" target="Documentation">apr_status_t apr_delete_thread_private(apr_threadkey_t *key)</a>
-<li><a href="APR_Thread_library.html#apr_get_thread_private" target="Documentation">apr_status_t apr_get_thread_private(void **new_mem, apr_threadkey_t *key)</a>
-<li><a href="APR_Thread_library.html#apr_get_threaddata" target="Documentation">apr_status_t apr_get_threaddata(void **data, const char *key, apr_thread_t *thread)</a>
-<li><a href="APR_Thread_library.html#apr_get_threadkeydata" target="Documentation">apr_status_t apr_get_threadkeydata(void **data, const char *key, apr_threadkey_t *threadkey)</a>
-<li><a href="APR_Thread_library.html#apr_getthreadattr_detach" target="Documentation">apr_status_t apr_getthreadattr_detach(apr_threadattr_t *attr)</a>
-<li><a href="APR_Thread_library.html#apr_set_thread_private" target="Documentation">apr_status_t apr_set_thread_private(void *priv, apr_threadkey_t *key)</a>
-<li><a href="APR_Thread_library.html#apr_set_threaddata" target="Documentation">apr_status_t apr_set_threaddata(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_thread_t *thread)</a>
-<li><a href="APR_Thread_library.html#apr_set_threadkeydata" target="Documentation">apr_status_t apr_set_threadkeydata(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_threadkey_t *threadkey)</a>
-<li><a href="APR_Thread_library.html#apr_setthreadattr_detach" target="Documentation">apr_status_t apr_setthreadattr_detach(apr_threadattr_t *attr, apr_int32_t on)</a>
-<li><a href="APR_Thread_library.html#apr_thread_detach" target="Documentation">apr_status_t apr_thread_detach(apr_thread_t *thd)</a>
-<li><a href="APR_Thread_library.html#apr_thread_exit" target="Documentation">apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t *retval)</a>
-<li><a href="APR_Thread_library.html#apr_thread_join" target="Documentation">apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-137" target="Documentation">apr_status_t apr_threadattr_create(apr_threadattr_t **new_attr, apr_pool_t *cont)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-138" target="Documentation">apr_status_t apr_threadattr_detach_get(apr_threadattr_t *attr, apr_int32_t on)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-139" target="Documentation">apr_status_t apr_threadattr_detach_set(apr_threadattr_t *attr)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-140" target="Documentation">apr_status_t apr_thread_create(apr_thread_t **new_thread, apr_threadattr_t *attr, apr_thread_start_t func, void *data, apr_pool_t *cont)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-141" target="Documentation">apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t *retval)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-142" target="Documentation">apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd);</a>
+<li><a href="APR_Thread_library.html#apr_status_t-143" target="Documentation">apr_status_t apr_thread_detach(apr_thread_t *thd)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-144" target="Documentation">apr_status_t apr_thread_data_get(void **data, const char *key, apr_thread_t *thread)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-145" target="Documentation">apr_status_t apr_thread_data_set(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_thread_t *thread)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-146" target="Documentation">apr_status_t apr_threadkey_private_create(apr_threadkey_t **key, void (*dest)(void *), apr_pool_t *cont)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-147" target="Documentation">apr_status_t apr_threadkey_private_get(void **new_mem, apr_threadkey_t *key)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-148" target="Documentation">apr_status_t apr_threadkey_private_set(void *priv, apr_threadkey_t *key)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-149" target="Documentation">apr_status_t apr_threadkey_private_delete(apr_threadkey_t *key)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-150" target="Documentation">apr_status_t apr_threadkey_data_get(void **data, const char *key, apr_threadkey_t *threadkey)</a>
+<li><a href="APR_Thread_library.html#apr_status_t-151" target="Documentation">apr_status_t apr_threadkey_data_set(void *data, const char *key, apr_status_t (*cleanup) (void *), apr_threadkey_t *threadkey)</a>
</dir><a href="APR_Time_library.html" target="Documentation"><b>APR Time library</b></a><br>
<dir>
<li><a href="APR_Time_library.html#apr_exploded_time_t" target="Documentation">struct apr_exploded_time_t</a>
-<li><a href="APR_Time_library.html#apr_ansi_time_to_apr_time" target="Documentation">apr_status_t apr_ansi_time_to_apr_time(apr_time_t *result, time_t input)</a>
-<li><a href="APR_Time_library.html#apr_ctime" target="Documentation">apr_status_t apr_ctime(char *date_str, apr_time_t t)</a>
-<li><a href="APR_Time_library.html#apr_explode_gmt" target="Documentation">apr_status_t apr_explode_gmt(apr_exploded_time_t *result, apr_time_t input)</a>
-<li><a href="APR_Time_library.html#apr_explode_localtime" target="Documentation">apr_status_t apr_explode_localtime(apr_exploded_time_t *result, apr_time_t input)</a>
-<li><a href="APR_Time_library.html#apr_implode_time" target="Documentation">apr_status_t apr_implode_time(apr_time_t *result, apr_exploded_time_t *input)</a>
-<li><a href="APR_Time_library.html#apr_now" target="Documentation">apr_time_t apr_now(void)</a>
-<li><a href="APR_Time_library.html#apr_rfc822_date" target="Documentation">apr_status_t apr_rfc822_date(char *date_str, apr_time_t t)</a>
-<li><a href="APR_Time_library.html#apr_sleep" target="Documentation">void apr_sleep(apr_interval_time_t t)</a>
-<li><a href="APR_Time_library.html#apr_strftime" target="Documentation">apr_status_t apr_strftime(char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_exploded_time_t *tm)</a>
+<li><a href="APR_Time_library.html#-21" target="Documentation">(void)</a>
+<li><a href="APR_Time_library.html#apr_status_t-167" target="Documentation">apr_status_t apr_ansi_time_to_apr_time(apr_time_t *result, time_t input)</a>
+<li><a href="APR_Time_library.html#apr_status_t-168" target="Documentation">apr_status_t apr_explode_gmt(apr_exploded_time_t *result, apr_time_t input)</a>
+<li><a href="APR_Time_library.html#apr_status_t-169" target="Documentation">apr_status_t apr_explode_localtime(apr_exploded_time_t *result, apr_time_t input)</a>
+<li><a href="APR_Time_library.html#apr_status_t-170" target="Documentation">apr_status_t apr_implode_time(apr_time_t *result, apr_exploded_time_t *input)</a>
+<li><a href="APR_Time_library.html#apr_status_t-171" target="Documentation">apr_status_t apr_rfc822_date(char *date_str, apr_time_t t)</a>
+<li><a href="APR_Time_library.html#apr_status_t-172" target="Documentation">apr_status_t apr_ctime(char *date_str, apr_time_t t)</a>
+<li><a href="APR_Time_library.html#apr_status_t-173" target="Documentation">apr_status_t apr_strftime(char *s, apr_size_t *retsize, apr_size_t max, const char *format, apr_exploded_time_t *tm)</a>
+<li><a href="APR_Time_library.html#apr_time_t" target="Documentation">apr_time_t apr_time_now(void)</a>
+<li><a href="APR_Time_library.html#void-35" target="Documentation">void apr_sleep(apr_interval_time_t t)</a>
</dir><a href="APR_UUID_Handling.html" target="Documentation"><b>APR UUID Handling</b></a><br>
<dir>
-<li><a href="APR_UUID_Handling.html#apr_status_t-15" target="Documentation">apr_status_t apr_parse_uuid(apr_uuid_t *uuid, const char *uuid_str)</a>
-<li><a href="APR_UUID_Handling.html#void-31" target="Documentation">void apr_get_uuid(apr_uuid_t *uuid)</a>
-<li><a href="APR_UUID_Handling.html#void-32" target="Documentation">void apr_format_uuid(apr_pool_t *p, const apr_uuid_t *uuid)</a>
+<li><a href="APR_UUID_Handling.html#apr_status_t-174" target="Documentation">apr_status_t apr_uuid_parse(apr_uuid_t *uuid, const char *uuid_str)</a>
+<li><a href="APR_UUID_Handling.html#void-36" target="Documentation">void apr_uuid_get(apr_uuid_t *uuid)</a>
+<li><a href="APR_UUID_Handling.html#void-37" target="Documentation">void apr_uuid_format(char *buffer, const apr_uuid_t *uuid)</a>
</dir><a href="APR_command_arguments.html" target="Documentation"><b>APR command arguments</b></a><br>
<dir>
<li><a href="APR_command_arguments.html#apr_getopt_option_t" target="Documentation">struct apr_getopt_option_t</a>
<li><a href="APR_command_arguments.html#apr_getopt_t" target="Documentation">struct apr_getopt_t</a>
-<li><a href="APR_command_arguments.html#apr_status_t-2" target="Documentation">apr_status_t apr_initopt(apr_getopt_t **os, apr_pool_t *cont,int argc, char *const *argv)</a>
-<li><a href="APR_command_arguments.html#apr_status_t-3" target="Documentation">apr_status_t apr_getopt(apr_getopt_t *os, const char *opts, char *optch, const char **optarg)</a>
-<li><a href="APR_command_arguments.html#apr_status_t-4" target="Documentation">apr_status_t apr_getopt_long(apr_getopt_t *os, const apr_getopt_option_t *opts, int *optch, const char **optarg)</a>
+<li><a href="APR_command_arguments.html#apr_status_t-51" target="Documentation">apr_status_t apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont,int argc, char *const *argv)</a>
+<li><a href="APR_command_arguments.html#apr_status_t-52" target="Documentation">apr_status_t apr_getopt(apr_getopt_t *os, const char *opts, char *optch, const char **optarg)</a>
+<li><a href="APR_command_arguments.html#apr_status_t-53" target="Documentation">apr_status_t apr_getopt_long(apr_getopt_t *os, const apr_getopt_option_t *opts, int *optch, const char **optarg)</a>
</dir><a href="APR_general-purpose_library.html" target="Documentation"><b>APR general-purpose library</b></a><br>
<dir>
<li><a href="APR_general-purpose_library.html#apr_vformatter_buff_t" target="Documentation">struct apr_vformatter_buff_t</a>
-<li><a href="APR_general-purpose_library.html#apr_status_t-5" target="Documentation">apr_status_t apr_validate_password(const char *passwd, const char *hash)</a>
-<li><a href="APR_general-purpose_library.html#apr_status_t-6" target="Documentation">apr_status_t apr_getpass(const char *prompt, char *pwbuf, size_t *bufsize)</a>
-<li><a href="APR_general-purpose_library.html#const" target="Documentation">const char * apr_filename_of_pathname(const char *pathname)</a>
-<li><a href="APR_general-purpose_library.html#int-3" target="Documentation">int apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), apr_vformatter_buff_t *c, const char *fmt, va_list ap)</a>
-<li><a href="APR_general-purpose_library.html#int-4" target="Documentation">int apr_snprintf(char *buf, size_t len, const char *format, ...)</a>
-<li><a href="APR_general-purpose_library.html#int-5" target="Documentation">int apr_vsnprintf(char *buf, size_t len, const char *format, va_list ap)</a>
+<li><a href="APR_general-purpose_library.html#apr_status_t-54" target="Documentation">apr_status_t apr_password_validate(const char *passwd, const char *hash)</a>
+<li><a href="APR_general-purpose_library.html#apr_status_t-55" target="Documentation">apr_status_t apr_password_get(const char *prompt, char *pwbuf, size_t *bufsize)</a>
+<li><a href="APR_general-purpose_library.html#const-2" target="Documentation">const char * apr_filename_of_pathname(const char *pathname)</a>
+<li><a href="APR_general-purpose_library.html#int-4" target="Documentation">int apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), apr_vformatter_buff_t *c, const char *fmt, va_list ap)</a>
</dir><a href="APR_lock_library.html" target="Documentation"><b>APR lock library</b></a><br>
<dir>
-<li><a href="APR_lock_library.html#apr_child_init_lock" target="Documentation">apr_status_t apr_child_init_lock(apr_lock_t **lock, const char *fname, apr_pool_t *cont)</a>
-<li><a href="APR_lock_library.html#apr_create_lock" target="Documentation">apr_status_t apr_create_lock(apr_lock_t **lock, apr_locktype_e type, apr_lockscope_e scope, const char *fname, apr_pool_t *cont)</a>
-<li><a href="APR_lock_library.html#apr_destroy_lock" target="Documentation">apr_status_t apr_destroy_lock(apr_lock_t *lock)</a>
-<li><a href="APR_lock_library.html#apr_get_lockdata" target="Documentation">apr_status_t apr_get_lockdata(apr_lock_t *lock, const char *key, void *data)</a>
-<li><a href="APR_lock_library.html#apr_lock" target="Documentation">apr_status_t apr_lock(apr_lock_t *lock)</a>
-<li><a href="APR_lock_library.html#apr_set_lockdata" target="Documentation">apr_status_t apr_set_lockdata(apr_lock_t *lock, void *data, const char *key, apr_status_t (*cleanup) (void *))</a>
-<li><a href="APR_lock_library.html#apr_unlock" target="Documentation">apr_status_t apr_unlock(apr_lock_t *lock)</a>
+<li><a href="APR_lock_library.html#-4" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_lock_library.html#apr_status_t-56" target="Documentation">apr_status_t apr_lock_create(apr_lock_t **lock, apr_locktype_e type, apr_lockscope_e scope, const char *fname, apr_pool_t *cont)</a>
+<li><a href="APR_lock_library.html#apr_status_t-57" target="Documentation">apr_status_t apr_lock_aquire(apr_lock_t *lock)</a>
+<li><a href="APR_lock_library.html#apr_status_t-58" target="Documentation">apr_status_t apr_lock_release(apr_lock_t *lock)</a>
+<li><a href="APR_lock_library.html#apr_status_t-59" target="Documentation">apr_status_t apr_lock_destroy(apr_lock_t *lock)</a>
+<li><a href="APR_lock_library.html#apr_status_t-60" target="Documentation">apr_status_t apr_lock_child_init(apr_lock_t **lock, const char *fname, apr_pool_t *cont)</a>
+<li><a href="APR_lock_library.html#apr_status_t-61" target="Documentation">apr_status_t apr_lock_data_get(apr_lock_t *lock, const char *key, void *data)</a>
+<li><a href="APR_lock_library.html#apr_status_t-62" target="Documentation">apr_status_t apr_lock_data_set(apr_lock_t *lock, void *data, const char *key, apr_status_t (*cleanup)(void *))</a>
</dir><a href="APR_memory_allocation.html" target="Documentation"><b>APR memory allocation</b></a><br>
<dir>
<li><a href="APR_memory_allocation.html#apr_pool_t" target="Documentation">struct apr_pool_t</a>
<li><a href="APR_memory_allocation.html#apr_pool_t-apr_pool_t" target="Documentation">struct apr_pool_t</a>
<li><a href="APR_memory_allocation.html#apr_pool_t-cleanup" target="Documentation">struct cleanup</a>
<li><a href="APR_memory_allocation.html#apr_pool_t-process_chain" target="Documentation">struct process_chain</a>
-<li><a href="APR_memory_allocation.html#apr_create_pool" target="Documentation">apr_status_t apr_create_pool(apr_pool_t **newcont, apr_pool_t *cont)</a>
-<li><a href="APR_memory_allocation.html#apr_get_userdata" target="Documentation">apr_status_t apr_get_userdata(void **data, const char *key, apr_pool_t *cont)</a>
-<li><a href="APR_memory_allocation.html#apr_init_alloc" target="Documentation">apr_status_t apr_init_alloc(void)</a>
-<li><a href="APR_memory_allocation.html#apr_pool_t" target="Documentation">apr_pool_t *apr_make_sub_pool(apr_pool_t *p, int (*apr_abort)(int retcode))</a>
-<li><a href="APR_memory_allocation.html#apr_set_userdata" target="Documentation">apr_status_t apr_set_userdata(const void *data, const char *key, apr_status_t (*cleanup) (void *), apr_pool_t *cont)</a>
-<li><a href="APR_memory_allocation.html#apr_size_t" target="Documentation">apr_size_t apr_bytes_in_pool(apr_pool_t *p)</a>
-<li><a href="APR_memory_allocation.html#apr_size_t-2" target="Documentation">apr_size_t apr_bytes_in_free_blocks(void)</a>
-<li><a href="APR_memory_allocation.html#apr_status_t-12" target="Documentation">apr_status_t apr_run_cleanup(apr_pool_t *p, void *data, apr_status_t (*cleanup) (void *))</a>
-<li><a href="APR_memory_allocation.html#apr_status_t-13" target="Documentation">apr_status_t apr_null_cleanup(void *data)</a>
-<li><a href="APR_memory_allocation.html#apr_term_alloc" target="Documentation">void apr_term_alloc(void)</a>
-<li><a href="APR_memory_allocation.html#int-6" target="Documentation">int apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b)</a>
-<li><a href="APR_memory_allocation.html#void-10" target="Documentation">void apr_cleanup_for_exec(void)</a>
-<li><a href="APR_memory_allocation.html#void-4" target="Documentation">void apr_clear_pool(apr_pool_t *p)</a>
-<li><a href="APR_memory_allocation.html#void-5" target="Documentation">void apr_destroy_pool(apr_pool_t *p)</a>
-<li><a href="APR_memory_allocation.html#void-6" target="Documentation">void *apr_palloc(apr_pool_t *c, apr_size_t reqsize)</a>
-<li><a href="APR_memory_allocation.html#void-7" target="Documentation">void *apr_pcalloc(apr_pool_t *p, apr_size_t size)</a>
-<li><a href="APR_memory_allocation.html#void-8" target="Documentation">void apr_register_cleanup(apr_pool_t *p, const void *data, apr_status_t (*plain_cleanup) (void *), apr_status_t (*child_cleanup) (void *))</a>
-<li><a href="APR_memory_allocation.html#void-9" target="Documentation">void apr_kill_cleanup(apr_pool_t *p, const void *data, apr_status_t (*cleanup) (void *))</a>
+<li><a href="APR_memory_allocation.html#apr_pool_t-2" target="Documentation">apr_pool_t *apr_pool_sub_make(apr_pool_t *p, int (*apr_abort)(int retcode))</a>
+<li><a href="APR_memory_allocation.html#apr_size_t" target="Documentation">apr_size_t apr_pool_num_bytes(apr_pool_t *p)</a>
+<li><a href="APR_memory_allocation.html#apr_size_t-2" target="Documentation">apr_size_t apr_pool_free_blocks_num_bytes(void)</a>
+<li><a href="APR_memory_allocation.html#apr_status_t-106" target="Documentation">apr_status_t apr_pool_alloc_init(apr_pool_t *globalp)</a>
+<li><a href="APR_memory_allocation.html#apr_status_t-107" target="Documentation">apr_status_t apr_pool_create(apr_pool_t **newcont, apr_pool_t *cont)</a>
+<li><a href="APR_memory_allocation.html#apr_status_t-108" target="Documentation">apr_status_t apr_pool_userdata_set(const void *data, const char *key, apr_status_t (*cleanup)(void *), apr_pool_t *cont)</a>
+<li><a href="APR_memory_allocation.html#apr_status_t-109" target="Documentation">apr_status_t apr_pool_userdata_get(void **data, const char *key, apr_pool_t *cont)</a>
+<li><a href="APR_memory_allocation.html#apr_status_t-110" target="Documentation">apr_status_t apr_pool_cleanup_run(apr_pool_t *p, void *data, apr_status_t (*cleanup)(void *))</a>
+<li><a href="APR_memory_allocation.html#apr_status_t-111" target="Documentation">apr_status_t apr_pool_cleanup_null(void *data)</a>
+<li><a href="APR_memory_allocation.html#int-5" target="Documentation">int apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b)</a>
+<li><a href="APR_memory_allocation.html#void-10" target="Documentation">void *apr_palloc(apr_pool_t *c, apr_size_t reqsize)</a>
+<li><a href="APR_memory_allocation.html#void-11" target="Documentation">void *apr_pcalloc(apr_pool_t *p, apr_size_t size)</a>
+<li><a href="APR_memory_allocation.html#void-12" target="Documentation">void apr_pool_cleanup_register(apr_pool_t *p, const void *data, apr_status_t (*plain_cleanup)(void *), apr_status_t (*child_cleanup)(void *))</a>
+<li><a href="APR_memory_allocation.html#void-13" target="Documentation">void apr_pool_cleanup_kill(apr_pool_t *p, const void *data, apr_status_t (*cleanup)(void *))</a>
+<li><a href="APR_memory_allocation.html#void-14" target="Documentation">void apr_pool_cleanup_for_exec(void)</a>
+<li><a href="APR_memory_allocation.html#void-7" target="Documentation">void apr_pool_alloc_term(apr_pool_t *globalp)</a>
+<li><a href="APR_memory_allocation.html#void-8" target="Documentation">void apr_clear_pool(apr_pool_t *p)</a>
+<li><a href="APR_memory_allocation.html#void-9" target="Documentation">void apr_pool_destroy(apr_pool_t *p)</a>
</dir><a href="APR_portability_Routines.html" target="Documentation"><b>APR portability Routines</b></a><br>
<dir>
<li><a href="APR_portability_Routines.html#apr_os_sock_info_t" target="Documentation">struct apr_os_sock_info_t</a>
-<li><a href="APR_portability_Routines.html#apr_get_os_dir" target="Documentation">apr_status_t apr_get_os_dir(apr_os_dir_t **thedir, apr_dir_t *dir)</a>
-<li><a href="APR_portability_Routines.html#apr_get_os_exp_time" target="Documentation">apr_status_t apr_get_os_exp_time(apr_os_exp_time_t **ostime, apr_exploded_time_t *aprtime)</a>
-<li><a href="APR_portability_Routines.html#apr_get_os_file" target="Documentation">apr_status_t apr_get_os_file(apr_os_file_t *thefile, apr_file_t *file)</a>
-<li><a href="APR_portability_Routines.html#apr_get_os_imp_time" target="Documentation">apr_status_t apr_get_os_imp_time(apr_os_imp_time_t **ostime, apr_time_t *aprtime)</a>
-<li><a href="APR_portability_Routines.html#apr_get_os_lock" target="Documentation">apr_status_t apr_get_os_lock(apr_os_lock_t *oslock, apr_lock_t *lock)</a>
-<li><a href="APR_portability_Routines.html#apr_get_os_sock" target="Documentation">apr_status_t apr_get_os_sock(apr_os_sock_t *thesock, apr_socket_t *sock)</a>
-<li><a href="APR_portability_Routines.html#apr_get_os_thread" target="Documentation">apr_status_t apr_get_os_thread(apr_os_thread_t **thethd, apr_thread_t *thd)</a>
-<li><a href="APR_portability_Routines.html#apr_get_os_threadkey" target="Documentation">apr_status_t apr_get_os_threadkey(apr_os_threadkey_t *thekey, apr_threadkey_t *key)</a>
-<li><a href="APR_portability_Routines.html#apr_make_os_sock" target="Documentation">apr_status_t apr_make_os_sock(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont)</a>
-<li><a href="APR_portability_Routines.html#apr_put_os_dir" target="Documentation">apr_status_t apr_put_os_dir(apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont)</a>
-<li><a href="APR_portability_Routines.html#apr_put_os_exp_time" target="Documentation">apr_status_t apr_put_os_exp_time(apr_exploded_time_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont)</a>
-<li><a href="APR_portability_Routines.html#apr_put_os_file" target="Documentation">apr_status_t apr_put_os_file(apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont)</a>
-<li><a href="APR_portability_Routines.html#apr_put_os_imp_time" target="Documentation">apr_status_t apr_put_os_imp_time(apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont)</a>
-<li><a href="APR_portability_Routines.html#apr_put_os_lock" target="Documentation">apr_status_t apr_put_os_lock(apr_lock_t **lock, apr_os_lock_t *thelock, apr_pool_t *cont)</a>
-<li><a href="APR_portability_Routines.html#apr_put_os_sock" target="Documentation">apr_status_t apr_put_os_sock(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont)</a>
-<li><a href="APR_portability_Routines.html#apr_put_os_thread" target="Documentation">apr_status_t apr_put_os_thread(apr_thread_t **thd, apr_os_thread_t *thethd, apr_pool_t *cont)</a>
-<li><a href="APR_portability_Routines.html#apr_put_os_threadkey" target="Documentation">apr_status_t apr_put_os_threadkey(apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont)</a>
+<li><a href="APR_portability_Routines.html#-11" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_portability_Routines.html#-12" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_portability_Routines.html#-13" target="Documentation">(apr_status_t)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-112" target="Documentation">apr_status_t apr_os_file_get(apr_os_file_t *thefile, apr_file_t *file)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-113" target="Documentation">apr_status_t apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-114" target="Documentation">apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-115" target="Documentation">apr_status_t apr_os_lock_get(apr_os_lock_t *oslock, apr_lock_t *lock)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-116" target="Documentation">apr_status_t apr_os_exp_time_get(apr_os_exp_time_t **ostime, apr_exploded_time_t *aprtime)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-117" target="Documentation">apr_status_t apr_os_imp_time_get(apr_os_imp_time_t **ostime, apr_time_t *aprtime)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-118" target="Documentation">apr_status_t apr_os_thread_get(apr_os_thread_t **thethd, apr_thread_t *thd)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-119" target="Documentation">apr_status_t apr_os_threadkey_get(apr_os_threadkey_t *thekey, apr_threadkey_t *key)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-120" target="Documentation">apr_status_t apr_os_file_put(apr_file_t **file, apr_os_file_t *thefile, apr_pool_t *cont)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-121" target="Documentation">apr_status_t apr_os_dir_put(apr_dir_t **dir, apr_os_dir_t *thedir, apr_pool_t *cont)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-122" target="Documentation">apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-123" target="Documentation">apr_status_t apr_os_sock_make(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-124" target="Documentation">apr_status_t apr_os_lock_put(apr_lock_t **lock, apr_os_lock_t *thelock, apr_pool_t *cont)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-125" target="Documentation">apr_status_t apr_os_imp_time_put(apr_time_t *aprtime, apr_os_imp_time_t **ostime, apr_pool_t *cont)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-126" target="Documentation">apr_status_t apr_os_exp_time_put(apr_exploded_time_t *aprtime, apr_os_exp_time_t **ostime, apr_pool_t *cont)</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-127" target="Documentation">apr_status_t apr_os_thread_put(apr_thread_t **thd, apr_os_thread_t *thethd,</a>
+<li><a href="APR_portability_Routines.html#apr_status_t-128" target="Documentation">apr_status_t apr_os_threadkey_put(apr_threadkey_t **key, apr_os_threadkey_t *thekey, apr_pool_t *cont)</a>
+</dir><a href="APR_signal_handling.html" target="Documentation"><b>APR signal handling</b></a><br>
+ <dir>
+<li><a href="APR_signal_handling.html#apr_signal_init(apr_pool_t" target="Documentation">apr_signal_init(apr_pool_t *pglobal)</a>
+<li><a href="APR_signal_handling.html#const-3" target="Documentation">const char *apr_signal_get_description(int signum)</a>
</dir><a href="APR_strings_library.html" target="Documentation"><b>APR strings library</b></a><br>
<dir>
-<li><a href="APR_strings_library.html#apr_status_t-14" target="Documentation">apr_status_t apr_tokenize_to_argv(const char *arg_str, char ***argv_out, apr_pool_t *token_context);</a>
-<li><a href="APR_strings_library.html#apr_strnatcasecmp" target="Documentation">int apr_strnatcasecmp(char const *a, char const *b)</a>
-<li><a href="APR_strings_library.html#apr_strnatcmp" target="Documentation">int apr_strnatcmp(char const *a, char const *b)</a>
-<li><a href="APR_strings_library.html#char" target="Documentation">char *apr_pstrdup(apr_pool_t *p, const char *s)</a>
-<li><a href="APR_strings_library.html#char-2" target="Documentation">char *apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n)</a>
-<li><a href="APR_strings_library.html#char-3" target="Documentation">char *apr_pstrcat(apr_pool_t *p, ...)</a>
-<li><a href="APR_strings_library.html#char-4" target="Documentation">char *apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap)</a>
-<li><a href="APR_strings_library.html#char-5" target="Documentation">char *apr_psprintf(apr_pool_t *p, const char *fmt, ...)</a>
-<li><a href="APR_strings_library.html#char-6" target="Documentation">char *apr_cpystrn(char *dst, const char *src, size_t dst_size)</a>
-<li><a href="APR_strings_library.html#char-7" target="Documentation">char *apr_collapse_spaces(char *dest, const char *src)</a>
+<li><a href="APR_strings_library.html#apr_status_t-136" target="Documentation">apr_status_t apr_tokenize_to_argv(const char *arg_str, char ***argv_out, apr_pool_t *token_context);</a>
+<li><a href="APR_strings_library.html#char-2" target="Documentation">char *apr_pstrdup(apr_pool_t *p, const char *s)</a>
+<li><a href="APR_strings_library.html#char-3" target="Documentation">char *apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n)</a>
+<li><a href="APR_strings_library.html#char-4" target="Documentation">char *apr_pstrcat(apr_pool_t *p, ...)</a>
+<li><a href="APR_strings_library.html#char-5" target="Documentation">char *apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap)</a>
+<li><a href="APR_strings_library.html#char-6" target="Documentation">char *apr_psprintf(apr_pool_t *p, const char *fmt, ...)</a>
+<li><a href="APR_strings_library.html#char-7" target="Documentation">char *apr_cpystrn(char *dst, const char *src, size_t dst_size)</a>
+<li><a href="APR_strings_library.html#char-8" target="Documentation">char *apr_collapse_spaces(char *dest, const char *src)</a>
+<li><a href="APR_strings_library.html#int-6" target="Documentation">int apr_strnatcmp(char const *a, char const *b)</a>
+<li><a href="APR_strings_library.html#int-7" target="Documentation">int apr_strnatcasecmp(char const *a, char const *b)</a>
+<li><a href="APR_strings_library.html#int-8" target="Documentation">int apr_snprintf(char *buf, size_t len, const char *format, ...)</a>
+<li><a href="APR_strings_library.html#int-9" target="Documentation">int apr_vsnprintf(char *buf, size_t len, const char *format, va_list ap)</a>
+</dir><a href="APR_user_id_services.html" target="Documentation"><b>APR user id services</b></a><br>
+ <dir>
+<li><a href="APR_user_id_services.html#apr_gid_t" target="Documentation">apr_gid_t </a>
+<li><a href="APR_user_id_services.html#apr_uid_t" target="Documentation">apr_uid_t </a>
</dir><a href="Dynamic_Object_Handling.html" target="Documentation"><b>Dynamic Object Handling</b></a><br>
<dir>
-<li><a href="Dynamic_Object_Handling.html#apr_dso_error" target="Documentation">const char *apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize)</a>
<li><a href="Dynamic_Object_Handling.html#apr_dso_handle_sym_t" target="Documentation">apr_dso_handle_sym_t </a>
<li><a href="Dynamic_Object_Handling.html#apr_dso_handle_t" target="Documentation">apr_dso_handle_t </a>
-<li><a href="Dynamic_Object_Handling.html#apr_dso_load" target="Documentation">apr_status_t apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx)</a>
-<li><a href="Dynamic_Object_Handling.html#apr_dso_sym" target="Documentation">apr_status_t apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname)</a>
-<li><a href="Dynamic_Object_Handling.html#apr_dso_unload" target="Documentation">apr_status_t apr_dso_unload(apr_dso_handle_t *handle)</a>
+<li><a href="Dynamic_Object_Handling.html#apr_status_t" target="Documentation">apr_status_t apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx)</a>
+<li><a href="Dynamic_Object_Handling.html#apr_status_t-2" target="Documentation">apr_status_t apr_dso_unload(apr_dso_handle_t *handle)</a>
+<li><a href="Dynamic_Object_Handling.html#apr_status_t-3" target="Documentation">apr_status_t apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, const char *symname)</a>
+<li><a href="Dynamic_Object_Handling.html#const" target="Documentation">const char *apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize)</a>
</dir><a href="Error_Codes.html" target="Documentation"><b>Error Codes</b></a><br>
<dir>
-<li><a href="Error_Codes.html#apr_canonical_error" target="Documentation">int apr_canonical_error(apr_status_t err)</a>
-<li><a href="Error_Codes.html#apr_strerror" target="Documentation">char *apr_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize)</a>
+<li><a href="Error_Codes.html#apr_status_t-4" target="Documentation">apr_status_t APR_FROM_OS_ERROR(os_err_type syserr)</a>
+<li><a href="Error_Codes.html#apr_status_t-5" target="Documentation">apr_status_t apr_get_os_error()</a>
+<li><a href="Error_Codes.html#apr_status_t-6" target="Documentation">apr_status_t apr_get_netos_error()</a>
+<li><a href="Error_Codes.html#char" target="Documentation">char *apr_strerror(apr_status_t statcode, char *buf, apr_size_t bufsize)</a>
+<li><a href="Error_Codes.html#int" target="Documentation">int APR_STATUS_IS_status(apr_status_t statcode)</a>
+<li><a href="Error_Codes.html#os_err_type" target="Documentation">os_err_type APR_TO_OS_ERROR(apr_status_t statcode)</a>
+<li><a href="Error_Codes.html#void" target="Documentation">void apr_set_os_error(apr_status_t statcode)</a>
</dir><a href="Fnmatch_functions.html" target="Documentation"><b>Fnmatch functions</b></a><br>
<dir>
-<li><a href="Fnmatch_functions.html#apr_status_t" target="Documentation">apr_status_t apr_fnmatch(const char *pattern, const char *strings, int flags)</a>
-<li><a href="Fnmatch_functions.html#int-2" target="Documentation">int apr_is_fnmatch(const char *pattern)</a>
+<li><a href="Fnmatch_functions.html#apr_status_t-47" target="Documentation">apr_status_t apr_fnmatch(const char *pattern, const char *strings, int flags)</a>
+<li><a href="Fnmatch_functions.html#int-3" target="Documentation">int apr_is_fnmatch(const char *pattern)</a>
</dir><a href="Hash_Tables.html" target="Documentation"><b>Hash Tables</b></a><br>
<dir>
<li><a href="Hash_Tables.html#apr_hash_index_t" target="Documentation">apr_hash_index_t </a>
<li><a href="Hash_Tables.html#apr_hash_index_t-2" target="Documentation">apr_hash_index_t *apr_hash_first(apr_hash_t *ht)</a>
<li><a href="Hash_Tables.html#apr_hash_index_t-3" target="Documentation">apr_hash_index_t *apr_hash_next(apr_hash_index_t *hi)</a>
<li><a href="Hash_Tables.html#apr_hash_t" target="Documentation">apr_hash_t </a>
-<li><a href="Hash_Tables.html#apr_hash_t-2" target="Documentation">apr_hash_t *apr_make_hash(apr_pool_t *pool)</a>
-<li><a href="Hash_Tables.html#void" target="Documentation">void apr_hash_set(apr_hash_t *ht, const void *key, apr_size_t klen, const void *val)</a>
-<li><a href="Hash_Tables.html#void-2" target="Documentation">void *apr_hash_get(apr_hash_t *ht, const void *key, apr_size_t klen)</a>
-<li><a href="Hash_Tables.html#void-3" target="Documentation">void apr_hash_this(apr_hash_index_t *hi, const void **key, apr_size_t *klen, void **val);</a>
+<li><a href="Hash_Tables.html#apr_hash_t-2" target="Documentation">apr_hash_t *apr_hash_make(apr_pool_t *pool)</a>
+<li><a href="Hash_Tables.html#void-3" target="Documentation">void apr_hash_set(apr_hash_t *ht, const void *key, apr_size_t klen, const void *val)</a>
+<li><a href="Hash_Tables.html#void-4" target="Documentation">void *apr_hash_get(apr_hash_t *ht, const void *key, apr_size_t klen)</a>
+<li><a href="Hash_Tables.html#void-5" target="Documentation">void apr_hash_this(apr_hash_index_t *hi, const void **key, apr_size_t *klen, void **val);</a>
+<li><a href="Hash_Tables.html#void-6" target="Documentation">void apr_hash_count(apr_hash_t *ht, apr_size_t *count);</a>
</dir><a href="Shared_Memory_library.html" target="Documentation"><b>Shared Memory library</b></a><br>
<dir>
-<li><a href="Shared_Memory_library.html#apr_get_shm_name" target="Documentation">apr_status_t apr_get_shm_name(apr_shmem_t *c, apr_shm_name_t **name)</a>
-<li><a href="Shared_Memory_library.html#apr_open_shmem" target="Documentation">apr_status_t apr_open_shmem(apr_shmem_t *c)</a>
-<li><a href="Shared_Memory_library.html#apr_set_shm_name" target="Documentation">apr_status_t apr_set_shm_name(apr_shmem_t *c, apr_shm_name_t *name)</a>
-<li><a href="Shared_Memory_library.html#apr_shm_avail" target="Documentation">apr_status_t apr_shm_avail(apr_shmem_t *c, apr_size_t *avail)</a>
-<li><a href="Shared_Memory_library.html#apr_shm_calloc" target="Documentation">void *apr_shm_calloc(apr_shmem_t *shared, apr_size_t size)</a>
-<li><a href="Shared_Memory_library.html#apr_shm_destroy" target="Documentation">apr_status_t apr_shm_destroy(apr_shmem_t *m)</a>
-<li><a href="Shared_Memory_library.html#apr_shm_free" target="Documentation">apr_status_t apr_shm_free(apr_shmem_t *shared, void *entity)</a>
-<li><a href="Shared_Memory_library.html#apr_shm_init" target="Documentation">apr_status_t apr_shm_init(apr_shmem_t **m, apr_size_t reqsize, const char *file, apr_pool_t *cont)</a>
-<li><a href="Shared_Memory_library.html#apr_shm_malloc" target="Documentation">void *apr_shm_malloc(apr_shmem_t *c, apr_size_t reqsize)</a>
+<li><a href="Shared_Memory_library.html#apr_status_t-129" target="Documentation">apr_status_t apr_shm_init(apr_shmem_t **m, apr_size_t reqsize, const char *file, apr_pool_t *cont)</a>
+<li><a href="Shared_Memory_library.html#apr_status_t-130" target="Documentation">apr_status_t apr_shm_destroy(apr_shmem_t *m)</a>
+<li><a href="Shared_Memory_library.html#apr_status_t-131" target="Documentation">apr_status_t apr_shm_free(apr_shmem_t *shared, void *entity)</a>
+<li><a href="Shared_Memory_library.html#apr_status_t-132" target="Documentation">apr_status_t apr_shm_name_get(apr_shmem_t *c, apr_shm_name_t **name)</a>
+<li><a href="Shared_Memory_library.html#apr_status_t-133" target="Documentation">apr_status_t apr_shm_name_set(apr_shmem_t *c, apr_shm_name_t *name)</a>
+<li><a href="Shared_Memory_library.html#apr_status_t-134" target="Documentation">apr_status_t apr_shm_open(apr_shmem_t *c)</a>
+<li><a href="Shared_Memory_library.html#apr_status_t-135" target="Documentation">apr_status_t apr_shm_avail(apr_shmem_t *c, apr_size_t *avail)</a>
+<li><a href="Shared_Memory_library.html#void-15" target="Documentation">void *apr_shm_malloc(apr_shmem_t *c, apr_size_t reqsize)</a>
+<li><a href="Shared_Memory_library.html#void-16" target="Documentation">void *apr_shm_calloc(apr_shmem_t *shared, apr_size_t size)</a>
</dir>
<a href="to-do.html" target="Documentation"><b>To-Do List</b></a><br>
</nobr>
1.4 +3 -1 apr-site/docs/packages.html
Index: packages.html
===================================================================
RCS file: /home/cvs/apr-site/docs/packages.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- packages.html 2000/12/04 18:14:05 1.3
+++ packages.html 2001/02/11 02:54:59 1.4
@@ -25,7 +25,9 @@
<a href = "APR_lock_library.html">APR lock library</a><br>
<a href = "APR_memory_allocation.html">APR memory allocation</a><br>
<a href = "APR_portability_Routines.html">APR portability Routines</a><br>
+<a href = "APR_signal_handling.html">APR signal handling</a><br>
<a href = "APR_strings_library.html">APR strings library</a><br>
+<a href = "APR_user_id_services.html">APR user id services</a><br>
<a href = "Dynamic_Object_Handling.html">Dynamic Object Handling</a><br>
<a href = "Error_Codes.html">Error Codes</a><br>
<a href = "Fnmatch_functions.html">Fnmatch functions</a><br>
@@ -36,7 +38,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>
1.4 +1 -1 apr-site/docs/to-do.html
Index: to-do.html
===================================================================
RCS file: /home/cvs/apr-site/docs/to-do.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -b -w -u -r1.3 -r1.4
--- to-do.html 2000/12/04 18:14:05 1.3
+++ to-do.html 2001/02/11 02:54:59 1.4
@@ -11,7 +11,7 @@
<hr size=4>
© 2000 [Apache Software Foundation]<br>
Generated by <a href="http://scandoc.sourceforge.net/"><b>ScanDoc 0.12</b></a><br>
- Last Updated: Mon Dec 4 10:10:38 2000
+ Last Updated: Sat Feb 10 18:42:17 2001
<br>
</body>
</html>