<!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  <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 Page</span></a></li> <li><a href="pages.html"><span>Related 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 List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class 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> | <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 <<a class="el" href="File_8h_source.html">edelib/File.h</a>></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"> </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"> </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"> </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 </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 </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 * </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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> </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">"foo.txt"</span>); <span class="keywordflow">if</span>(!f) <a class="code" href="classedelib_1_1File.html#a55f3d956bb2ba20b5059e9e25484a47f">printf</a>(<span class="stringliteral">"can't open %s\n"</span>, f.name()); <span class="keywordflow">while</span>(!f.eof()) <a class="code" href="classedelib_1_1File.html#a55f3d956bb2ba20b5059e9e25484a47f">printf</a>(<span class="stringliteral">"%s"</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 & 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 * </td> <td class="paramname"><em>n</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>m</em> </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 </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 </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 </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 </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 * </td> <td class="paramname"><em>fname</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>mode</em> = <code><a class="el" href="namespaceedelib.html#af88b067682dd1949588373ef65b159fbac15cbb3a5cad099d083c457ddf43c666">FIO_READ</a></code> </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 * </td> <td class="paramname"><em>fmt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"><em>...</em> </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 </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 * </td> <td class="paramname"><em>buff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>typesz</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>buffsz</em> </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 * </td> <td class="paramname"><em>buff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>buffsz</em> </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 * </td> <td class="paramname"><em>buff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>typesz</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>buffsz</em> </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 * </td> <td class="paramname"><em>buff</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>buffsz</em> </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 * </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 * </td> <td class="paramname"><em>src</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>dest</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>exact</em> = <code>false</code> </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 * </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 * </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 * </td> <td class="paramname"><em>fname</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>skip_link</em> = <code>false</code> </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 * </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 * </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 * </td> <td class="paramname"><em>from</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>to</em> </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 * </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  <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>