Sophie

Sophie

distrib > Mandriva > 2011.0 > x86_64 > by-pkgid > e4e5aca55b6d7244e6bae95bf4fde3ca > files > 238

lib64edelib-devel-2.0-1.x86_64.rpm

<!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"/>
<title>edelib: File Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />



</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">edelib
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceedelib.html">edelib</a>      </li>
      <li class="navelem"><a class="el" href="classedelib_1_1File.html">File</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#related">Related Functions</a>  </div>
  <div class="headertitle">
<div class="title">File Class Reference</div>  </div>
</div><!--header-->
<div class="contents">
<!-- doxytag: class="edelib::File" -->
<p>A system file io stream.  
 <a href="classedelib_1_1File.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="File_8h_source.html">edelib/File.h</a>&gt;</code></p>

<p><a href="classedelib_1_1File-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#aa2399b233765f85aead662a2f1e67c4b">File</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a4685afb281dd35a740472d0f675a3d93">File</a> (const char *n, int m)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a241d694b0e799c0579a023e76cd97f18">~File</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a7dad76940b21234d7007702440c353f3">open</a> (const char *fname, int mode=<a class="el" href="namespaceedelib.html#af88b067682dd1949588373ef65b159fbac15cbb3a5cad099d083c457ddf43c666">FIO_READ</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a67b72387b99fb35706b11eeba7070bc4">close</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#ada0f8ac2b219cc8a90659c3be9e3bf92">name</a> (void) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a06a64a6aea711ab80ce714021194b83c">eof</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#af5978fab9fa6dd4ced1c3a8ab1251f7b">getch</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a09ad341b9468c012b7efb85189f62aeb">read</a> (void *buff, int typesz, int buffsz)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a5636b1d07025d602f1544396db4c5b56">readline</a> (char *buff, int buffsz)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a42e84005c742ad9bb5ce5733542094cc">putch</a> (int c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#ae86cc6aa7c576ecd4eb1a29a0c090aec">write</a> (const void *buff, int typesz, int buffsz)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a44c2f9df64934fbf264a699efbf838b9">write</a> (const char *buff, unsigned int buffsz)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#acbda59d60a38b48772e62e388b6d2420">write</a> (const char *buff)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a55f3d956bb2ba20b5059e9e25484a47f">printf</a> (const char *fmt,...)</td></tr>
<tr><td colspan="2"><h2><a name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p>(Note that these are not member functions.) </p>
</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a08154d2484b918ec2952f55843b05c88">file_exists</a> (const char *<a class="el" href="classedelib_1_1File.html#ada0f8ac2b219cc8a90659c3be9e3bf92">name</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#aba2158a09bd27f9e8b84fa44ce462939">file_readable</a> (const char *<a class="el" href="classedelib_1_1File.html#ada0f8ac2b219cc8a90659c3be9e3bf92">name</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a01375d48cd88a9d2e54e4a4aa37dc563">file_writeable</a> (const char *<a class="el" href="classedelib_1_1File.html#ada0f8ac2b219cc8a90659c3be9e3bf92">name</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#ad184cc1a2bc299e0e0699b147f51477a">file_executable</a> (const char *<a class="el" href="classedelib_1_1File.html#ada0f8ac2b219cc8a90659c3be9e3bf92">name</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a085a557b72965124eb8b8c3065885ac7">file_remove</a> (const char *<a class="el" href="classedelib_1_1File.html#ada0f8ac2b219cc8a90659c3be9e3bf92">name</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#a22d18d1f8b422ab933e02178d820ab52">file_copy</a> (const char *src, const char *dest, bool exact=false)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#ad388ef22307c342e057b7b3f648bd4e8">file_rename</a> (const char *from, const char *to)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classedelib_1_1String.html">String</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1File.html#ac1e64c0ef91d7579d8d86c8a834ce7be">file_path</a> (const char *fname, bool skip_link=false)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>A system file io stream. </p>
<p><a class="el" href="classedelib_1_1File.html" title="A system file io stream.">File</a> is portable wrapper for various functions for reading and writing files. Also brings automatic descriptor closing or possible another file openning during object lifetime.</p>
<p>Here is a sample of common usage: </p>
<div class="fragment"><pre class="fragment">  <a class="code" href="classedelib_1_1File.html#aa2399b233765f85aead662a2f1e67c4b">File</a> f(<span class="stringliteral">&quot;foo.txt&quot;</span>);
  <span class="keywordflow">if</span>(!f)
        <a class="code" href="classedelib_1_1File.html#a55f3d956bb2ba20b5059e9e25484a47f">printf</a>(<span class="stringliteral">&quot;can&#39;t open %s\n&quot;</span>, f.name());
  <span class="keywordflow">while</span>(!f.eof())
        <a class="code" href="classedelib_1_1File.html#a55f3d956bb2ba20b5059e9e25484a47f">printf</a>(<span class="stringliteral">&quot;%s&quot;</span>, f.readline());
  f.close(); <span class="comment">// optional</span>
</pre></div><dl class="todo"><dt><b><a class="el" href="todo.html#_todo000015">Todo:</a></b></dt><dd>error checks during stream read/write (ferror) </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="aa2399b233765f85aead662a2f1e67c4b"></a><!-- doxytag: member="edelib::File::File" ref="aa2399b233765f85aead662a2f1e67c4b" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classedelib_1_1File.html">File</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Creates empty file object. </p>

</div>
</div>
<a class="anchor" id="a4685afb281dd35a740472d0f675a3d93"></a><!-- doxytag: member="edelib::File::File" ref="a4685afb281dd35a740472d0f675a3d93" args="(const char *n, int m)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classedelib_1_1File.html">File</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>m</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Open stream for reading or writing</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">n</td><td>file name to open </td></tr>
    <tr><td class="paramname">m</td><td>how to open file; default is read-only </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a241d694b0e799c0579a023e76cd97f18"></a><!-- doxytag: member="edelib::File::~File" ref="a241d694b0e799c0579a023e76cd97f18" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">~<a class="el" href="classedelib_1_1File.html">File</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Cleans reserved data, and closes all possible opened descriptors. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a67b72387b99fb35706b11eeba7070bc4"></a><!-- doxytag: member="edelib::File::close" ref="a67b72387b99fb35706b11eeba7070bc4" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classedelib_1_1File.html#a67b72387b99fb35706b11eeba7070bc4">close</a> </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Close current open descriptor, and clean reserved data. If is not opened, function will do nothing, except to clean reserved data if needed. </p>

</div>
</div>
<a class="anchor" id="a06a64a6aea711ab80ce714021194b83c"></a><!-- doxytag: member="edelib::File::eof" ref="a06a64a6aea711ab80ce714021194b83c" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#a06a64a6aea711ab80ce714021194b83c">eof</a> </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Checks if end of file reached.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if end of file is reached. </dd></dl>

</div>
</div>
<a class="anchor" id="af5978fab9fa6dd4ced1c3a8ab1251f7b"></a><!-- doxytag: member="edelib::File::getch" ref="af5978fab9fa6dd4ced1c3a8ab1251f7b" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1File.html#af5978fab9fa6dd4ced1c3a8ab1251f7b">getch</a> </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Read an character from stream.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>character or EOF. </dd></dl>

</div>
</div>
<a class="anchor" id="ada0f8ac2b219cc8a90659c3be9e3bf92"></a><!-- doxytag: member="edelib::File::name" ref="ada0f8ac2b219cc8a90659c3be9e3bf92" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* <a class="el" href="classedelib_1_1File.html#ada0f8ac2b219cc8a90659c3be9e3bf92">name</a> </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns name of curent opened stream. If is called <a class="el" href="classedelib_1_1File.html#a67b72387b99fb35706b11eeba7070bc4">close()</a> before, it will return NULL.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>name of curent opened stream </dd></dl>

</div>
</div>
<a class="anchor" id="a7dad76940b21234d7007702440c353f3"></a><!-- doxytag: member="edelib::File::open" ref="a7dad76940b21234d7007702440c353f3" args="(const char *fname, int mode=FIO_READ)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#a7dad76940b21234d7007702440c353f3">open</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>mode</em> = <code><a class="el" href="namespaceedelib.html#af88b067682dd1949588373ef65b159fbac15cbb3a5cad099d083c457ddf43c666">FIO_READ</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Open file in given mode</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">fname</td><td>file name to open </td></tr>
    <tr><td class="paramname">mode</td><td>how to open file; default is read-only </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a55f3d956bb2ba20b5059e9e25484a47f"></a><!-- doxytag: member="edelib::File::printf" ref="a55f3d956bb2ba20b5059e9e25484a47f" args="(const char *fmt,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1File.html#a55f3d956bb2ba20b5059e9e25484a47f">printf</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fmt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>printf function on the stream.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of writen data </dd></dl>

</div>
</div>
<a class="anchor" id="a42e84005c742ad9bb5ce5733542094cc"></a><!-- doxytag: member="edelib::File::putch" ref="a42e84005c742ad9bb5ce5733542094cc" args="(int c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1File.html#a42e84005c742ad9bb5ce5733542094cc">putch</a> </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>c</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Write character to the stream.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>a character written, or EOF in case of error. </dd></dl>

</div>
</div>
<a class="anchor" id="a09ad341b9468c012b7efb85189f62aeb"></a><!-- doxytag: member="edelib::File::read" ref="a09ad341b9468c012b7efb85189f62aeb" args="(void *buff, int typesz, int buffsz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1File.html#a09ad341b9468c012b7efb85189f62aeb">read</a> </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>typesz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>buffsz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Read data from the stream, with specified size.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of read data </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buff</td><td>where to place data </td></tr>
    <tr><td class="paramname">typesz</td><td>size of each item </td></tr>
    <tr><td class="paramname">buffsz</td><td>size of buffer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a5636b1d07025d602f1544396db4c5b56"></a><!-- doxytag: member="edelib::File::readline" ref="a5636b1d07025d602f1544396db4c5b56" args="(char *buff, int buffsz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1File.html#a5636b1d07025d602f1544396db4c5b56">readline</a> </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>buffsz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Read line from stream in specified buffer, with given size. If buffer size is less than read line, only given size will be filled. A '\0' is stored as last character in buffer. It will return EOF if end of stream is reached.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000016">Todo:</a></b></dt><dd>it does not return 1 when line contains only '\n' char. Should return?</dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of readed data or EOF for end. </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buff</td><td>where to place content </td></tr>
    <tr><td class="paramname">buffsz</td><td>size of buffer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae86cc6aa7c576ecd4eb1a29a0c090aec"></a><!-- doxytag: member="edelib::File::write" ref="ae86cc6aa7c576ecd4eb1a29a0c090aec" args="(const void *buff, int typesz, int buffsz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1File.html#ae86cc6aa7c576ecd4eb1a29a0c090aec">write</a> </td>
          <td>(</td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>typesz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>buffsz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Write data to the stream, with specified size.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of written data </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buff</td><td>data to write </td></tr>
    <tr><td class="paramname">typesz</td><td>size of each item </td></tr>
    <tr><td class="paramname">buffsz</td><td>size of buffer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a44c2f9df64934fbf264a699efbf838b9"></a><!-- doxytag: member="edelib::File::write" ref="a44c2f9df64934fbf264a699efbf838b9" args="(const char *buff, unsigned int buffsz)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1File.html#ae86cc6aa7c576ecd4eb1a29a0c090aec">write</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>buffsz</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Write char data to the stream.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of written data </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">buff</td><td>data to write </td></tr>
    <tr><td class="paramname">buffsz</td><td>size of buffer </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acbda59d60a38b48772e62e388b6d2420"></a><!-- doxytag: member="edelib::File::write" ref="acbda59d60a38b48772e62e388b6d2420" args="(const char *buff)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1File.html#ae86cc6aa7c576ecd4eb1a29a0c090aec">write</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>buff</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Same as write(buff, strlen(buff)) </p>

</div>
</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a22d18d1f8b422ab933e02178d820ab52"></a><!-- doxytag: member="edelib::File::file_copy" ref="a22d18d1f8b422ab933e02178d820ab52" args="(const char *src, const char *dest, bool exact=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#a22d18d1f8b422ab933e02178d820ab52">file_copy</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>exact</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Copy file from src to dest. This function is implemented via getc() (not like standard <em>cp</em> command) due it's simplicity.</p>
<dl class="note"><dt><b>Note:</b></dt><dd>src <b>must</b> exists and checking if dest exists <b>is not done</b>. This means if dest exists, it will <b>be overwritten</b>. Use <a class="el" href="classedelib_1_1File.html#a08154d2484b918ec2952f55843b05c88">file_exists()</a> to check does it really exists.</dd></dl>
<p>If <em>exact</em> parameter is set to true, it will set the same permissions and access/change time to the dest as src. On other hand, if any of stages (changing permissions or setting time) fails <a class="el" href="classedelib_1_1File.html#a22d18d1f8b422ab933e02178d820ab52">file_copy()</a> will return false.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if is able to open src and able to write in dest, or false if failed in both (or setting permissions/time if <em>exact</em> paramter is used) </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>is source file to be copied </td></tr>
    <tr><td class="paramname">dest</td><td>is destination </td></tr>
    <tr><td class="paramname">exact</td><td>will try to set exact src info (timestamp,owner,group,...) to dest </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad184cc1a2bc299e0e0699b147f51477a"></a><!-- doxytag: member="edelib::File::file_executable" ref="ad184cc1a2bc299e0e0699b147f51477a" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#ad184cc1a2bc299e0e0699b147f51477a">file_executable</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Check if file is executable</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000007">Deprecated:</a></b></dt><dd>with <a class="el" href="namespaceedelib.html#a9f17a7ee2567830daf926aed28cacda9">file_test()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a08154d2484b918ec2952f55843b05c88"></a><!-- doxytag: member="edelib::File::file_exists" ref="a08154d2484b918ec2952f55843b05c88" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#a08154d2484b918ec2952f55843b05c88">file_exists</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Check if file exists and is regular file</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000004">Deprecated:</a></b></dt><dd>with <a class="el" href="namespaceedelib.html#a9f17a7ee2567830daf926aed28cacda9">file_test()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ac1e64c0ef91d7579d8d86c8a834ce7be"></a><!-- doxytag: member="edelib::File::file_path" ref="ac1e64c0ef91d7579d8d86c8a834ce7be" args="(const char *fname, bool skip_link=false)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classedelib_1_1String.html">String</a> <a class="el" href="classedelib_1_1File.html#ac1e64c0ef91d7579d8d86c8a834ce7be">file_path</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>skip_link</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return full path of given argument, looking at $PATH environment variable. If is unable to read $PATH or file does not exists or resolved path is not file, it will return empty string.</p>
<p>Returned path can be either link to binary or actual binary (depends on how entries in $PATH are placed). For example <em>mv</em> command is often in <em>/bin</em>, and it's link is (often) in <em>/usr/bin</em>. If PATH contains something like <em>/usr/local/bin:/usr/bin:/bin</em>, <em>/usr/bin/mv</em> will be returned.</p>
<p>For this casses, setting <em>skip_link</em> to true will return <em>/bin/mv</em>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>full path if file exists or empty string as noted above </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">fname</td><td>file to look for </td></tr>
    <tr><td class="paramname">skip_link</td><td>if true symbolic links are ignored </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aba2158a09bd27f9e8b84fa44ce462939"></a><!-- doxytag: member="edelib::File::file_readable" ref="aba2158a09bd27f9e8b84fa44ce462939" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#aba2158a09bd27f9e8b84fa44ce462939">file_readable</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Check if file is readable</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000005">Deprecated:</a></b></dt><dd>with <a class="el" href="namespaceedelib.html#a9f17a7ee2567830daf926aed28cacda9">file_test()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a085a557b72965124eb8b8c3065885ac7"></a><!-- doxytag: member="edelib::File::file_remove" ref="a085a557b72965124eb8b8c3065885ac7" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#a085a557b72965124eb8b8c3065885ac7">file_remove</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Remove file at given path. It will call system's unlink() instead remove() since remove() is not compatible between latest versions of libc and libc4 or libc5 (see <em>man remove</em>).</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if operation was succesfull, or false if is unable to proceed </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>is absolute (or relative) path to the file </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad388ef22307c342e057b7b3f648bd4e8"></a><!-- doxytag: member="edelib::File::file_rename" ref="ad388ef22307c342e057b7b3f648bd4e8" args="(const char *from, const char *to)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#ad388ef22307c342e057b7b3f648bd4e8">file_rename</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>to</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rename file. Assumed is that name to be renamed to does not exists (file, directory, link and etc.)</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if succeded or false if not </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">from</td><td>is what file to rename </td></tr>
    <tr><td class="paramname">to</td><td>is new name </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a01375d48cd88a9d2e54e4a4aa37dc563"></a><!-- doxytag: member="edelib::File::file_writeable" ref="a01375d48cd88a9d2e54e4a4aa37dc563" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1File.html#a01375d48cd88a9d2e54e4a4aa37dc563">file_writeable</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td><code> [related]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Check if file is writeable</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000006">Deprecated:</a></b></dt><dd>with <a class="el" href="namespaceedelib.html#a9f17a7ee2567830daf926aed28cacda9">file_test()</a> </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>edelib/<a class="el" href="File_8h_source.html">File.h</a></li>
</ul>
</div><!-- contents -->


<hr class="footer"/><address class="footer"><small>
Generated on Tue Jun 5 2012 17:49:02 for edelib by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>

</body>
</html>