<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Apache Portable Runtime: Filepath Manipulation Functions</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.4.7 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul></div> <h1>Filepath Manipulation Functions<br> <small> [<a class="el" href="group__apr__file__info.html">File Information</a>]</small> </h1><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g80c88512c8ed7100be9967b18c730a9d">APR_FILEPATH_NOTABOVEROOT</a> 0x01</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g86ce9511273c3cc5d29f02775ac82e20">APR_FILEPATH_SECUREROOTTEST</a> 0x02</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g390cd9d50c245409d984413c553a3dbe">APR_FILEPATH_SECUREROOT</a> 0x03</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#gf5a1eca2dd9f6ba61c1589c129764d45">APR_FILEPATH_NOTRELATIVE</a> 0x04</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#gcb587fe08245ead4901e070b9ecf2888">APR_FILEPATH_NOTABSOLUTE</a> 0x08</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#gfd9b4ae21b6c0fc4b7cf078f4d4d11e7">APR_FILEPATH_NATIVE</a> 0x10</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#gac78e3365a5870403cd0ce7b255046b7">APR_FILEPATH_TRUENAME</a> 0x20</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g01f0d4e736b270d38844fb8b5bff808b">APR_FILEPATH_ENCODING_UNKNOWN</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#gb8aa92fc77a27d0dd3aaecbbeccf7c83">APR_FILEPATH_ENCODING_LOCALE</a> 1</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#gbeea9ad230214067f69d59c883c0e3f1">APR_FILEPATH_ENCODING_UTF8</a> 2</td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g2d052d2a86cdc10a21c7156fbe2c646f">apr_filepath_root</a> (const char **rootpath, const char **filepath, apr_int32_t flags, <a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g32d793a1657645c09ec8dfb4b6fae3b5">apr_filepath_merge</a> (char **newpath, const char *rootpath, const char *addpath, apr_int32_t flags, <a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#gc27132cd4e0ad10360598212be8ba564">apr_filepath_list_split</a> (<a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> **pathelts, const char *liststr, <a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g15f19c85d49fa807306e0b33e1d3166f">apr_filepath_list_merge</a> (char **liststr, <a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> *pathelts, <a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g953916102e7c1314356158e2a85a7763">apr_filepath_get</a> (char **path, apr_int32_t flags, <a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#gdc7bd453b140f16e9e610820037c97c8">apr_filepath_set</a> (const char *path, <a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__apr__filepath.html#g8c51dabf1b5d8a8a4dbc799c382f0726">apr_filepath_encoding</a> (int *style, <a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> *p)</td></tr> </table> <hr><h2>Define Documentation</h2> <a class="anchor" name="gb8aa92fc77a27d0dd3aaecbbeccf7c83"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_ENCODING_LOCALE" ref="gb8aa92fc77a27d0dd3aaecbbeccf7c83" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_ENCODING_LOCALE 1 </td> </tr> </table> </div> <div class="memdoc"> <p> The FilePath character encoding is locale-dependent </div> </div><p> <a class="anchor" name="g01f0d4e736b270d38844fb8b5bff808b"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_ENCODING_UNKNOWN" ref="g01f0d4e736b270d38844fb8b5bff808b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_ENCODING_UNKNOWN 0 </td> </tr> </table> </div> <div class="memdoc"> <p> The FilePath character encoding is unknown </div> </div><p> <a class="anchor" name="gbeea9ad230214067f69d59c883c0e3f1"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_ENCODING_UTF8" ref="gbeea9ad230214067f69d59c883c0e3f1" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_ENCODING_UTF8 2 </td> </tr> </table> </div> <div class="memdoc"> <p> The FilePath character encoding is UTF-8 </div> </div><p> <a class="anchor" name="gfd9b4ae21b6c0fc4b7cf078f4d4d11e7"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_NATIVE" ref="gfd9b4ae21b6c0fc4b7cf078f4d4d11e7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_NATIVE 0x10 </td> </tr> </table> </div> <div class="memdoc"> <p> Return the file system's native path format (e.g. path delimiters of ':' on MacOS9, '\' on Win32, etc.) </div> </div><p> <a class="anchor" name="g80c88512c8ed7100be9967b18c730a9d"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_NOTABOVEROOT" ref="g80c88512c8ed7100be9967b18c730a9d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_NOTABOVEROOT 0x01 </td> </tr> </table> </div> <div class="memdoc"> <p> Cause apr_filepath_merge to fail if addpath is above rootpath </div> </div><p> <a class="anchor" name="gcb587fe08245ead4901e070b9ecf2888"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_NOTABSOLUTE" ref="gcb587fe08245ead4901e070b9ecf2888" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_NOTABSOLUTE 0x08 </td> </tr> </table> </div> <div class="memdoc"> <p> Fail apr_filepath_merge if the merged path is absolute </div> </div><p> <a class="anchor" name="gf5a1eca2dd9f6ba61c1589c129764d45"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_NOTRELATIVE" ref="gf5a1eca2dd9f6ba61c1589c129764d45" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_NOTRELATIVE 0x04 </td> </tr> </table> </div> <div class="memdoc"> <p> Fail apr_filepath_merge if the merged path is relative </div> </div><p> <a class="anchor" name="g390cd9d50c245409d984413c553a3dbe"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_SECUREROOT" ref="g390cd9d50c245409d984413c553a3dbe" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_SECUREROOT 0x03 </td> </tr> </table> </div> <div class="memdoc"> <p> Cause apr_filepath_merge to fail if addpath is above rootpath, even given a rootpath /foo/bar and an addpath ../bar/bash </div> </div><p> <a class="anchor" name="g86ce9511273c3cc5d29f02775ac82e20"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_SECUREROOTTEST" ref="g86ce9511273c3cc5d29f02775ac82e20" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_SECUREROOTTEST 0x02 </td> </tr> </table> </div> <div class="memdoc"> <p> internal: Only meaningful with APR_FILEPATH_NOTABOVEROOT </div> </div><p> <a class="anchor" name="gac78e3365a5870403cd0ce7b255046b7"></a><!-- doxytag: member="apr_file_info.h::APR_FILEPATH_TRUENAME" ref="gac78e3365a5870403cd0ce7b255046b7" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define APR_FILEPATH_TRUENAME 0x20 </td> </tr> </table> </div> <div class="memdoc"> <p> Resolve the true case of existing directories and file elements of addpath, (resolving any aliases on Win32) and append a proper trailing slash if a directory </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="g8c51dabf1b5d8a8a4dbc799c382f0726"></a><!-- doxytag: member="apr_file_info.h::apr_filepath_encoding" ref="g8c51dabf1b5d8a8a4dbc799c382f0726" args="(int *style, apr_pool_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apr_filepath_encoding </td> <td>(</td> <td class="paramtype">int * </td> <td class="paramname"> <em>style</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> * </td> <td class="paramname"> <em>p</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Determine the encoding used internally by the FilePath functions <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>style</em> </td><td>points to a variable which receives the encoding style flag </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>the pool to allocate any working storage </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></dt><dd>Use <code>apr_os_locale_encoding</code> and/or <code>apr_os_default_encoding</code> to get the name of the path encoding if it's not UTF-8. </dd></dl> </div> </div><p> <a class="anchor" name="g953916102e7c1314356158e2a85a7763"></a><!-- doxytag: member="apr_file_info.h::apr_filepath_get" ref="g953916102e7c1314356158e2a85a7763" args="(char **path, apr_int32_t flags, apr_pool_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apr_filepath_get </td> <td>(</td> <td class="paramtype">char ** </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_int32_t </td> <td class="paramname"> <em>flags</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> * </td> <td class="paramname"> <em>p</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Return the default file path (for relative file names) <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>the default path string returned </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>optional flag APR_FILEPATH_NATIVE to retrieve the default file path in os-native format. </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>the pool to allocate the default path string from </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="g15f19c85d49fa807306e0b33e1d3166f"></a><!-- doxytag: member="apr_file_info.h::apr_filepath_list_merge" ref="g15f19c85d49fa807306e0b33e1d3166f" args="(char **liststr, apr_array_header_t *pathelts, apr_pool_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apr_filepath_list_merge </td> <td>(</td> <td class="paramtype">char ** </td> <td class="paramname"> <em>liststr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> * </td> <td class="paramname"> <em>pathelts</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> * </td> <td class="paramname"> <em>p</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Merge a list of search path components into a single search path <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>liststr</em> </td><td>the returned search path; may be NULL if <em>pathelts</em> is empty </td></tr> <tr><td valign="top"></td><td valign="top"><em>pathelts</em> </td><td>the components of the search path </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>the pool to allocate the search path from </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></dt><dd>emtpy strings in the source array are ignored. <p> the path separator in <em>liststr</em> is system specific; e.g., ':' on Unix, ';' on Windows, etc. </dd></dl> </div> </div><p> <a class="anchor" name="gc27132cd4e0ad10360598212be8ba564"></a><!-- doxytag: member="apr_file_info.h::apr_filepath_list_split" ref="gc27132cd4e0ad10360598212be8ba564" args="(apr_array_header_t **pathelts, const char *liststr, apr_pool_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apr_filepath_list_split </td> <td>(</td> <td class="paramtype"><a class="el" href="structapr__array__header__t.html">apr_array_header_t</a> ** </td> <td class="paramname"> <em>pathelts</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>liststr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> * </td> <td class="paramname"> <em>p</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Split a search path into separate components <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>pathelts</em> </td><td>the returned components of the search path </td></tr> <tr><td valign="top"></td><td valign="top"><em>liststr</em> </td><td>the search path (e.g., <code>getenv("PATH")</code>) </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>the pool to allocate the array and path components from </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></dt><dd>empty path componenta do not become part of <em>pathelts</em>. <p> the path separator in <em>liststr</em> is system specific; e.g., ':' on Unix, ';' on Windows, etc. </dd></dl> </div> </div><p> <a class="anchor" name="g32d793a1657645c09ec8dfb4b6fae3b5"></a><!-- doxytag: member="apr_file_info.h::apr_filepath_merge" ref="g32d793a1657645c09ec8dfb4b6fae3b5" args="(char **newpath, const char *rootpath, const char *addpath, apr_int32_t flags, apr_pool_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apr_filepath_merge </td> <td>(</td> <td class="paramtype">char ** </td> <td class="paramname"> <em>newpath</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>rootpath</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>addpath</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_int32_t </td> <td class="paramname"> <em>flags</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> * </td> <td class="paramname"> <em>p</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Merge additional file path onto the previously processed rootpath <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>newpath</em> </td><td>the merged paths returned </td></tr> <tr><td valign="top"></td><td valign="top"><em>rootpath</em> </td><td>the root file path (NULL uses the current working path) </td></tr> <tr><td valign="top"></td><td valign="top"><em>addpath</em> </td><td>the path to add to the root path </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>the desired APR_FILEPATH_ rules to apply when merging </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>the pool to allocate the new path string from </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></dt><dd>if the flag APR_FILEPATH_TRUENAME is given, and the addpath contains wildcard characters ('*', '?') on platforms that don't support such characters within filenames, the paths will be merged, but the result code will be APR_EPATHWILD, and all further segments will not reflect the true filenames including the wildcard and following segments. </dd></dl> </div> </div><p> <a class="anchor" name="g2d052d2a86cdc10a21c7156fbe2c646f"></a><!-- doxytag: member="apr_file_info.h::apr_filepath_root" ref="g2d052d2a86cdc10a21c7156fbe2c646f" args="(const char **rootpath, const char **filepath, apr_int32_t flags, apr_pool_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apr_filepath_root </td> <td>(</td> <td class="paramtype">const char ** </td> <td class="paramname"> <em>rootpath</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char ** </td> <td class="paramname"> <em>filepath</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">apr_int32_t </td> <td class="paramname"> <em>flags</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> * </td> <td class="paramname"> <em>p</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Extract the rootpath from the given filepath <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>rootpath</em> </td><td>the root file path returned with APR_SUCCESS or APR_EINCOMPLETE </td></tr> <tr><td valign="top"></td><td valign="top"><em>filepath</em> </td><td>the pathname to parse for its root component </td></tr> <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>the desired rules to apply, from <pre> APR_FILEPATH_NATIVE Use native path seperators (e.g. '\' on Win32) APR_FILEPATH_TRUENAME Tests that the root exists, and makes it proper </pre> </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>the pool to allocate the new path string from </td></tr> </table> </dl> <dl compact><dt><b>Remarks:</b></dt><dd>on return, filepath points to the first non-root character in the given filepath. In the simplest example, given a filepath of "/foo", returns the rootpath of "/" and filepath points at "foo". This is far more complex on other platforms, which will canonicalize the root form to a consistant format, given the APR_FILEPATH_TRUENAME flag, and also test for the validity of that root (e.g., that a drive d:/ or network share //machine/foovol/). The function returns APR_ERELATIVE if filepath isn't rooted (an error), APR_EINCOMPLETE if the root path is ambigious (but potentially legitimate, e.g. "/" on Windows is incomplete because it doesn't specify the drive letter), or APR_EBADPATH if the root is simply invalid. APR_SUCCESS is returned if filepath is an absolute path. </dd></dl> </div> </div><p> <a class="anchor" name="gdc7bd453b140f16e9e610820037c97c8"></a><!-- doxytag: member="apr_file_info.h::apr_filepath_set" ref="gdc7bd453b140f16e9e610820037c97c8" args="(const char *path, apr_pool_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__apr__errno.html#g4cf2ddae3efce70c508ac7fefc1c47f7">apr_status_t</a> apr_filepath_set </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__apr__pools.html#g06f17a7732f2d04d8ce7010fbb057a8b">apr_pool_t</a> * </td> <td class="paramname"> <em>p</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Set the default file path (for relative file names) <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>the default path returned </td></tr> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>the pool to allocate any working storage </td></tr> </table> </dl> </div> </div><p> <hr size="1"><address style="align: right;"><small>Generated on Tue May 31 12:20:26 2011 for Apache Portable Runtime by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address> </body> </html>