<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.3.1"/> <title>BrlAPI: Error handling</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">BrlAPI  <span id="projectnumber">1.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.3.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <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> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Macros</a> | <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> | <a href="#var-members">Variables</a> </div> <div class="headertitle"> <div class="title">Error handling</div> </div> </div><!--header--> <div class="contents"> <p>How to handle errors. <a href="#details">More...</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" 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 class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:ga8f89856d403136f505d378091c88c526"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga8f89856d403136f505d378091c88c526">BRLAPI_ERROR_SUCCESS</a>   0</td></tr> <tr class="separator:ga8f89856d403136f505d378091c88c526"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad26ec6a3b47145d4b0714c26867d7346"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gad26ec6a3b47145d4b0714c26867d7346">BRLAPI_ERROR_NOMEM</a>   1</td></tr> <tr class="separator:gad26ec6a3b47145d4b0714c26867d7346"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga247688f78749d0624b734b21664e9ff3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga247688f78749d0624b734b21664e9ff3">BRLAPI_ERROR_TTYBUSY</a>   2</td></tr> <tr class="separator:ga247688f78749d0624b734b21664e9ff3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga11f0b3893e41121a28b175e5ae1a540e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga11f0b3893e41121a28b175e5ae1a540e">BRLAPI_ERROR_DEVICEBUSY</a>   3</td></tr> <tr class="separator:ga11f0b3893e41121a28b175e5ae1a540e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaed526a46be1ee17a34347acc2f514a33"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gaed526a46be1ee17a34347acc2f514a33">BRLAPI_ERROR_UNKNOWN_INSTRUCTION</a>   4</td></tr> <tr class="separator:gaed526a46be1ee17a34347acc2f514a33"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga81fb10e51c3dec16b3257ba094545f72"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga81fb10e51c3dec16b3257ba094545f72">BRLAPI_ERROR_ILLEGAL_INSTRUCTION</a>   5</td></tr> <tr class="separator:ga81fb10e51c3dec16b3257ba094545f72"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga1105b6b70fca868cdb97fd0e3e7daf79"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga1105b6b70fca868cdb97fd0e3e7daf79">BRLAPI_ERROR_INVALID_PARAMETER</a>   6</td></tr> <tr class="separator:ga1105b6b70fca868cdb97fd0e3e7daf79"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gab140b5cc02ecad533001f4ad9b1f3c3b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gab140b5cc02ecad533001f4ad9b1f3c3b">BRLAPI_ERROR_INVALID_PACKET</a>   7</td></tr> <tr class="separator:gab140b5cc02ecad533001f4ad9b1f3c3b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad6ff893fd29673c32ed7ba3552a061eb"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gad6ff893fd29673c32ed7ba3552a061eb">BRLAPI_ERROR_CONNREFUSED</a>   8</td></tr> <tr class="separator:gad6ff893fd29673c32ed7ba3552a061eb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga527abf61de5b657d1b7b6e1edc457d8f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga527abf61de5b657d1b7b6e1edc457d8f">BRLAPI_ERROR_OPNOTSUPP</a>   9</td></tr> <tr class="separator:ga527abf61de5b657d1b7b6e1edc457d8f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga4f4412300d0645b9bcf4684c26807008"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga4f4412300d0645b9bcf4684c26807008">BRLAPI_ERROR_GAIERR</a>   10</td></tr> <tr class="separator:ga4f4412300d0645b9bcf4684c26807008"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga48a4c142b1cc222f678777ab1aeb7103"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga48a4c142b1cc222f678777ab1aeb7103">BRLAPI_ERROR_LIBCERR</a>   11</td></tr> <tr class="separator:ga48a4c142b1cc222f678777ab1aeb7103"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga24ae405cffce14acd0d3ae615278b22c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga24ae405cffce14acd0d3ae615278b22c">BRLAPI_ERROR_UNKNOWNTTY</a>   12</td></tr> <tr class="separator:ga24ae405cffce14acd0d3ae615278b22c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gade12420f962cdc605ff892b3d8dde695"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gade12420f962cdc605ff892b3d8dde695">BRLAPI_ERROR_PROTOCOL_VERSION</a>   13</td></tr> <tr class="separator:gade12420f962cdc605ff892b3d8dde695"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad2d8a091c4f57bd5379227e21d119cce"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gad2d8a091c4f57bd5379227e21d119cce">BRLAPI_ERROR_EOF</a>   14</td></tr> <tr class="separator:gad2d8a091c4f57bd5379227e21d119cce"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga88e00cd74b1382651770017050bb7655"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga88e00cd74b1382651770017050bb7655">BRLAPI_ERROR_EMPTYKEY</a>   15</td></tr> <tr class="separator:ga88e00cd74b1382651770017050bb7655"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga28f78e69573f1f2139a78b46221c3c42"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga28f78e69573f1f2139a78b46221c3c42">BRLAPI_ERROR_DRIVERERROR</a>   16</td></tr> <tr class="separator:ga28f78e69573f1f2139a78b46221c3c42"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga2e2945493fe9746abea9d3380f4b36ee"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga2e2945493fe9746abea9d3380f4b36ee">BRLAPI_ERROR_AUTHENTICATION</a>   17</td></tr> <tr class="separator:ga2e2945493fe9746abea9d3380f4b36ee"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga526102c7af8a8d224165a8063627f815"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga526102c7af8a8d224165a8063627f815">brlapi_error</a>   (*<a class="el" href="group__brlapi__error.html#ga99aad548404f82d2209344db68a08595">brlapi_error_location</a>())</td></tr> <tr class="separator:ga526102c7af8a8d224165a8063627f815"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga358abf65b23f4ab607e5ad5fde33b77e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga358abf65b23f4ab607e5ad5fde33b77e">brlapi_errno</a>   (brlapi_error.brlerrno)</td></tr> <tr class="separator:ga358abf65b23f4ab607e5ad5fde33b77e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga735f3a4c1aaaff61e11b29c612bcb2eb"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga735f3a4c1aaaff61e11b29c612bcb2eb">brlapi_libcerrno</a>   (brlapi_error.libcerrno)</td></tr> <tr class="separator:ga735f3a4c1aaaff61e11b29c612bcb2eb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga5df52780e80cccb40727f5d5da0d5b42"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga5df52780e80cccb40727f5d5da0d5b42">brlapi_gaierrno</a>   (brlapi_error.gaierrno)</td></tr> <tr class="separator:ga5df52780e80cccb40727f5d5da0d5b42"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga4de3d0faf1ac3eab59b6799b6ad5faee"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga4de3d0faf1ac3eab59b6799b6ad5faee">brlapi_errfun</a>   (brlapi_error.errfun)</td></tr> <tr class="separator:ga4de3d0faf1ac3eab59b6799b6ad5faee"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:gae2fac75a86e7a9dc54f4b3c23bc319e9"><td class="memItemLeft" align="right" valign="top">typedef uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a></td></tr> <tr class="separator:gae2fac75a86e7a9dc54f4b3c23bc319e9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga08012ab79c3bdccd9a609e5066ce147e"><td class="memItemLeft" align="right" valign="top">typedef void(<a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a> )(int error, <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td></tr> <tr class="separator:ga08012ab79c3bdccd9a609e5066ce147e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3dbac525048c0c5ff6589b3178f92fd3"><td class="memItemLeft" align="right" valign="top">typedef void(<a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga3dbac525048c0c5ff6589b3178f92fd3">brlapi__exceptionHandler_t</a> )(<a class="el" href="group__brlapi__handles.html#ga57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, int error, <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td></tr> <tr class="separator:ga3dbac525048c0c5ff6589b3178f92fd3"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ga5717bfb2ac0e9a906f6b591b9943bd23"><td class="memItemLeft" align="right" valign="top">void <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga5717bfb2ac0e9a906f6b591b9943bd23">brlapi_perror</a> (const char *s)</td></tr> <tr class="separator:ga5717bfb2ac0e9a906f6b591b9943bd23"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga99aad548404f82d2209344db68a08595"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a> *<a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga99aad548404f82d2209344db68a08595">brlapi_error_location</a> (void)</td></tr> <tr class="separator:ga99aad548404f82d2209344db68a08595"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga04c3125a4b0f5af895728f36b3852a27"><td class="memItemLeft" align="right" valign="top">const char *<a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga04c3125a4b0f5af895728f36b3852a27">brlapi_strerror</a> (const <a class="el" href="structbrlapi__error__t.html">brlapi_error_t</a> *error)</td></tr> <tr class="separator:ga04c3125a4b0f5af895728f36b3852a27"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaf4d79a54121e82b25540de7203463402"><td class="memItemLeft" align="right" valign="top">const char *<a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gaf4d79a54121e82b25540de7203463402">brlapi_getPacketTypeName</a> (<a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type)</td></tr> <tr class="separator:gaf4d79a54121e82b25540de7203463402"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga05b0559f46f167cb8c8bb606f82bece7"><td class="memItemLeft" align="right" valign="top">int <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga05b0559f46f167cb8c8bb606f82bece7">brlapi_strexception</a> (char *buffer, size_t bufferSize, int error, <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t packetSize)</td></tr> <tr class="separator:ga05b0559f46f167cb8c8bb606f82bece7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga6d4ed39756fc3d136ede88e00fc6cc95"><td class="memItemLeft" align="right" valign="top">int <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga6d4ed39756fc3d136ede88e00fc6cc95">brlapi__strexception</a> (<a class="el" href="group__brlapi__handles.html#ga57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, char *buffer, size_t bufferSize, int error, <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t packetSize)</td></tr> <tr class="separator:ga6d4ed39756fc3d136ede88e00fc6cc95"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga7456fc847deec0762b939d44ed9868e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__brlapi__error.html#ga08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a> <br class="typebreak"/> <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga7456fc847deec0762b939d44ed9868e9">brlapi_setExceptionHandler</a> (<a class="el" href="group__brlapi__error.html#ga08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a> handler)</td></tr> <tr class="separator:ga7456fc847deec0762b939d44ed9868e9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gac66629c515afe202d5b8d49ab27e39ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__brlapi__error.html#ga3dbac525048c0c5ff6589b3178f92fd3">brlapi__exceptionHandler_t</a> <br class="typebreak"/> <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gac66629c515afe202d5b8d49ab27e39ea">brlapi__setExceptionHandler</a> (<a class="el" href="group__brlapi__handles.html#ga57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, <a class="el" href="group__brlapi__error.html#ga3dbac525048c0c5ff6589b3178f92fd3">brlapi__exceptionHandler_t</a> handler)</td></tr> <tr class="separator:gac66629c515afe202d5b8d49ab27e39ea"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga1e05f6233aab68e0aca7cd1470e92add"><td class="memItemLeft" align="right" valign="top">void <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga1e05f6233aab68e0aca7cd1470e92add">brlapi_defaultExceptionHandler</a> (int error, <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td></tr> <tr class="separator:ga1e05f6233aab68e0aca7cd1470e92add"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0f58f22d3bf9e6d18adb9af890cb8c19"><td class="memItemLeft" align="right" valign="top">void <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga0f58f22d3bf9e6d18adb9af890cb8c19">brlapi__defaultExceptionHandler</a> (<a class="el" href="group__brlapi__handles.html#ga57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, int error, <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td></tr> <tr class="separator:ga0f58f22d3bf9e6d18adb9af890cb8c19"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a> Variables</h2></td></tr> <tr class="memitem:ga3c572493ae2568c5154b1f4f93caa9eb"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga3c572493ae2568c5154b1f4f93caa9eb">brlapi_errlist</a> []</td></tr> <tr class="separator:ga3c572493ae2568c5154b1f4f93caa9eb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga4cb4bc3719221e2016e856c63b519790"><td class="memItemLeft" align="right" valign="top">const int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga4cb4bc3719221e2016e856c63b519790">brlapi_nerr</a></td></tr> <tr class="separator:ga4cb4bc3719221e2016e856c63b519790"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga93ee012430dc5ca8563404a483cc9610"><td class="memItemLeft" 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#ga93ee012430dc5ca8563404a483cc9610">brlapi_error</a></td></tr> <tr class="separator:ga93ee012430dc5ca8563404a483cc9610"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaf293f67c594571bb5ad6614eb22c0cb1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gaf293f67c594571bb5ad6614eb22c0cb1">brlapi_errno</a></td></tr> <tr class="separator:gaf293f67c594571bb5ad6614eb22c0cb1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga89ebe31438bab6230b4af91fd1e046e2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga89ebe31438bab6230b4af91fd1e046e2">brlapi_libcerrno</a></td></tr> <tr class="separator:ga89ebe31438bab6230b4af91fd1e046e2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gabe65d6f2c5968bcfe3708fa9f487566c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gabe65d6f2c5968bcfe3708fa9f487566c">brlapi_gaierrno</a></td></tr> <tr class="separator:gabe65d6f2c5968bcfe3708fa9f487566c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3a1a7f39b5ef23db92d521b4fc9a890d"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ga3a1a7f39b5ef23db92d521b4fc9a890d">brlapi_errfun</a></td></tr> <tr class="separator:ga3a1a7f39b5ef23db92d521b4fc9a890d"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>When a function fails, <a class="el" href="group__brlapi__error.html#gaf293f67c594571bb5ad6614eb22c0cb1">brlapi_errno</a> will hold an error code to explain why it failed. It should always be reported somehow.</p> <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> <p>The default exception handler (<a class="el" href="group__brlapi__error.html#ga1e05f6233aab68e0aca7cd1470e92add">brlapi_defaultExceptionHandler()</a>) dumps the guilty packet before abort()ing. It can be replaced by calling <a class="el" href="group__brlapi__error.html#ga7456fc847deec0762b939d44ed9868e9">brlapi_setExceptionHandler()</a>. For instance, the Java and Python bindings use this for raising a Java or Python exception that may be caught. </p> <h2 class="groupheader">Macro Definition Documentation</h2> <a class="anchor" id="ga4de3d0faf1ac3eab59b6799b6ad5faee"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define brlapi_errfun   (brlapi_error.errfun)</td> </tr> </table> </div><div class="memdoc"> <p>Cheat about the brlapi_errfun C token </p> </div> </div> <a class="anchor" id="ga358abf65b23f4ab607e5ad5fde33b77e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define brlapi_errno   (brlapi_error.brlerrno)</td> </tr> </table> </div><div class="memdoc"> <p>Cheat about the brlapi_errno C token </p> </div> </div> <a class="anchor" id="ga526102c7af8a8d224165a8063627f815"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define brlapi_error   (*<a class="el" href="group__brlapi__error.html#ga99aad548404f82d2209344db68a08595">brlapi_error_location</a>())</td> </tr> </table> </div><div class="memdoc"> <p>Cheat about the brlapi_error C token </p> </div> </div> <a class="anchor" id="ga2e2945493fe9746abea9d3380f4b36ee"></a> <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 </p> </div> </div> <a class="anchor" id="gad6ff893fd29673c32ed7ba3552a061eb"></a> <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 </p> </div> </div> <a class="anchor" id="ga11f0b3893e41121a28b175e5ae1a540e"></a> <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 </p> </div> </div> <a class="anchor" id="ga28f78e69573f1f2139a78b46221c3c42"></a> <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 </p> </div> </div> <a class="anchor" id="ga88e00cd74b1382651770017050bb7655"></a> <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 </p> </div> </div> <a class="anchor" id="gad2d8a091c4f57bd5379227e21d119cce"></a> <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 </p> </div> </div> <a class="anchor" id="ga4f4412300d0645b9bcf4684c26807008"></a> <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 </p> </div> </div> <a class="anchor" id="ga81fb10e51c3dec16b3257ba094545f72"></a> <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 </p> </div> </div> <a class="anchor" id="gab140b5cc02ecad533001f4ad9b1f3c3b"></a> <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 </p> </div> </div> <a class="anchor" id="ga1105b6b70fca868cdb97fd0e3e7daf79"></a> <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 </p> </div> </div> <a class="anchor" id="ga48a4c142b1cc222f678777ab1aeb7103"></a> <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 </p> </div> </div> <a class="anchor" id="gad26ec6a3b47145d4b0714c26867d7346"></a> <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 </p> </div> </div> <a class="anchor" id="ga527abf61de5b657d1b7b6e1edc457d8f"></a> <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 </p> </div> </div> <a class="anchor" id="gade12420f962cdc605ff892b3d8dde695"></a> <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 </p> </div> </div> <a class="anchor" id="ga8f89856d403136f505d378091c88c526"></a> <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 </p> </div> </div> <a class="anchor" id="ga247688f78749d0624b734b21664e9ff3"></a> <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 </p> </div> </div> <a class="anchor" id="gaed526a46be1ee17a34347acc2f514a33"></a> <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 </p> </div> </div> <a class="anchor" id="ga24ae405cffce14acd0d3ae615278b22c"></a> <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 </p> </div> </div> <a class="anchor" id="ga5df52780e80cccb40727f5d5da0d5b42"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define brlapi_gaierrno   (brlapi_error.gaierrno)</td> </tr> </table> </div><div class="memdoc"> <p>Cheat about the brlapi_gaierrno C token </p> </div> </div> <a class="anchor" id="ga735f3a4c1aaaff61e11b29c612bcb2eb"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define brlapi_libcerrno   (brlapi_error.libcerrno)</td> </tr> </table> </div><div class="memdoc"> <p>Cheat about the brlapi_libcerrno C token </p> </div> </div> <h2 class="groupheader">Typedef Documentation</h2> <a class="anchor" id="ga3dbac525048c0c5ff6589b3178f92fd3"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(<a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> * brlapi__exceptionHandler_t)(<a class="el" href="group__brlapi__handles.html#ga57f2aec62b18f8aefea2ab550744b0c1">brlapi_handle_t</a> *handle, int error, <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="ga08012ab79c3bdccd9a609e5066ce147e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(<a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> * brlapi_exceptionHandler_t)(int error, <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> type, const void *packet, size_t size)</td> </tr> </table> </div><div class="memdoc"> <p>Types for exception handlers</p> <p>Types of exception handlers which are to be given to <a class="el" href="group__brlapi__error.html#ga7456fc847deec0762b939d44ed9868e9">brlapi_setExceptionHandler()</a> and <a class="el" href="group__brlapi__error.html#gac66629c515afe202d5b8d49ab27e39ea">brlapi__setExceptionHandler()</a>.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">handle</td><td>is the handle corresponding to the guilty connection; </td></tr> <tr><td class="paramname">error</td><td>is a BRLAPI_ERROR_ error code; </td></tr> <tr><td class="paramname">type</td><td>is the type of the guilty packet; </td></tr> <tr><td class="paramname">packet</td><td>points to the content of the guilty packet (might be a little bit truncated); </td></tr> <tr><td class="paramname">size</td><td>gives the guilty packet's size. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="gae2fac75a86e7a9dc54f4b3c23bc319e9"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef uint32_t <a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a></td> </tr> </table> </div><div class="memdoc"> <p>Type for packet type. Only unsigned can cross networks, 32bits </p> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="ga0f58f22d3bf9e6d18adb9af890cb8c19"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> brlapi__defaultExceptionHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__handles.html#ga57f2aec62b18f8aefea2ab550744b0c1">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#gae2fac75a86e7a9dc54f4b3c23bc319e9">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> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="gac66629c515afe202d5b8d49ab27e39ea"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__brlapi__error.html#ga3dbac525048c0c5ff6589b3178f92fd3">brlapi__exceptionHandler_t</a> <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> brlapi__setExceptionHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__handles.html#ga57f2aec62b18f8aefea2ab550744b0c1">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#ga3dbac525048c0c5ff6589b3178f92fd3">brlapi__exceptionHandler_t</a> </td> <td class="paramname"><em>handler</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="ga6d4ed39756fc3d136ede88e00fc6cc95"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> brlapi__strexception </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__handles.html#ga57f2aec62b18f8aefea2ab550744b0c1">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#gae2fac75a86e7a9dc54f4b3c23bc319e9">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> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="ga1e05f6233aab68e0aca7cd1470e92add"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> 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#gae2fac75a86e7a9dc54f4b3c23bc319e9">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> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="ga99aad548404f82d2209344db68a08595"></a> <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="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> brlapi_error_location </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get per-thread error location</p> <p>In multithreaded software, <a class="el" href="group__brlapi__error.html#ga93ee012430dc5ca8563404a483cc9610">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#ga99aad548404f82d2209344db68a08595">brlapi_error_location()</a>.</p> <p>This gets the thread specific location of global variable <a class="el" href="group__brlapi__error.html#ga93ee012430dc5ca8563404a483cc9610">brlapi_error</a> </p> </div> </div> <a class="anchor" id="gaf4d79a54121e82b25540de7203463402"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> brlapi_getPacketTypeName </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#gae2fac75a86e7a9dc54f4b3c23bc319e9">brlapi_packetType_t</a> </td> <td class="paramname"><em>type</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Get plain packet type</p> <p><a class="el" href="group__brlapi__error.html#gaf4d79a54121e82b25540de7203463402">brlapi_getPacketTypeName()</a> returns the plain packet type name corresponding to its argument. </p> </div> </div> <a class="anchor" id="ga5717bfb2ac0e9a906f6b591b9943bd23"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> brlapi_perror </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>s</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Print a BrlAPI error message</p> <p><a class="el" href="group__brlapi__error.html#ga5717bfb2ac0e9a906f6b591b9943bd23">brlapi_perror()</a> reads <a class="el" href="group__brlapi__error.html#ga93ee012430dc5ca8563404a483cc9610">brlapi_error</a>, and acts just like perror(). </p> </div> </div> <a class="anchor" id="ga7456fc847deec0762b939d44ed9868e9"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__brlapi__error.html#ga08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a> <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> brlapi_setExceptionHandler </td> <td>(</td> <td class="paramtype"><a class="el" href="group__brlapi__error.html#ga08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a> </td> <td class="paramname"><em>handler</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Set a new exception handler</p> <p><a class="el" href="group__brlapi__error.html#ga7456fc847deec0762b939d44ed9868e9">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> <p>The default handler just prints the exception and abort()s. </p> </div> </div> <a class="anchor" id="ga04c3125a4b0f5af895728f36b3852a27"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> 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></td> </tr> </table> </div><div class="memdoc"> <p>Get plain error message</p> <p><a class="el" href="group__brlapi__error.html#ga04c3125a4b0f5af895728f36b3852a27">brlapi_strerror()</a> returns the plain error message corresponding to its argument. </p> </div> </div> <a class="anchor" id="ga05b0559f46f167cb8c8bb606f82bece7"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="brlapi_8h.html#aaf61afab5ea0f7574217a09dba040428">BRLAPI_STDCALL</a> 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#gae2fac75a86e7a9dc54f4b3c23bc319e9">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> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Describes an exception</p> <p><a class="el" href="group__brlapi__error.html#ga05b0559f46f167cb8c8bb606f82bece7">brlapi_strexception()</a> puts a text describing the given exception in buffer.</p> <p>The beginning of the guilty packet is dumped as a sequence of hex bytes.</p> <dl class="section return"><dt>Returns</dt><dd>the size of the text describing the exception, following snprintf()'s semantics. </dd></dl> </div> </div> <h2 class="groupheader">Variable Documentation</h2> <a class="anchor" id="ga3a1a7f39b5ef23db92d521b4fc9a890d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* brlapi_errfun</td> </tr> </table> </div><div class="memdoc"> <p>Shorthand for brlapi_error.errfun </p> </div> </div> <a class="anchor" id="ga3c572493ae2568c5154b1f4f93caa9eb"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* brlapi_errlist[]</td> </tr> </table> </div><div class="memdoc"> <p>Error message list</p> <p>These are the string constants used by <a class="el" href="group__brlapi__error.html#ga5717bfb2ac0e9a906f6b591b9943bd23">brlapi_perror()</a>. </p> </div> </div> <a class="anchor" id="gaf293f67c594571bb5ad6614eb22c0cb1"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int brlapi_errno</td> </tr> </table> </div><div class="memdoc"> <p>Shorthand for brlapi_error.errno </p> </div> </div> <a class="anchor" id="ga93ee012430dc5ca8563404a483cc9610"></a> <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_error</td> </tr> </table> </div><div class="memdoc"> <p>Global variable brlapi_error</p> <p><a class="el" href="group__brlapi__error.html#ga93ee012430dc5ca8563404a483cc9610">brlapi_error</a> is a global left-value containing the last error information. Its errno field is not reset to BRLAPI_ERROR_SUCCESS on success.</p> <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. </p> </div> </div> <a class="anchor" id="gabe65d6f2c5968bcfe3708fa9f487566c"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int brlapi_gaierrno</td> </tr> </table> </div><div class="memdoc"> <p>Shorthand for brlapi_error.gaierrno </p> </div> </div> <a class="anchor" id="ga89ebe31438bab6230b4af91fd1e046e2"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int brlapi_libcerrno</td> </tr> </table> </div><div class="memdoc"> <p>Shorthand for brlapi_error.libcerrno </p> </div> </div> <a class="anchor" id="ga4cb4bc3719221e2016e856c63b519790"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const int brlapi_nerr</td> </tr> </table> </div><div class="memdoc"> <p>Number of error messages </p> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.3.1 </small></address> </body> </html>