<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>BrlAPI: Error handling</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.1 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul></div> <h1>Error handling</h1>How to handle errors. <a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g8f89856d403136f505d378091c88c526">BRLAPI_ERROR_SUCCESS</a> 0</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gd26ec6a3b47145d4b0714c26867d7346">BRLAPI_ERROR_NOMEM</a> 1</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g247688f78749d0624b734b21664e9ff3">BRLAPI_ERROR_TTYBUSY</a> 2</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g11f0b3893e41121a28b175e5ae1a540e">BRLAPI_ERROR_DEVICEBUSY</a> 3</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ged526a46be1ee17a34347acc2f514a33">BRLAPI_ERROR_UNKNOWN_INSTRUCTION</a> 4</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g81fb10e51c3dec16b3257ba094545f72">BRLAPI_ERROR_ILLEGAL_INSTRUCTION</a> 5</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g1105b6b70fca868cdb97fd0e3e7daf79">BRLAPI_ERROR_INVALID_PARAMETER</a> 6</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gb140b5cc02ecad533001f4ad9b1f3c3b">BRLAPI_ERROR_INVALID_PACKET</a> 7</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gd6ff893fd29673c32ed7ba3552a061eb">BRLAPI_ERROR_CONNREFUSED</a> 8</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g527abf61de5b657d1b7b6e1edc457d8f">BRLAPI_ERROR_OPNOTSUPP</a> 9</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g4f4412300d0645b9bcf4684c26807008">BRLAPI_ERROR_GAIERR</a> 10</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g48a4c142b1cc222f678777ab1aeb7103">BRLAPI_ERROR_LIBCERR</a> 11</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g24ae405cffce14acd0d3ae615278b22c">BRLAPI_ERROR_UNKNOWNTTY</a> 12</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gde12420f962cdc605ff892b3d8dde695">BRLAPI_ERROR_PROTOCOL_VERSION</a> 13</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gd2d8a091c4f57bd5379227e21d119cce">BRLAPI_ERROR_EOF</a> 14</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g88e00cd74b1382651770017050bb7655">BRLAPI_ERROR_EMPTYKEY</a> 15</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g28f78e69573f1f2139a78b46221c3c42">BRLAPI_ERROR_DRIVERERROR</a> 16</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g2e2945493fe9746abea9d3380f4b36ee">BRLAPI_ERROR_AUTHENTICATION</a> 17</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g526102c7af8a8d224165a8063627f815">brlapi_error</a> (*brlapi_error_location())</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g358abf65b23f4ab607e5ad5fde33b77e">brlapi_errno</a> (brlapi_error.brlerrno)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g735f3a4c1aaaff61e11b29c612bcb2eb">brlapi_libcerrno</a> (brlapi_error.libcerrno)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g5df52780e80cccb40727f5d5da0d5b42">brlapi_gaierrno</a> (brlapi_error.gaierrno)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g4de3d0faf1ac3eab59b6799b6ad5faee">brlapi_errfun</a> (brlapi_error.errfun)</td></tr> <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(BRLAPI_STDCALL *) </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g5f8ee791a678fd12f0f50b41ea2b2d25">brlapi_exceptionHandler_t</a> (int error, <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef void(BRLAPI_STDCALL *) </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g7011ff841c49a0ad815af4d7f3c8be16">brlapi__exceptionHandler_t</a> (<a class="el" href="group__brlapi__handles.html#g57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, int error, <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g5717bfb2ac0e9a906f6b591b9943bd23">brlapi_perror</a> (const char *s)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a> *BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g99aad548404f82d2209344db68a08595">brlapi_error_location</a> (void)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char *BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g04c3125a4b0f5af895728f36b3852a27">brlapi_strerror</a> (const <a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a> *error)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char *BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gf4d79a54121e82b25540de7203463402">brlapi_getPacketTypeName</a> (<a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g05b0559f46f167cb8c8bb606f82bece7">brlapi_strexception</a> (char *buffer, size_t bufferSize, int error, <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t packetSize)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g6d4ed39756fc3d136ede88e00fc6cc95">brlapi__strexception</a> (<a class="el" href="group__brlapi__handles.html#g57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, char *buffer, size_t bufferSize, int error, <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t packetSize)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__brlapi__error.html#g5f8ee791a678fd12f0f50b41ea2b2d25">brlapi_exceptionHandler_t</a> <br> BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g7456fc847deec0762b939d44ed9868e9">brlapi_setExceptionHandler</a> (<a class="el" href="group__brlapi__error.html#g5f8ee791a678fd12f0f50b41ea2b2d25">brlapi_exceptionHandler_t</a> handler)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__brlapi__error.html#g7011ff841c49a0ad815af4d7f3c8be16">brlapi__exceptionHandler_t</a> <br> BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gc66629c515afe202d5b8d49ab27e39ea">brlapi__setExceptionHandler</a> (<a class="el" href="group__brlapi__handles.html#g57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, <a class="el" href="group__brlapi__error.html#g7011ff841c49a0ad815af4d7f3c8be16">brlapi__exceptionHandler_t</a> handler)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g1e05f6233aab68e0aca7cd1470e92add">brlapi_defaultExceptionHandler</a> (int error, <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void BRLAPI_STDCALL </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g0f58f22d3bf9e6d18adb9af890cb8c19">brlapi__defaultExceptionHandler</a> (<a class="el" href="group__brlapi__handles.html#g57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, int error, <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td></tr> <tr><td colspan="2"><br><h2>Variables</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g3c572493ae2568c5154b1f4f93caa9eb">brlapi_errlist</a> []</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g4cb4bc3719221e2016e856c63b519790">brlapi_nerr</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g93ee012430dc5ca8563404a483cc9610">brlapi_error</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gf293f67c594571bb5ad6614eb22c0cb1">brlapi_errno</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g89ebe31438bab6230b4af91fd1e046e2">brlapi_libcerrno</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gbe65d6f2c5968bcfe3708fa9f487566c">brlapi_gaierrno</a></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g3a1a7f39b5ef23db92d521b4fc9a890d">brlapi_errfun</a></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> When a function fails, <a class="el" href="group__brlapi__error.html#gf293f67c594571bb5ad6614eb22c0cb1">brlapi_errno</a> will hold an error code to explain why it failed. It should always be reported somehow.<p> Although most errors are reported that way, some (called exceptions) are reported asynchronously for efficiency reasons, because they always just report a programming error. The affected functions are: brlapi_setFocus, brlapi_write* and brlapi_sendRaw. When they happen, the next call to brlapi_something will close the connection and call the <em>exception</em> handler. If the exception handler returns, the brlapi_something function will return an end-of-file error.<p> The default exception handler (<a class="el" href="group__brlapi__error.html#g1e05f6233aab68e0aca7cd1470e92add">brlapi_defaultExceptionHandler()</a>) dumps the guilty packet before abort()ing. It can be replaced by calling <a class="el" href="group__brlapi__error.html#g7456fc847deec0762b939d44ed9868e9">brlapi_setExceptionHandler()</a>. For instance, the Java and Python bindings use this for raising a Java or Python exception that may be caught. <hr><h2>Define Documentation</h2> <a class="anchor" name="g4de3d0faf1ac3eab59b6799b6ad5faee"></a><!-- doxytag: member="brlapi.h::brlapi_errfun" ref="g4de3d0faf1ac3eab59b6799b6ad5faee" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define <a class="el" href="group__brlapi__error.html#g3a1a7f39b5ef23db92d521b4fc9a890d">brlapi_errfun</a> (brlapi_error.errfun) </td> </tr> </table> </div> <div class="memdoc"> <p> Cheat about the brlapi_errfun C token </div> </div><p> <a class="anchor" name="g358abf65b23f4ab607e5ad5fde33b77e"></a><!-- doxytag: member="brlapi.h::brlapi_errno" ref="g358abf65b23f4ab607e5ad5fde33b77e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define <a class="el" href="group__brlapi__error.html#gf293f67c594571bb5ad6614eb22c0cb1">brlapi_errno</a> (brlapi_error.brlerrno) </td> </tr> </table> </div> <div class="memdoc"> <p> Cheat about the brlapi_errno C token </div> </div><p> <a class="anchor" name="g526102c7af8a8d224165a8063627f815"></a><!-- doxytag: member="brlapi.h::brlapi_error" ref="g526102c7af8a8d224165a8063627f815" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define <a class="el" href="group__brlapi__error.html#g93ee012430dc5ca8563404a483cc9610">brlapi_error</a> (*brlapi_error_location()) </td> </tr> </table> </div> <div class="memdoc"> <p> Cheat about the brlapi_error C token </div> </div><p> <a class="anchor" name="g2e2945493fe9746abea9d3380f4b36ee"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_AUTHENTICATION" ref="g2e2945493fe9746abea9d3380f4b36ee" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_AUTHENTICATION 17 </td> </tr> </table> </div> <div class="memdoc"> <p> Authentication failed </div> </div><p> <a class="anchor" name="gd6ff893fd29673c32ed7ba3552a061eb"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_CONNREFUSED" ref="gd6ff893fd29673c32ed7ba3552a061eb" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_CONNREFUSED 8 </td> </tr> </table> </div> <div class="memdoc"> <p> Connection refused </div> </div><p> <a class="anchor" name="g11f0b3893e41121a28b175e5ae1a540e"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_DEVICEBUSY" ref="g11f0b3893e41121a28b175e5ae1a540e" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_DEVICEBUSY 3 </td> </tr> </table> </div> <div class="memdoc"> <p> A connection is already using RAW or suspend mode </div> </div><p> <a class="anchor" name="g28f78e69573f1f2139a78b46221c3c42"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_DRIVERERROR" ref="g28f78e69573f1f2139a78b46221c3c42" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_DRIVERERROR 16 </td> </tr> </table> </div> <div class="memdoc"> <p> Packet returned by driver too large </div> </div><p> <a class="anchor" name="g88e00cd74b1382651770017050bb7655"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_EMPTYKEY" ref="g88e00cd74b1382651770017050bb7655" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_EMPTYKEY 15 </td> </tr> </table> </div> <div class="memdoc"> <p> Key file empty </div> </div><p> <a class="anchor" name="gd2d8a091c4f57bd5379227e21d119cce"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_EOF" ref="gd2d8a091c4f57bd5379227e21d119cce" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_EOF 14 </td> </tr> </table> </div> <div class="memdoc"> <p> Unexpected end of file </div> </div><p> <a class="anchor" name="g4f4412300d0645b9bcf4684c26807008"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_GAIERR" ref="g4f4412300d0645b9bcf4684c26807008" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_GAIERR 10 </td> </tr> </table> </div> <div class="memdoc"> <p> Getaddrinfo error </div> </div><p> <a class="anchor" name="g81fb10e51c3dec16b3257ba094545f72"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_ILLEGAL_INSTRUCTION" ref="g81fb10e51c3dec16b3257ba094545f72" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_ILLEGAL_INSTRUCTION 5 </td> </tr> </table> </div> <div class="memdoc"> <p> Forbiden in current mode </div> </div><p> <a class="anchor" name="gb140b5cc02ecad533001f4ad9b1f3c3b"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_INVALID_PACKET" ref="gb140b5cc02ecad533001f4ad9b1f3c3b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_INVALID_PACKET 7 </td> </tr> </table> </div> <div class="memdoc"> <p> Invalid size </div> </div><p> <a class="anchor" name="g1105b6b70fca868cdb97fd0e3e7daf79"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_INVALID_PARAMETER" ref="g1105b6b70fca868cdb97fd0e3e7daf79" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_INVALID_PARAMETER 6 </td> </tr> </table> </div> <div class="memdoc"> <p> Out of range or have no sense </div> </div><p> <a class="anchor" name="g48a4c142b1cc222f678777ab1aeb7103"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_LIBCERR" ref="g48a4c142b1cc222f678777ab1aeb7103" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_LIBCERR 11 </td> </tr> </table> </div> <div class="memdoc"> <p> Libc error </div> </div><p> <a class="anchor" name="gd26ec6a3b47145d4b0714c26867d7346"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_NOMEM" ref="gd26ec6a3b47145d4b0714c26867d7346" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_NOMEM 1 </td> </tr> </table> </div> <div class="memdoc"> <p> Not enough memory </div> </div><p> <a class="anchor" name="g527abf61de5b657d1b7b6e1edc457d8f"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_OPNOTSUPP" ref="g527abf61de5b657d1b7b6e1edc457d8f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_OPNOTSUPP 9 </td> </tr> </table> </div> <div class="memdoc"> <p> Operation not supported </div> </div><p> <a class="anchor" name="gde12420f962cdc605ff892b3d8dde695"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_PROTOCOL_VERSION" ref="gde12420f962cdc605ff892b3d8dde695" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_PROTOCOL_VERSION 13 </td> </tr> </table> </div> <div class="memdoc"> <p> Bad protocol version </div> </div><p> <a class="anchor" name="g8f89856d403136f505d378091c88c526"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_SUCCESS" ref="g8f89856d403136f505d378091c88c526" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_SUCCESS 0 </td> </tr> </table> </div> <div class="memdoc"> <p> Success </div> </div><p> <a class="anchor" name="g247688f78749d0624b734b21664e9ff3"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_TTYBUSY" ref="g247688f78749d0624b734b21664e9ff3" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_TTYBUSY 2 </td> </tr> </table> </div> <div class="memdoc"> <p> A connection is already running in this tty </div> </div><p> <a class="anchor" name="ged526a46be1ee17a34347acc2f514a33"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_UNKNOWN_INSTRUCTION" ref="ged526a46be1ee17a34347acc2f514a33" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_UNKNOWN_INSTRUCTION 4 </td> </tr> </table> </div> <div class="memdoc"> <p> Not implemented in protocol </div> </div><p> <a class="anchor" name="g24ae405cffce14acd0d3ae615278b22c"></a><!-- doxytag: member="brlapi.h::BRLAPI_ERROR_UNKNOWNTTY" ref="g24ae405cffce14acd0d3ae615278b22c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define BRLAPI_ERROR_UNKNOWNTTY 12 </td> </tr> </table> </div> <div class="memdoc"> <p> Couldn't find out the tty number </div> </div><p> <a class="anchor" name="g5df52780e80cccb40727f5d5da0d5b42"></a><!-- doxytag: member="brlapi.h::brlapi_gaierrno" ref="g5df52780e80cccb40727f5d5da0d5b42" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define <a class="el" href="group__brlapi__error.html#gbe65d6f2c5968bcfe3708fa9f487566c">brlapi_gaierrno</a> (brlapi_error.gaierrno) </td> </tr> </table> </div> <div class="memdoc"> <p> Cheat about the brlapi_gaierrno C token </div> </div><p> <a class="anchor" name="g735f3a4c1aaaff61e11b29c612bcb2eb"></a><!-- doxytag: member="brlapi.h::brlapi_libcerrno" ref="g735f3a4c1aaaff61e11b29c612bcb2eb" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define <a class="el" href="group__brlapi__error.html#g89ebe31438bab6230b4af91fd1e046e2">brlapi_libcerrno</a> (brlapi_error.libcerrno) </td> </tr> </table> </div> <div class="memdoc"> <p> Cheat about the brlapi_libcerrno C token </div> </div><p> <hr><h2>Typedef Documentation</h2> <a class="anchor" name="g7011ff841c49a0ad815af4d7f3c8be16"></a><!-- doxytag: member="brlapi.h::brlapi__exceptionHandler_t" ref="g7011ff841c49a0ad815af4d7f3c8be16" args="(brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(BRLAPI_STDCALL *) <a class="el" href="group__brlapi__error.html#g7011ff841c49a0ad815af4d7f3c8be16">brlapi__exceptionHandler_t</a>(<a class="el" href="group__brlapi__handles.html#g57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, int error, <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size) </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g5f8ee791a678fd12f0f50b41ea2b2d25"></a><!-- doxytag: member="brlapi.h::brlapi_exceptionHandler_t" ref="g5f8ee791a678fd12f0f50b41ea2b2d25" args="(int error, brlapi_packetType_t type, const void *packet, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(BRLAPI_STDCALL *) <a class="el" href="group__brlapi__error.html#g5f8ee791a678fd12f0f50b41ea2b2d25">brlapi_exceptionHandler_t</a>(int error, <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size) </td> </tr> </table> </div> <div class="memdoc"> <p> Types for exception handlers<p> Types of exception handlers which are to be given to <a class="el" href="group__brlapi__error.html#g7456fc847deec0762b939d44ed9868e9">brlapi_setExceptionHandler()</a> and <a class="el" href="group__brlapi__error.html#gc66629c515afe202d5b8d49ab27e39ea">brlapi__setExceptionHandler()</a>.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>handle</em> </td><td>is the handle corresponding to the guilty connection; </td></tr> <tr><td valign="top"></td><td valign="top"><em>error</em> </td><td>is a BRLERR_ error code; </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>is the type of the guilty packet; </td></tr> <tr><td valign="top"></td><td valign="top"><em>packet</em> </td><td>points to the content of the guilty packet (might be a little bit truncated); </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>gives the guilty packet's size. </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="ge2fac75a86e7a9dc54f4b3c23bc319e9"></a><!-- doxytag: member="brlapi.h::brlapi_packetType_t" ref="ge2fac75a86e7a9dc54f4b3c23bc319e9" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef uint32_t <a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Type for packet type. Only unsigned can cross networks, 32bits </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="g0f58f22d3bf9e6d18adb9af890cb8c19"></a><!-- doxytag: member="brlapi.h::brlapi__defaultExceptionHandler" ref="g0f58f22d3bf9e6d18adb9af890cb8c19" args="(brlapi_handle_t *handle, int error, brlapi_packetType_t type, const void *packet, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BRLAPI_STDCALL brlapi__defaultExceptionHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__handles.html#g57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> * </td> <td class="paramname"> <em>handle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>error</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>packet</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="gc66629c515afe202d5b8d49ab27e39ea"></a><!-- doxytag: member="brlapi.h::brlapi__setExceptionHandler" ref="gc66629c515afe202d5b8d49ab27e39ea" args="(brlapi_handle_t *handle, brlapi__exceptionHandler_t handler)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__brlapi__error.html#g7011ff841c49a0ad815af4d7f3c8be16">brlapi__exceptionHandler_t</a> BRLAPI_STDCALL brlapi__setExceptionHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__handles.html#g57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> * </td> <td class="paramname"> <em>handle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#g7011ff841c49a0ad815af4d7f3c8be16">brlapi__exceptionHandler_t</a> </td> <td class="paramname"> <em>handler</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g6d4ed39756fc3d136ede88e00fc6cc95"></a><!-- doxytag: member="brlapi.h::brlapi__strexception" ref="g6d4ed39756fc3d136ede88e00fc6cc95" args="(brlapi_handle_t *handle, char *buffer, size_t bufferSize, int error, brlapi_packetType_t type, const void *packet, size_t packetSize)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int BRLAPI_STDCALL brlapi__strexception </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__handles.html#g57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> * </td> <td class="paramname"> <em>handle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>bufferSize</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>error</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>packet</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>packetSize</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g1e05f6233aab68e0aca7cd1470e92add"></a><!-- doxytag: member="brlapi.h::brlapi_defaultExceptionHandler" ref="g1e05f6233aab68e0aca7cd1470e92add" args="(int error, brlapi_packetType_t type, const void *packet, size_t size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BRLAPI_STDCALL brlapi_defaultExceptionHandler </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>error</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>packet</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="g99aad548404f82d2209344db68a08595"></a><!-- doxytag: member="brlapi.h::brlapi_error_location" ref="g99aad548404f82d2209344db68a08595" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a>* BRLAPI_STDCALL brlapi_error_location </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Get per-thread error location<p> In multithreaded software, <a class="el" href="group__brlapi__error.html#g93ee012430dc5ca8563404a483cc9610">brlapi_error</a> is thread-specific, so api.h cheats about the brlapi_error token and actually calls <a class="el" href="group__brlapi__error.html#g99aad548404f82d2209344db68a08595">brlapi_error_location()</a>.<p> This gets the thread specific location of global variable <a class="el" href="group__brlapi__error.html#g93ee012430dc5ca8563404a483cc9610">brlapi_error</a> </div> </div><p> <a class="anchor" name="gf4d79a54121e82b25540de7203463402"></a><!-- doxytag: member="brlapi.h::brlapi_getPacketTypeName" ref="gf4d79a54121e82b25540de7203463402" args="(brlapi_packetType_t type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* BRLAPI_STDCALL brlapi_getPacketTypeName </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> </td> <td class="paramname"> <em>type</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Get plain packet type<p> <a class="el" href="group__brlapi__error.html#gf4d79a54121e82b25540de7203463402">brlapi_getPacketTypeName()</a> returns the plain packet type name corresponding to its argument. </div> </div><p> <a class="anchor" name="g5717bfb2ac0e9a906f6b591b9943bd23"></a><!-- doxytag: member="brlapi.h::brlapi_perror" ref="g5717bfb2ac0e9a906f6b591b9943bd23" args="(const char *s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void BRLAPI_STDCALL brlapi_perror </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>s</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Print a BrlAPI error message<p> <a class="el" href="group__brlapi__error.html#g5717bfb2ac0e9a906f6b591b9943bd23">brlapi_perror()</a> reads <a class="el" href="group__brlapi__error.html#g93ee012430dc5ca8563404a483cc9610">brlapi_error</a>, and acts just like perror(). </div> </div><p> <a class="anchor" name="g7456fc847deec0762b939d44ed9868e9"></a><!-- doxytag: member="brlapi.h::brlapi_setExceptionHandler" ref="g7456fc847deec0762b939d44ed9868e9" args="(brlapi_exceptionHandler_t handler)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__brlapi__error.html#g5f8ee791a678fd12f0f50b41ea2b2d25">brlapi_exceptionHandler_t</a> BRLAPI_STDCALL brlapi_setExceptionHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#g5f8ee791a678fd12f0f50b41ea2b2d25">brlapi_exceptionHandler_t</a> </td> <td class="paramname"> <em>handler</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Set a new exception handler<p> <a class="el" href="group__brlapi__error.html#g7456fc847deec0762b939d44ed9868e9">brlapi_setExceptionHandler()</a> replaces the previous exception handler with the handler parameter. The previous exception handler is returned to make chaining error handlers possible.<p> The default handler just prints the exception and abort()s. </div> </div><p> <a class="anchor" name="g04c3125a4b0f5af895728f36b3852a27"></a><!-- doxytag: member="brlapi.h::brlapi_strerror" ref="g04c3125a4b0f5af895728f36b3852a27" args="(const brlapi_error_t *error)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* BRLAPI_STDCALL brlapi_strerror </td> <td>(</td> <td class="paramtype">const <a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a> * </td> <td class="paramname"> <em>error</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Get plain error message<p> <a class="el" href="group__brlapi__error.html#g04c3125a4b0f5af895728f36b3852a27">brlapi_strerror()</a> returns the plain error message corresponding to its argument. </div> </div><p> <a class="anchor" name="g05b0559f46f167cb8c8bb606f82bece7"></a><!-- doxytag: member="brlapi.h::brlapi_strexception" ref="g05b0559f46f167cb8c8bb606f82bece7" args="(char *buffer, size_t bufferSize, int error, brlapi_packetType_t type, const void *packet, size_t packetSize)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int BRLAPI_STDCALL brlapi_strexception </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>bufferSize</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>error</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#ge2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>packet</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>packetSize</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Describes an exception<p> <a class="el" href="group__brlapi__error.html#g05b0559f46f167cb8c8bb606f82bece7">brlapi_strexception()</a> puts a text describing the given exception in buffer.<p> The beginning of the guilty packet is dumped as a sequence of hex bytes.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the size of the text describing the exception, following snprintf()'s semantics. </dd></dl> </div> </div><p> <hr><h2>Variable Documentation</h2> <a class="anchor" name="g3a1a7f39b5ef23db92d521b4fc9a890d"></a><!-- doxytag: member="brlapi.h::brlapi_errfun" ref="g3a1a7f39b5ef23db92d521b4fc9a890d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="group__brlapi__error.html#g3a1a7f39b5ef23db92d521b4fc9a890d">brlapi_errfun</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Shorthand for brlapi_error.errfun </div> </div><p> <a class="anchor" name="g3c572493ae2568c5154b1f4f93caa9eb"></a><!-- doxytag: member="brlapi.h::brlapi_errlist" ref="g3c572493ae2568c5154b1f4f93caa9eb" args="[]" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="group__brlapi__error.html#g3c572493ae2568c5154b1f4f93caa9eb">brlapi_errlist</a>[] </td> </tr> </table> </div> <div class="memdoc"> <p> Error message list<p> These are the string constants used by <a class="el" href="group__brlapi__error.html#g5717bfb2ac0e9a906f6b591b9943bd23">brlapi_perror()</a>. </div> </div><p> <a class="anchor" name="gf293f67c594571bb5ad6614eb22c0cb1"></a><!-- doxytag: member="brlapi.h::brlapi_errno" ref="gf293f67c594571bb5ad6614eb22c0cb1" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="group__brlapi__error.html#gf293f67c594571bb5ad6614eb22c0cb1">brlapi_errno</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Shorthand for brlapi_error.errno </div> </div><p> <a class="anchor" name="g93ee012430dc5ca8563404a483cc9610"></a><!-- doxytag: member="brlapi.h::brlapi_error" ref="g93ee012430dc5ca8563404a483cc9610" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a> <a class="el" href="group__brlapi__error.html#g93ee012430dc5ca8563404a483cc9610">brlapi_error</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Global variable brlapi_error<p> <a class="el" href="group__brlapi__error.html#g93ee012430dc5ca8563404a483cc9610">brlapi_error</a> is a global left-value containing the last error information. Its errno field is not reset to BRLERR_SUCCESS on success.<p> This information may be copied in <a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a> variables for later use with the brlapi_strerror function. </div> </div><p> <a class="anchor" name="gbe65d6f2c5968bcfe3708fa9f487566c"></a><!-- doxytag: member="brlapi.h::brlapi_gaierrno" ref="gbe65d6f2c5968bcfe3708fa9f487566c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="group__brlapi__error.html#gbe65d6f2c5968bcfe3708fa9f487566c">brlapi_gaierrno</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Shorthand for brlapi_error.gaierrno </div> </div><p> <a class="anchor" name="g89ebe31438bab6230b4af91fd1e046e2"></a><!-- doxytag: member="brlapi.h::brlapi_libcerrno" ref="g89ebe31438bab6230b4af91fd1e046e2" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="group__brlapi__error.html#g89ebe31438bab6230b4af91fd1e046e2">brlapi_libcerrno</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Shorthand for brlapi_error.libcerrno </div> </div><p> <a class="anchor" name="g4cb4bc3719221e2016e856c63b519790"></a><!-- doxytag: member="brlapi.h::brlapi_nerr" ref="g4cb4bc3719221e2016e856c63b519790" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const int <a class="el" href="group__brlapi__error.html#g4cb4bc3719221e2016e856c63b519790">brlapi_nerr</a> </td> </tr> </table> </div> <div class="memdoc"> <p> Number of error messages </div> </div><p> <hr size="1"><address style="align: right;"><small>Generated on Wed Oct 17 11:27:43 2007 for BrlAPI by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address> </body> </html>