<!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"/> <title>SphinxBase: include/sphinxbase/err.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript"> $(document).ready(initResizable); </script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.3 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">SphinxBase <span id="projectnumber">0.6</span></div> </td> </tr> </tbody> </table> </div> <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> </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> </div> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> initNavTree('err_8h.html',''); </script> <div id="doc-content"> <div class="header"> <div class="summary"> <a href="#define-members">Defines</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <h1>include/sphinxbase/err.h File Reference</h1> </div> </div> <div class="contents"> <p>Implementation of logging routines. <a href="#_details">More...</a></p> <div class="textblock"><code>#include <stdarg.h></code><br/> <code>#include <stdio.h></code><br/> <code>#include <errno.h></code><br/> <code>#include <sphinxbase/sphinxbase_export.h></code><br/> </div> <p><a href="err_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="define-members"></a> Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a4495946ab2449d61108fe829a94613"></a><!-- doxytag: member="err.h::E_FATAL" ref="a1a4495946ab2449d61108fe829a94613" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a1a4495946ab2449d61108fe829a94613">E_FATAL</a>   _E__pr_header(__FILE__, __LINE__, "FATAL_ERROR"),_E__die_error</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Exit with non-zero status after error message. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5229a1d58f5f5e69963a8d038ff5bc3e"></a><!-- doxytag: member="err.h::E_FATAL_SYSTEM" ref="a5229a1d58f5f5e69963a8d038ff5bc3e" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a5229a1d58f5f5e69963a8d038ff5bc3e">E_FATAL_SYSTEM</a>   _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__fatal_sys_error</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print error text; Call perror(""); exit(errno);. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63de511eaca101291914f701e67c5c44"></a><!-- doxytag: member="err.h::E_WARN_SYSTEM" ref="a63de511eaca101291914f701e67c5c44" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a63de511eaca101291914f701e67c5c44">E_WARN_SYSTEM</a>   _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__sys_error</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print error text; Call perror("");. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54ffbfe898d74595c586a1f48f32ef03"></a><!-- doxytag: member="err.h::E_ERROR_SYSTEM" ref="a54ffbfe898d74595c586a1f48f32ef03" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a54ffbfe898d74595c586a1f48f32ef03">E_ERROR_SYSTEM</a>   _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__sys_error</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print error text; Call perror("");. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac3c705943d946708cea0a1443be1c853"></a><!-- doxytag: member="err.h::E_INFO" ref="ac3c705943d946708cea0a1443be1c853" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#ac3c705943d946708cea0a1443be1c853">E_INFO</a>   _E__pr_info_header(__FILE__, __LINE__, "INFO"),_E__pr_info</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print logging information to standard error stream. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5a17ac5be8c738d3d977b1bea2d4538"></a><!-- doxytag: member="err.h::E_INFOCONT" ref="ae5a17ac5be8c738d3d977b1bea2d4538" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#ae5a17ac5be8c738d3d977b1bea2d4538">E_INFOCONT</a>   _E__pr_info</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print logging information without header, to standard error stream. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad95ccef073dd6f3c81c84e6aedca1f16"></a><!-- doxytag: member="err.h::E_INFO_NOFN" ref="ad95ccef073dd6f3c81c84e6aedca1f16" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#ad95ccef073dd6f3c81c84e6aedca1f16">E_INFO_NOFN</a>   _E__pr_info_header_wofn("INFO"),_E__pr_info</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print logging information without filename. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a794bec721b555ac1f2167f9e12f662"></a><!-- doxytag: member="err.h::E_WARN" ref="a6a794bec721b555ac1f2167f9e12f662" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a6a794bec721b555ac1f2167f9e12f662">E_WARN</a>   _E__pr_header(__FILE__, __LINE__, "WARNING"),_E__pr_warn</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print warning information to standard error stream. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f7b2f58f5a663a6bdd51f197ae21993"></a><!-- doxytag: member="err.h::E_ERROR" ref="a5f7b2f58f5a663a6bdd51f197ae21993" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a5f7b2f58f5a663a6bdd51f197ae21993">E_ERROR</a>   _E__pr_header(__FILE__, __LINE__, "ERROR"),_E__pr_warn</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print error message to standard error stream. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#af46f94d0e21f22f1153f8f1cd9a372d6">E_DEBUG</a>(level, x)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Print debugging information to standard error stream. <a href="#af46f94d0e21f22f1153f8f1cd9a372d6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e8c4b068434a0424751fc2d2c457807"></a><!-- doxytag: member="err.h::E_DEBUGCONT" ref="a7e8c4b068434a0424751fc2d2c457807" args="(level, x)" --> #define </td><td class="memItemRight" valign="bottom"><b>E_DEBUGCONT</b>(level, x)</td></tr> <tr><td colspan="2"><h2><a name="func-members"></a> Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96379bbd8a6c62698d166e5d12f3370d"></a><!-- doxytag: member="err.h::_E__pr_header" ref="a96379bbd8a6c62698d166e5d12f3370d" args="(char const *file, long line, char const *msg)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__pr_header</b> (char const *file, long line, char const *msg)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a173ee0173de4543e08d9d7a38ce18b88"></a><!-- doxytag: member="err.h::_E__pr_debug_header" ref="a173ee0173de4543e08d9d7a38ce18b88" args="(char const *file, long line, int level)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__pr_debug_header</b> (char const *file, long line, int level)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a583592f006ae14756c0c4812048c9b5f"></a><!-- doxytag: member="err.h::_E__pr_info_header" ref="a583592f006ae14756c0c4812048c9b5f" args="(char const *file, long line, char const *tag)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__pr_info_header</b> (char const *file, long line, char const *tag)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abb0389e05db688aee439b339f7f6ed89"></a><!-- doxytag: member="err.h::_E__pr_info_header_wofn" ref="abb0389e05db688aee439b339f7f6ed89" args="(char const *msg)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__pr_info_header_wofn</b> (char const *msg)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c2a4f988b27b2fa9baaa8ecd3f1e61f"></a><!-- doxytag: member="err.h::_E__pr_warn" ref="a3c2a4f988b27b2fa9baaa8ecd3f1e61f" args="(char const *fmt,...)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__pr_warn</b> (char const *fmt,...)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a04fbf9d2c44e4e72f64cd3e2f5a24c38"></a><!-- doxytag: member="err.h::_E__pr_info" ref="a04fbf9d2c44e4e72f64cd3e2f5a24c38" args="(char const *fmt,...)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__pr_info</b> (char const *fmt,...)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2149bb7cde661a9bee0bdaaea7fab2d"></a><!-- doxytag: member="err.h::_E__die_error" ref="ae2149bb7cde661a9bee0bdaaea7fab2d" args="(char const *fmt,...)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__die_error</b> (char const *fmt,...)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cdeb87987f0c30cd0c99826f9a1f7a8"></a><!-- doxytag: member="err.h::_E__abort_error" ref="a0cdeb87987f0c30cd0c99826f9a1f7a8" args="(char const *fmt,...)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__abort_error</b> (char const *fmt,...)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a750133ab0eeba2bceba2a4054469857b"></a><!-- doxytag: member="err.h::_E__sys_error" ref="a750133ab0eeba2bceba2a4054469857b" args="(char const *fmt,...)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__sys_error</b> (char const *fmt,...)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39faf53d575084585f79fe685943e95a"></a><!-- doxytag: member="err.h::_E__fatal_sys_error" ref="a39faf53d575084585f79fe685943e95a" args="(char const *fmt,...)" --> SPHINXBASE_EXPORT void </td><td class="memItemRight" valign="bottom"><b>_E__fatal_sys_error</b> (char const *fmt,...)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT FILE * </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a8bac37b001e58048b9f52ea1c756fc08">err_set_logfp</a> (FILE *logfp)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Direct all logging to a given filehandle. <a href="#a8bac37b001e58048b9f52ea1c756fc08"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT FILE * </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a9707012f263e46ea66e93349313ddbe6">err_get_logfp</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the current logging filehandle. <a href="#a9707012f263e46ea66e93349313ddbe6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT int </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#aa605de73499066475ec4cfb03e4c5a20">err_set_logfile</a> (char const *file)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Append all log messages to a given file. <a href="#aa605de73499066475ec4cfb03e4c5a20"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT int </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#ab77fa009824260d9f103308272dc89b8">err_set_debug_level</a> (int level)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set debugging verbosity level. <a href="#ab77fa009824260d9f103308272dc89b8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT int </td><td class="memItemRight" valign="bottom"><a class="el" href="err_8h.html#a1500dc011016aa15244d0d7f2fe66a7e">err_get_debug_level</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get debugging verbosity level. <a href="#a1500dc011016aa15244d0d7f2fe66a7e"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <div class="textblock"><p>Implementation of logging routines. </p> <p>Logging, warning, debug and error message output funtionality is provided in this file. Sphinxbase defines several level of logging messages - INFO, WARNING, ERROR, FATAL. By default output goes to standard error output.</p> <p>Logging is implemented through macros. They take same arguments as printf: format string and values. By default source file name and source line are prepended to the message. Log output could be redirected to any file using <a class="el" href="err_8h.html#a8bac37b001e58048b9f52ea1c756fc08" title="Direct all logging to a given filehandle.">err_set_logfp()</a> and <a class="el" href="err_8h.html#aa605de73499066475ec4cfb03e4c5a20" title="Append all log messages to a given file.">err_set_logfile()</a> functions. To disable logging in your application, call err_set_logfp(NULL).</p> <p>It's possible to log multiline info messages, to do that you need to start message with E_INFO and output other lines with E_INFOCONT. </p> <p>Definition in file <a class="el" href="err_8h_source.html">err.h</a>.</p> </div><hr/><h2>Define Documentation</h2> <a class="anchor" id="af46f94d0e21f22f1153f8f1cd9a372d6"></a><!-- doxytag: member="err.h::E_DEBUG" ref="af46f94d0e21f22f1153f8f1cd9a372d6" args="(level, x)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define E_DEBUG</td> <td>(</td> <td class="paramtype"> </td> <td class="paramname">level, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname">x </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Print debugging information to standard error stream. </p> <p>This will only print a message if: 1. Debugging is enabled at compile time 2. The debug level is greater than or equal to <em>level</em> </p> <p>Note that for portability reasons the format and arguments must be enclosed in an extra set of parentheses. </p> <p>Definition at line <a class="el" href="err_8h_source.html#l00212">212</a> of file <a class="el" href="err_8h_source.html">err.h</a>.</p> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="a1500dc011016aa15244d0d7f2fe66a7e"></a><!-- doxytag: member="err.h::err_get_debug_level" ref="a1500dc011016aa15244d0d7f2fe66a7e" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SPHINXBASE_EXPORT int err_get_debug_level </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get debugging verbosity level. </p> <p>Note that debugging messages are only enabled when compiled with -DDEBUG. </p> <p>Definition at line <a class="el" href="err_8c_source.html#l00074">74</a> of file <a class="el" href="err_8c_source.html">err.c</a>.</p> </div> </div> <a class="anchor" id="a9707012f263e46ea66e93349313ddbe6"></a><!-- doxytag: member="err.h::err_get_logfp" ref="a9707012f263e46ea66e93349313ddbe6" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SPHINXBASE_EXPORT FILE* err_get_logfp </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the current logging filehandle. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>Current logging filehandle, NULL if disabled. </dd></dl> <p>Definition at line <a class="el" href="err_8c_source.html#l00157">157</a> of file <a class="el" href="err_8c_source.html">err.c</a>.</p> <p>Referenced by <a class="el" href="cmd__ln_8c_source.html#l00551">cmd_ln_parse_r()</a>, <a class="el" href="err_8c_source.html#l00190">err_set_logfile()</a>, and <a class="el" href="err_8c_source.html#l00179">err_set_logfp()</a>.</p> </div> </div> <a class="anchor" id="ab77fa009824260d9f103308272dc89b8"></a><!-- doxytag: member="err.h::err_set_debug_level" ref="ab77fa009824260d9f103308272dc89b8" args="(int level)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SPHINXBASE_EXPORT int err_set_debug_level </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>level</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set debugging verbosity level. </p> <p>Note that debugging messages are only enabled when compiled with -DDEBUG.</p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">level</td><td>Verbosity level to set, or 0 to disable debug messages. </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="err_8c_source.html#l00068">68</a> of file <a class="el" href="err_8c_source.html">err.c</a>.</p> </div> </div> <a class="anchor" id="aa605de73499066475ec4cfb03e4c5a20"></a><!-- doxytag: member="err.h::err_set_logfile" ref="aa605de73499066475ec4cfb03e4c5a20" args="(char const *file)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SPHINXBASE_EXPORT int err_set_logfile </td> <td>(</td> <td class="paramtype">char const * </td> <td class="paramname"><em>file</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Append all log messages to a given file. </p> <p>Previous logging filehandle is closed (unless it was stdout or stderr).</p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">file</td><td>File to send log messages to, or NULL to disable logging. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>0 for success, <0 for failure (e.g. if file does not exist) </dd></dl> <p>Definition at line <a class="el" href="err_8c_source.html#l00190">190</a> of file <a class="el" href="err_8c_source.html">err.c</a>.</p> <p>References <a class="el" href="err_8c_source.html#l00157">err_get_logfp()</a>.</p> </div> </div> <a class="anchor" id="a8bac37b001e58048b9f52ea1c756fc08"></a><!-- doxytag: member="err.h::err_set_logfp" ref="a8bac37b001e58048b9f52ea1c756fc08" args="(FILE *logfp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SPHINXBASE_EXPORT FILE* err_set_logfp </td> <td>(</td> <td class="paramtype">FILE * </td> <td class="paramname"><em>logfp</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Direct all logging to a given filehandle. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">logfp</td><td>Filehandle to send log messages to, or NULL to disable logging. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Previous logging filehandle, if any. </dd></dl> <p>Definition at line <a class="el" href="err_8c_source.html#l00179">179</a> of file <a class="el" href="err_8c_source.html">err.c</a>.</p> <p>References <a class="el" href="err_8c_source.html#l00157">err_get_logfp()</a>.</p> </div> </div> </div> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="err_8h.html">err.h</a> </li> <li class="footer">Generated on Tue Apr 19 2011 for SphinxBase by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li> </ul> </div> </body> </html>