Sophie

Sophie

distrib > Mandriva > 2010.1 > x86_64 > media > main-release > by-pkgid > 78cff6a8ec39f0e621e35b5f5c351f9d > files > 43

lib64brlapi-devel-4.1-1mdv2010.1.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<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.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;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>
</div>
<div class="contents">
<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 &nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g8f89856d403136f505d378091c88c526">BRLAPI_ERROR_SUCCESS</a>&nbsp;&nbsp;&nbsp;0</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gd26ec6a3b47145d4b0714c26867d7346">BRLAPI_ERROR_NOMEM</a>&nbsp;&nbsp;&nbsp;1</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g247688f78749d0624b734b21664e9ff3">BRLAPI_ERROR_TTYBUSY</a>&nbsp;&nbsp;&nbsp;2</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g11f0b3893e41121a28b175e5ae1a540e">BRLAPI_ERROR_DEVICEBUSY</a>&nbsp;&nbsp;&nbsp;3</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#ged526a46be1ee17a34347acc2f514a33">BRLAPI_ERROR_UNKNOWN_INSTRUCTION</a>&nbsp;&nbsp;&nbsp;4</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g81fb10e51c3dec16b3257ba094545f72">BRLAPI_ERROR_ILLEGAL_INSTRUCTION</a>&nbsp;&nbsp;&nbsp;5</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g1105b6b70fca868cdb97fd0e3e7daf79">BRLAPI_ERROR_INVALID_PARAMETER</a>&nbsp;&nbsp;&nbsp;6</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gb140b5cc02ecad533001f4ad9b1f3c3b">BRLAPI_ERROR_INVALID_PACKET</a>&nbsp;&nbsp;&nbsp;7</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gd6ff893fd29673c32ed7ba3552a061eb">BRLAPI_ERROR_CONNREFUSED</a>&nbsp;&nbsp;&nbsp;8</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g527abf61de5b657d1b7b6e1edc457d8f">BRLAPI_ERROR_OPNOTSUPP</a>&nbsp;&nbsp;&nbsp;9</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g4f4412300d0645b9bcf4684c26807008">BRLAPI_ERROR_GAIERR</a>&nbsp;&nbsp;&nbsp;10</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g48a4c142b1cc222f678777ab1aeb7103">BRLAPI_ERROR_LIBCERR</a>&nbsp;&nbsp;&nbsp;11</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g24ae405cffce14acd0d3ae615278b22c">BRLAPI_ERROR_UNKNOWNTTY</a>&nbsp;&nbsp;&nbsp;12</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gde12420f962cdc605ff892b3d8dde695">BRLAPI_ERROR_PROTOCOL_VERSION</a>&nbsp;&nbsp;&nbsp;13</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#gd2d8a091c4f57bd5379227e21d119cce">BRLAPI_ERROR_EOF</a>&nbsp;&nbsp;&nbsp;14</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g88e00cd74b1382651770017050bb7655">BRLAPI_ERROR_EMPTYKEY</a>&nbsp;&nbsp;&nbsp;15</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g28f78e69573f1f2139a78b46221c3c42">BRLAPI_ERROR_DRIVERERROR</a>&nbsp;&nbsp;&nbsp;16</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g2e2945493fe9746abea9d3380f4b36ee">BRLAPI_ERROR_AUTHENTICATION</a>&nbsp;&nbsp;&nbsp;17</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g526102c7af8a8d224165a8063627f815">brlapi_error</a>&nbsp;&nbsp;&nbsp;(*brlapi_error_location())</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g358abf65b23f4ab607e5ad5fde33b77e">brlapi_errno</a>&nbsp;&nbsp;&nbsp;(brlapi_error.brlerrno)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g735f3a4c1aaaff61e11b29c612bcb2eb">brlapi_libcerrno</a>&nbsp;&nbsp;&nbsp;(brlapi_error.libcerrno)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g5df52780e80cccb40727f5d5da0d5b42">brlapi_gaierrno</a>&nbsp;&nbsp;&nbsp;(brlapi_error.gaierrno)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g4de3d0faf1ac3eab59b6799b6ad5faee">brlapi_errfun</a>&nbsp;&nbsp;&nbsp;(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&nbsp;</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 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g08012ab79c3bdccd9a609e5066ce147e">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 *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__brlapi__error.html#g3dbac525048c0c5ff6589b3178f92fd3">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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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#g08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a> <br>
BRLAPI_STDCALL&nbsp;</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#g08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a> handler)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__brlapi__error.html#g3dbac525048c0c5ff6589b3178f92fd3">brlapi__exceptionHandler_t</a> <br>
BRLAPI_STDCALL&nbsp;</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#g3dbac525048c0c5ff6589b3178f92fd3">brlapi__exceptionHandler_t</a> handler)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void BRLAPI_STDCALL&nbsp;</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&nbsp;</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 *&nbsp;</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&nbsp;</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>&nbsp;</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&nbsp;</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&nbsp;</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&nbsp;</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 *&nbsp;</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>&nbsp;&nbsp;&nbsp;(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>&nbsp;&nbsp;&nbsp;(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>&nbsp;&nbsp;&nbsp;(*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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;(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>&nbsp;&nbsp;&nbsp;(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="g3dbac525048c0c5ff6589b3178f92fd3"></a><!-- doxytag: member="brlapi.h::brlapi__exceptionHandler_t" ref="g3dbac525048c0c5ff6589b3178f92fd3" 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#g3dbac525048c0c5ff6589b3178f92fd3">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="g08012ab79c3bdccd9a609e5066ce147e"></a><!-- doxytag: member="brlapi.h::brlapi_exceptionHandler_t" ref="g08012ab79c3bdccd9a609e5066ce147e" 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#g08012ab79c3bdccd9a609e5066ce147e">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>&nbsp;</td><td>is the handle corresponding to the guilty connection; </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>error</em>&nbsp;</td><td>is a BRLAPI_ERROR_ error code; </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>is the type of the guilty packet; </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>packet</em>&nbsp;</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>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>packet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></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#g3dbac525048c0c5ff6589b3178f92fd3">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> *&nbsp;</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#g3dbac525048c0c5ff6589b3178f92fd3">brlapi__exceptionHandler_t</a>&nbsp;</td>
          <td class="paramname"> <em>handler</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></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> *&nbsp;</td>
          <td class="paramname"> <em>handle</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>bufferSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>packet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>packetSize</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></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&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>packet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></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&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></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>&nbsp;</td>
          <td class="paramname"> <em>type</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></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 *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></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#g08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a> BRLAPI_STDCALL brlapi_setExceptionHandler           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__brlapi__error.html#g08012ab79c3bdccd9a609e5066ce147e">brlapi_exceptionHandler_t</a>&nbsp;</td>
          <td class="paramname"> <em>handler</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></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> *&nbsp;</td>
          <td class="paramname"> <em>error</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></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 *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>bufferSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>packet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>packetSize</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></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 BRLAPI_ERROR_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>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Wed Oct 7 22:37:56 2009 for BrlAPI by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>