%PDF- %PDF-
Direktori : /proc/self/root/proc/self/root/usr/share/nagios/html/docs/ |
Current File : //proc/self/root/proc/self/root/usr/share/nagios/html/docs/nspath_8h.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>Nagios: nspath.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { searchBox.OnSelectItem(0); }); </script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Nagios  <span id="projectnumber">4.4.3</span> </div> <div id="projectbrief">Dev docs for Nagios core and neb-module hackers</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_97aefd0d527b934f1d99a682da8fe6a9.html">lib</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">nspath.h File Reference</div> </div> </div><!--header--> <div class="contents"> <p>path handling functions <a href="#details">More...</a></p> <div class="textblock"><code>#include <errno.h></code><br/> <code>#include <sys/stat.h></code><br/> <code>#include "snprintf.h"</code><br/> </div> <p><a href="nspath_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="memitem:a5345faf70185d3be4d5c1cd46dbc314a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5345faf70185d3be4d5c1cd46dbc314a"></a> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="nspath_8h.html#a5345faf70185d3be4d5c1cd46dbc314a">NSPATH_MKDIR_SKIP_LAST</a>   (1 << 0)</td></tr> <tr class="memdesc:a5345faf70185d3be4d5c1cd46dbc314a"><td class="mdescLeft"> </td><td class="mdescRight">Don't mkdir() last element of path when calling <a class="el" href="nspath_8h.html#a1afa9d79f14a4b33413f5dbdaa12e262" title="Recursively create a directory, just like mkdir_p would. ">nspath_mkdir_p()</a> <br/></td></tr> <tr class="separator:a5345faf70185d3be4d5c1cd46dbc314a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7874661cba4d6ffb5457eed16d0288a4"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="nspath_8h.html#a7874661cba4d6ffb5457eed16d0288a4">nspath_normalize</a> (const char *orig_path)</td></tr> <tr class="memdesc:a7874661cba4d6ffb5457eed16d0288a4"><td class="mdescLeft"> </td><td class="mdescRight">Normalize a path By "normalize", we mean that we convert dot-slash and dot-dot-slash embedded components into a legible continuous string of characters. <a href="#a7874661cba4d6ffb5457eed16d0288a4">More...</a><br/></td></tr> <tr class="separator:a7874661cba4d6ffb5457eed16d0288a4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ade9ccb53fdbcc123b9468603b1ff2919"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="nspath_8h.html#ade9ccb53fdbcc123b9468603b1ff2919">nspath_absolute</a> (const char *rel_path, const char *base)</td></tr> <tr class="memdesc:ade9ccb53fdbcc123b9468603b1ff2919"><td class="mdescLeft"> </td><td class="mdescRight">Make the "base"-relative path "rel_path" absolute. <a href="#ade9ccb53fdbcc123b9468603b1ff2919">More...</a><br/></td></tr> <tr class="separator:ade9ccb53fdbcc123b9468603b1ff2919"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aba277ee8aa56daaf0512aa278b68400c"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="nspath_8h.html#aba277ee8aa56daaf0512aa278b68400c">nspath_real</a> (const char *rel_path, const char *base)</td></tr> <tr class="memdesc:aba277ee8aa56daaf0512aa278b68400c"><td class="mdescLeft"> </td><td class="mdescRight">Canonicalize the "base"-relative path "rel_path". <a href="#aba277ee8aa56daaf0512aa278b68400c">More...</a><br/></td></tr> <tr class="separator:aba277ee8aa56daaf0512aa278b68400c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a33faaeee14f2933798ec177d9d9ccc7b"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="nspath_8h.html#a33faaeee14f2933798ec177d9d9ccc7b">nspath_absolute_dirname</a> (const char *path, const char *base)</td></tr> <tr class="memdesc:a33faaeee14f2933798ec177d9d9ccc7b"><td class="mdescLeft"> </td><td class="mdescRight">Get absolute dirname of "path", relative to "base". <a href="#a33faaeee14f2933798ec177d9d9ccc7b">More...</a><br/></td></tr> <tr class="separator:a33faaeee14f2933798ec177d9d9ccc7b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1afa9d79f14a4b33413f5dbdaa12e262"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="nspath_8h.html#a1afa9d79f14a4b33413f5dbdaa12e262">nspath_mkdir_p</a> (const char *path, mode_t mode, int options)</td></tr> <tr class="memdesc:a1afa9d79f14a4b33413f5dbdaa12e262"><td class="mdescLeft"> </td><td class="mdescRight">Recursively create a directory, just like mkdir_p would. <a href="#a1afa9d79f14a4b33413f5dbdaa12e262">More...</a><br/></td></tr> <tr class="separator:a1afa9d79f14a4b33413f5dbdaa12e262"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>path handling functions </p> <p>This library handles path normalization and resolution. It's nifty if you want to turn relative paths into absolute ones, or if you want to make insane ones sane, but without chdir()'ing your way around the filesystem. </p> </div><h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="ade9ccb53fdbcc123b9468603b1ff2919"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* nspath_absolute </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>rel_path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>base</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Make the "base"-relative path "rel_path" absolute. </p> <p>Turns the relative path "rel_path" into an absolute path and resolves it as if we were currently in "base". If "base" is NULL, the current working directory is used. If "base" is not null, it should be an absolute path for the result to make sense.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">rel_path</td><td>The relative path to convert </td></tr> <tr><td class="paramname">base</td><td>The base directory (if NULL, we use current working dir) </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>A newly allocated string containing the absolute path </dd></dl> </div> </div> <a class="anchor" id="a33faaeee14f2933798ec177d9d9ccc7b"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* nspath_absolute_dirname </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">const char * </td> <td class="paramname"><em>base</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Get absolute dirname of "path", relative to "base". </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">path</td><td>Full path to target object (file or subdir) </td></tr> <tr><td class="paramname">base</td><td>The base directory (if NULL, we use current working dir) </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>NULL on errors, allocated absolute directory name on success </dd></dl> </div> </div> <a class="anchor" id="a1afa9d79f14a4b33413f5dbdaa12e262"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int nspath_mkdir_p </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">mode_t </td> <td class="paramname"><em>mode</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>options</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Recursively create a directory, just like mkdir_p would. </p> <dl class="section note"><dt>Note</dt><dd>This function <em>will</em> taint errno with ENOENT if any path component has to be created. </dd> <dd> If "path" has a trailing slash, NSPATH_MKDIR_SKIP_LAST won't have any effect. That's considered a feature, since the option is designed so one can send a file-path to the function and have it create the directory structure for it. </dd></dl> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">path</td><td>Path to create, in normalized form </td></tr> <tr><td class="paramname">mode</td><td>Filemode (same as mkdir() takes) </td></tr> <tr><td class="paramname">options</td><td>Options flag. See NSPATH_MKDIR_* for or-able options </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, -1 on errors and errno will hold error code from either stat() or mkdir(). </dd></dl> </div> </div> <a class="anchor" id="a7874661cba4d6ffb5457eed16d0288a4"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* nspath_normalize </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>orig_path</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Normalize a path By "normalize", we mean that we convert dot-slash and dot-dot-slash embedded components into a legible continuous string of characters. </p> <p>Leading and trailing slashes are kept exactly as they are in input, but with sequences of slashes reduced to a single one.</p> <p>"foo/bar/.././lala.txt" becomes "foo/lala.txt" "../../../../bar/../foo/" becomes "/foo/" "////foo////././bar" becomes "/foo/bar" </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">orig_path</td><td>The path to normalize </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>A newly allocated string containing the normalized path </dd></dl> </div> </div> <a class="anchor" id="aba277ee8aa56daaf0512aa278b68400c"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* nspath_real </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>rel_path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>base</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Canonicalize the "base"-relative path "rel_path". </p> <p>errno gets properly set in case of errors. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">rel_path</td><td>The path to transform </td></tr> <tr><td class="paramname">base</td><td>The base we should operate relative to </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>Newly allocated canonical path on success, NULL on errors </dd></dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.5 </small></address> </body> </html>