Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > ce0cb4aec597dde3226843045ded906f > files > 201

freetds-doc-0.91-1.fc14.x86_64.rpm

<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>FreeTDS API: Internals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Internals<br/>
<small>
[<a class="el" href="a00285.html">The db-lib API</a>]</small>
</h1>
<p>Functions called within <code>db-lib</code> for self-help.  
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00027.html">_dblib_error_message</a></td></tr>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gae52fc525116a3491c7e1092ad8257767">DBSETLLABELED</a>(x, y)&nbsp;&nbsp;&nbsp;dbsetlbool((x), (y), DBSETLABELED)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Alternative way to set login packet fields.  <a href="#gae52fc525116a3491c7e1092ad8257767"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga7306859300823c120d807108a061c45a">DBSETLVERSION</a>(login, version)&nbsp;&nbsp;&nbsp;dbsetlversion((login), (version))</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">maps to the Microsoft (lower-case) function.  <a href="#ga7306859300823c120d807108a061c45a"></a><br/></td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a00027.html">_dblib_error_message</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga73ccf3a130f836159e43074544f338e3">DBLIB_ERROR_MESSAGE</a></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gadf15185b0d417edc0bb8a6a4f0bae727">_dblib_check_and_handle_interrupt</a> (void *vdbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">check interrupts for libtds.  <a href="#gadf15185b0d417edc0bb8a6a4f0bae727"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga196f6d67de47f34a32fcc2103ab0f416">dbcmdrow</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if the current command can return rows.  <a href="#ga196f6d67de47f34a32fcc2103ab0f416"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga01e7fb38bece3bb07526532fa6be50e5">dbcurcmd</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of the row just returned.  <a href="#ga01e7fb38bece3bb07526532fa6be50e5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">DBINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga9e23a95d84192b4fc83db7544d772d16">dbcurrow</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of the row currently being read.  <a href="#ga9e23a95d84192b4fc83db7544d772d16"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">DBBOOL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gaed43cb21ed54dc1a6340075d6290e4b0">dbdead</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if <em>dbproc</em> is an ex-parrot.  <a href="#gaed43cb21ed54dc1a6340075d6290e4b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">DBINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gaf40b925f3b3ba43804720dd4ae584935">dbfirstrow</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if a server response has arrived.  <a href="#gaf40b925f3b3ba43804720dd4ae584935"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gab842baac0ec420b265d8c199cc45059d">dbiordesc</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get file descriptor of the socket used by a <code>DBPROCESS</code> to read data coming from the server. (!).  <a href="#gab842baac0ec420b265d8c199cc45059d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga666a4d0609ee7f241deb0a62893d2cfa">dbiowdesc</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get file descriptor of the socket used by a <code>DBPROCESS</code> to write data coming to the server. (!).  <a href="#ga666a4d0609ee7f241deb0a62893d2cfa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">DBINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga13ead146339b43b3a4d9049eb124ef4b">dblastrow</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of the last row in the row buffer.  <a href="#ga13ead146339b43b3a4d9049eb124ef4b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga302a4ce6559b81808e3be51615cd1b67">dbperror</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, DBINT msgno, long errnum,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Call client-installed error handler.  <a href="#ga302a4ce6559b81808e3be51615cd1b67"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga4be2ab59dc7161d6b93c17202e7ae9b1">dbrows</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicate whether a query returned rows.  <a href="#ga4be2ab59dc7161d6b93c17202e7ae9b1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">STATUS&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gaa2dc8c062342f76adffe53ee280b7fb4">dbrowtype</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get returned row's type.  <a href="#gaa2dc8c062342f76adffe53ee280b7fb4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga5ce245ff327a3d333280fe7b43d69ded">dbsetavail</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mark a <code>DBPROCESS</code> as "available".  <a href="#ga5ce245ff327a3d333280fe7b43d69ded"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga03e850369aca6fba074da5e9da4effd7">dbsetlbool</a> (<a class="el" href="a00070.html">LOGINREC</a> *login, int value, int which)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a boolean value in a <code><a class="el" href="a00070.html">LOGINREC</a></code> structure.  <a href="#ga03e850369aca6fba074da5e9da4effd7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gabdcccf4e0d093ff48c0e7048a4bfaf84">dbsetllong</a> (<a class="el" href="a00070.html">LOGINREC</a> *login, long value, int which)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an integer value in a <code><a class="el" href="a00070.html">LOGINREC</a></code> structure.  <a href="#gabdcccf4e0d093ff48c0e7048a4bfaf84"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gae1fc46447c4f8a9ff7f66607b8cd23b6">dbsetlname</a> (<a class="el" href="a00070.html">LOGINREC</a> *login, const char *value, int which)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the value of a string in a <code><a class="el" href="a00070.html">LOGINREC</a></code> structure.  <a href="#gae1fc46447c4f8a9ff7f66607b8cd23b6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga8d765d810a40dfa01b39995a8e7406f0">dbtds</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the TDS version in use for <em>dbproc</em>.  <a href="#ga8d765d810a40dfa01b39995a8e7406f0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#gaccbc6d98d9528c48cf0254d809ca73ff">default_err_handler</a> (<a class="el" href="a00098.html">DBPROCESS</a> *dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">default error handler for db-lib (handles library-generated errors)  <a href="#gaccbc6d98d9528c48cf0254d809ca73ff"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00292.html#ga2c99ec565452279e9a382451d89642eb">tdsdbopen</a> (<a class="el" href="a00070.html">LOGINREC</a> *login, const char *server, int msdblib)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Form a connection with the server.  <a href="#ga2c99ec565452279e9a382451d89642eb"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Functions called within <code>db-lib</code> for self-help. </p>
<p>These functions are of interest only to people hacking on the FreeTDS db-lib implementation. </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gae52fc525116a3491c7e1092ad8257767"></a><!-- doxytag: member="sybdb.h::DBSETLLABELED" ref="gae52fc525116a3491c7e1092ad8257767" args="(x, y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DBSETLLABELED</td>
          <td>(</td>
          <td class="paramtype">x, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">y&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;dbsetlbool((x), (y), DBSETLABELED)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Alternative way to set login packet fields. </p>
<dl class="see"><dt><b>See also:</b></dt><dd>dbsetllabeled() </dd></dl>

</div>
</div>
<a class="anchor" id="ga7306859300823c120d807108a061c45a"></a><!-- doxytag: member="sybdb.h::DBSETLVERSION" ref="ga7306859300823c120d807108a061c45a" args="(login, version)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DBSETLVERSION</td>
          <td>(</td>
          <td class="paramtype">login, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">version&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;dbsetlversion((login), (version))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>maps to the Microsoft (lower-case) function. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gaa22dce1ee0eb83059699c34c47d07c14" title="Set TDS version for future connections.">dbsetlversion()</a> </dd></dl>

</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga73ccf3a130f836159e43074544f338e3"></a><!-- doxytag: member="dblib.c::DBLIB_ERROR_MESSAGE" ref="ga73ccf3a130f836159e43074544f338e3" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a00027.html">_dblib_error_message</a>  <a class="el" href="a00027.html">DBLIB_ERROR_MESSAGE</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><b>For internal use only.</b></p>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>member msgno Vendor-defined message number </dd>
<dd>
member severity Is passed to the error handler </dd>
<dd>
member msgtext Text of message </dd></dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gadf15185b0d417edc0bb8a6a4f0bae727"></a><!-- doxytag: member="dbutil.c::_dblib_check_and_handle_interrupt" ref="gadf15185b0d417edc0bb8a6a4f0bae727" args="(void *vdbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int _dblib_check_and_handle_interrupt </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>vdbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>check interrupts for libtds. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>vdbproc</em>&nbsp;</td><td>a DBPROCESS pointer, contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga2c7b5eec4843ea326b21f2db2ded2754" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBDEAD()</a>, <a class="el" href="a00286.html#ga335fcbe476ad0f897e4e2ce377f0a8cc" title="Set interrupt handler for db-lib to use while blocked against a read from the server...">dbsetinterrupt()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga196f6d67de47f34a32fcc2103ab0f416"></a><!-- doxytag: member="dblib.c::dbcmdrow" ref="ga196f6d67de47f34a32fcc2103ab0f416" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">RETCODE dbcmdrow </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if the current command can return rows. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SUCCEED</em>&nbsp;</td><td>Yes, it can. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>FAIL</em>&nbsp;</td><td>No, it can't. </td></tr>
  </table>
  </dd>
</dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Use <a class="el" href="a00286.html#ga8b263669ce0312e52b5ea42a57a56838" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBCMDROW()</a> macro instead. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga8b263669ce0312e52b5ea42a57a56838" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBCMDROW()</a>, <a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00286.html#ga48d71b32c26703c810191ef916c5448c" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBROWS()</a>, <a class="el" href="a00286.html#ga6fda3f4982dda5825d13fee392e89fd9" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBROWTYPE()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga01e7fb38bece3bb07526532fa6be50e5"></a><!-- doxytag: member="dblib.c::dbcurcmd" ref="ga01e7fb38bece3bb07526532fa6be50e5" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dbcurcmd </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get number of the row just returned. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gaf49e4b58918bfa4d4adaa14ee5bb375c" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBCURROW()</a>. </dd></dl>
<dl class="todo"><dt><b><a class="el" href="a00306.html#_todo000015">Todo:</a></b></dt><dd>Unimplemented. </dd></dl>

</div>
</div>
<a class="anchor" id="ga9e23a95d84192b4fc83db7544d772d16"></a><!-- doxytag: member="dblib.c::dbcurrow" ref="ga9e23a95d84192b4fc83db7544d772d16" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DBINT dbcurrow </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get number of the row currently being read. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>ostensibly the row number, or 0 if no rows have been read yet. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Always. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gaf49e4b58918bfa4d4adaa14ee5bb375c" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBCURROW()</a>, <a class="el" href="a00286.html#ga01404b179a251c249aecfdae72ec6ca4" title="Clear n rows from the row buffer.">dbclrbuf()</a>, <a class="el" href="a00286.html#ga97a6493786124215ec9fe4b4bd2d7cbb" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBFIRSTROW()</a>, <a class="el" href="a00286.html#ga60fe544491c760f8bc6c37bc7f777d70" title="Read a row from the row buffer.">dbgetrow()</a>, <a class="el" href="a00286.html#ga10b9b26cf9a901146e9675a9e678632b" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBLASTROW()</a>, <a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00286.html#ga9d660d278f3f58871b4086c0e175f4c6" title="Set db-lib or server option.">dbsetopt()</a>,. </dd></dl>
<dl class="todo"><dt><b><a class="el" href="a00306.html#_todo000014">Todo:</a></b></dt><dd>Unimplemented. </dd></dl>

</div>
</div>
<a class="anchor" id="gaed43cb21ed54dc1a6340075d6290e4b0"></a><!-- doxytag: member="dblib.c::dbdead" ref="gaed43cb21ed54dc1a6340075d6290e4b0" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DBBOOL dbdead </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check if <em>dbproc</em> is an ex-parrot. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>TRUE</em>&nbsp;</td><td>process has been marked <em>dead</em>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>FALSE</em>&nbsp;</td><td>process is OK. </td></tr>
  </table>
  </dd>
</dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd><a class="el" href="a00292.html#gaed43cb21ed54dc1a6340075d6290e4b0" title="Check if dbproc is an ex-parrot.">dbdead()</a> does not communicate with the server. Unless a previously db-lib marked <em>dbproc</em> <em>dead</em>, <a class="el" href="a00292.html#gaed43cb21ed54dc1a6340075d6290e4b0" title="Check if dbproc is an ex-parrot.">dbdead()</a> returns <code>FALSE</code>. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gab8209543de865f359bdb32829fa8b757" title="Set an error handler, for messages from db-lib.">dberrhandle()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf40b925f3b3ba43804720dd4ae584935"></a><!-- doxytag: member="dblib.c::dbfirstrow" ref="gaf40b925f3b3ba43804720dd4ae584935" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DBINT dbfirstrow </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if a server response has arrived. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>milliseconds</em>&nbsp;</td><td>how long to wait for the server before returning:</p>
<ul>
<li><code>0</code> return immediately.</li>
<li><code>-1</code> do not return until the server responds or a system interrupt occurs. </li>
</ul>
</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ready_dbproc</em>&nbsp;</td><td><em>output:</em> DBPROCESS for which a response arrived, of <code>NULL</code>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>return_reason</em>&nbsp;</td><td><em>output:</em> </p>
<ul>
<li><code>DBRESULT</code> server responded.</li>
<li><code>DBNOTIFICATION</code> registered procedure notification has arrived. dbpoll() the registered handler, if any, before it returns.</li>
<li><code>DBTIMEOUT</code> <em>milliseconds</em> elapsed before the server responded.</li>
<li><code>DBINTERRUPT</code> operating-system interrupt occurred before the server responded. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SUCCEED</em>&nbsp;</td><td>everything worked. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>FAIL</em>&nbsp;</td><td>a server connection died. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga74ac942f9b7baa49e1d7d18628321297" title="Sybase macro, maps to the internal (lower-case) function.">DBIORDESC()</a>, DBRBUF(), <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, dbreghandle(), <a class="el" href="a00286.html#gae1f50a6a2c31fda57cb481922b06841e" title="Wait for results of a query from the server.">dbsqlok()</a>. </dd></dl>
<dl class="todo"><dt><b><a class="el" href="a00306.html#_todo000017">Todo:</a></b></dt><dd>Unimplemented. </dd></dl>
<p><b>For internal use only.</b></p>
<p>Get number of the first row in the row buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga97a6493786124215ec9fe4b4bd2d7cbb" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBFIRSTROW()</a>, <a class="el" href="a00286.html#ga01404b179a251c249aecfdae72ec6ca4" title="Clear n rows from the row buffer.">dbclrbuf()</a>, <a class="el" href="a00286.html#gaf49e4b58918bfa4d4adaa14ee5bb375c" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBCURROW()</a>, <a class="el" href="a00286.html#ga60fe544491c760f8bc6c37bc7f777d70" title="Read a row from the row buffer.">dbgetrow()</a>, <a class="el" href="a00286.html#ga10b9b26cf9a901146e9675a9e678632b" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBLASTROW()</a>, <a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00286.html#ga9d660d278f3f58871b4086c0e175f4c6" title="Set db-lib or server option.">dbsetopt()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gab842baac0ec420b265d8c199cc45059d"></a><!-- doxytag: member="dblib.c::dbiordesc" ref="gab842baac0ec420b265d8c199cc45059d" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dbiordesc </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get file descriptor of the socket used by a <code>DBPROCESS</code> to read data coming from the server. (!). </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga87b39d9863316b4ba85654b0885d53a0" title="Append SQL to the command buffer.">dbcmd()</a>, <a class="el" href="a00286.html#ga74ac942f9b7baa49e1d7d18628321297" title="Sybase macro, maps to the internal (lower-case) function.">DBIORDESC()</a>, <a class="el" href="a00286.html#ga5afb13924cda059d30be36a70dcf2cd9" title="Sybase macro, maps to the internal (lower-case) function.">DBIOWDESC()</a>, <a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, dbpoll(), DBRBUF(), <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00286.html#gae1f50a6a2c31fda57cb481922b06841e" title="Wait for results of a query from the server.">dbsqlok()</a>, <a class="el" href="a00286.html#gac980139b9cea03cf93e373d425991481" title="Transmit the command buffer to the server.">dbsqlsend()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga666a4d0609ee7f241deb0a62893d2cfa"></a><!-- doxytag: member="dblib.c::dbiowdesc" ref="ga666a4d0609ee7f241deb0a62893d2cfa" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dbiowdesc </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get file descriptor of the socket used by a <code>DBPROCESS</code> to write data coming to the server. (!). </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga87b39d9863316b4ba85654b0885d53a0" title="Append SQL to the command buffer.">dbcmd()</a>, <a class="el" href="a00286.html#ga74ac942f9b7baa49e1d7d18628321297" title="Sybase macro, maps to the internal (lower-case) function.">DBIORDESC()</a>, <a class="el" href="a00286.html#ga5afb13924cda059d30be36a70dcf2cd9" title="Sybase macro, maps to the internal (lower-case) function.">DBIOWDESC()</a>, <a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, dbpoll(), DBRBUF(), <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00286.html#gae1f50a6a2c31fda57cb481922b06841e" title="Wait for results of a query from the server.">dbsqlok()</a>, <a class="el" href="a00286.html#gac980139b9cea03cf93e373d425991481" title="Transmit the command buffer to the server.">dbsqlsend()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga13ead146339b43b3a4d9049eb124ef4b"></a><!-- doxytag: member="dblib.c::dblastrow" ref="ga13ead146339b43b3a4d9049eb124ef4b" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DBINT dblastrow </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get number of the last row in the row buffer. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga10b9b26cf9a901146e9675a9e678632b" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBLASTROW()</a>, <a class="el" href="a00286.html#ga01404b179a251c249aecfdae72ec6ca4" title="Clear n rows from the row buffer.">dbclrbuf()</a>, <a class="el" href="a00286.html#gaf49e4b58918bfa4d4adaa14ee5bb375c" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBCURROW()</a>, <a class="el" href="a00286.html#ga97a6493786124215ec9fe4b4bd2d7cbb" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBFIRSTROW()</a>, <a class="el" href="a00286.html#ga60fe544491c760f8bc6c37bc7f777d70" title="Read a row from the row buffer.">dbgetrow()</a>, <a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00286.html#ga9d660d278f3f58871b4086c0e175f4c6" title="Set db-lib or server option.">dbsetopt()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga302a4ce6559b81808e3be51615cd1b67"></a><!-- doxytag: member="dblib.c::dbperror" ref="ga302a4ce6559b81808e3be51615cd1b67" args="(DBPROCESS *dbproc, DBINT msgno, long errnum,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dbperror </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">DBINT&nbsp;</td>
          <td class="paramname"> <em>msgno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>errnum</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Call client-installed error handler. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>msgno</em>&nbsp;</td><td>identifies the error message to be passed to the client's handler. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>errnum</em>&nbsp;</td><td>identifies the OS error (errno), if any. Use 0 if not applicable. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the handler's return code, subject to correction and adjustment for vendor style:<ul>
<li>INT_CANCEL The db-lib function that encountered the error will return FAIL.</li>
<li>INT_TIMEOUT The db-lib function will cancel the operation and return FAIL. <em>dbproc</em> remains useable.</li>
<li>INT_CONTINUE The db-lib function will retry the operation. </li>
</ul>
</dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>The client-installed handler may also return INT_EXIT. If Sybase semantics are used, this function notifies the user and calls exit(3). If Microsoft semantics are used, this function returns INT_CANCEL.</dd></dl>
<p>If the client-installed handler returns something other than these four INT_* values, or returns timeout-related value for anything but SYBETIME, it's treated here as INT_EXIT (see above).</p>
<p>Instead of sprinkling error text all over db-lib, we consolidate it here, where it can be translated (one day), and where it can be mapped to the TDS error number. The libraries don't use consistent error numbers or messages, so when libtds has to emit an error message, it can't include the text. It can pass its error number to a client-library function, which will interpret it, add the text, call the application's installed handler (if any) and return the handler's return code back to the caller.</p>
<p>The call stack may look something like this:</p>
<ol type="1">
<li>application</li>
<li>db-lib function (encounters error)</li>
<li>dbperror</li>
<li>error handler (installed by application)</li>
</ol>
<p>The error handling in this case is unambiguous: the caller invokes this function, the client's handler returns its instruction, which the caller receives. Quite often the caller will get INT_CANCEL, in which case it should put its house in order and return FAIL.</p>
<p>The call stack may otherwise look something like this:</p>
<ol type="1">
<li>application</li>
<li>db-lib function</li>
<li>libtds function (encounters error)</li>
<li>_dblib_handle_err_message</li>
<li>dbperror</li>
<li>error handler (installed by application)</li>
</ol>
<p>Because different client libraries specify their handler semantics differently, and because libtds doesn't know which client library is in charge of any given connection, it cannot interpret the raw return code from a db-lib error handler. For these reasons, libtds calls _dblib_handle_err_message, which translates between libtds and db-lib semantics. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#gab8209543de865f359bdb32829fa8b757" title="Set an error handler, for messages from db-lib.">dberrhandle()</a>, _dblib_handle_err_message(). </dd></dl>

</div>
</div>
<a class="anchor" id="ga4be2ab59dc7161d6b93c17202e7ae9b1"></a><!-- doxytag: member="dblib.c::dbrows" ref="ga4be2ab59dc7161d6b93c17202e7ae9b1" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">RETCODE dbrows </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Indicate whether a query returned rows. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga48d71b32c26703c810191ef916c5448c" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBROWS()</a>, <a class="el" href="a00286.html#ga8b263669ce0312e52b5ea42a57a56838" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBCMDROW()</a>, <a class="el" href="a00286.html#gac67e6a022bb81195a120397ade07f5dd" title="Read result row into the row buffer and into any bound host variables.">dbnextrow()</a>, <a class="el" href="a00286.html#ga4e26d949be2c3bf71b1a33c75b11d931" title="Set up query results.">dbresults()</a>, <a class="el" href="a00286.html#ga6fda3f4982dda5825d13fee392e89fd9" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBROWTYPE()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaa2dc8c062342f76adffe53ee280b7fb4"></a><!-- doxytag: member="dblib.c::dbrowtype" ref="gaa2dc8c062342f76adffe53ee280b7fb4" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">STATUS dbrowtype </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get returned row's type. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga6fda3f4982dda5825d13fee392e89fd9" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBROWTYPE()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga5ce245ff327a3d333280fe7b43d69ded"></a><!-- doxytag: member="dblib.c::dbsetavail" ref="ga5ce245ff327a3d333280fe7b43d69ded" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dbsetavail </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Mark a <code>DBPROCESS</code> as "available". </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Basically bogus. <code>FreeTDS</code> behaves the way Sybase's implementation does, but so what? Many <code>db-lib</code> functions set the <code>DBPROCESS</code> to "not available", but only <a class="el" href="a00292.html#ga5ce245ff327a3d333280fe7b43d69ded" title="Mark a DBPROCESS as &quot;available&quot;.">dbsetavail()</a> resets it to "available". </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga40f6c951a851744e58ee715c652a8ac8" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBISAVAIL()</a>. DBSETAVAIL(). </dd></dl>

</div>
</div>
<a class="anchor" id="ga03e850369aca6fba074da5e9da4effd7"></a><!-- doxytag: member="dblib.c::dbsetlbool" ref="ga03e850369aca6fba074da5e9da4effd7" args="(LOGINREC *login, int value, int which)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">RETCODE dbsetlbool </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00070.html">LOGINREC</a> *&nbsp;</td>
          <td class="paramname"> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>which</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a boolean value in a <code><a class="el" href="a00070.html">LOGINREC</a></code> structure. </p>
<p><b>For internal use only.</b></p>
<p>Called by various macros to populate <em>login</em>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>login</em>&nbsp;</td><td>the <code>LOGINREC*</code> to modify. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set it to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>which</em>&nbsp;</td><td>the field to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Only DBSETBCP is implemented. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SUCCEED</em>&nbsp;</td><td>the value was set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>FAIL</em>&nbsp;</td><td>invalid value passed for <em>which</em>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="todo"><dt><b><a class="el" href="a00306.html#_todo000004">Todo:</a></b></dt><dd>DBSETNOSHORT, DBSETENCRYPT, DBSETLABELED </dd></dl>

</div>
</div>
<a class="anchor" id="gabdcccf4e0d093ff48c0e7048a4bfaf84"></a><!-- doxytag: member="dblib.c::dbsetllong" ref="gabdcccf4e0d093ff48c0e7048a4bfaf84" args="(LOGINREC *login, long value, int which)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">RETCODE dbsetllong </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00070.html">LOGINREC</a> *&nbsp;</td>
          <td class="paramname"> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>which</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set an integer value in a <code><a class="el" href="a00070.html">LOGINREC</a></code> structure. </p>
<p><b>For internal use only.</b></p>
<p>Called by various macros to populate <em>login</em>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>login</em>&nbsp;</td><td>the <code>LOGINREC*</code> to modify. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set it to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>which</em>&nbsp;</td><td>the field to set. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SUCCEED</em>&nbsp;</td><td>the value was set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>FAIL</em>&nbsp;</td><td>anything other than <code>DBSETPACKET</code> was passed for <em>which</em>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae1fc46447c4f8a9ff7f66607b8cd23b6"></a><!-- doxytag: member="dblib.c::dbsetlname" ref="gae1fc46447c4f8a9ff7f66607b8cd23b6" args="(LOGINREC *login, const char *value, int which)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">RETCODE dbsetlname </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00070.html">LOGINREC</a> *&nbsp;</td>
          <td class="paramname"> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>which</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the value of a string in a <code><a class="el" href="a00070.html">LOGINREC</a></code> structure. </p>
<p><b>For internal use only.</b></p>
<p>Called by various macros to populate <em>login</em>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>login</em>&nbsp;</td><td>the <code>LOGINREC*</code> to modify. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>the value to set it to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>which</em>&nbsp;</td><td>the field to set. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>SUCCEED</em>&nbsp;</td><td>the value was set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>FAIL</em>&nbsp;</td><td><code>DBSETHID</code> or other invalid <em>which</em> was tried. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga8d765d810a40dfa01b39995a8e7406f0"></a><!-- doxytag: member="dblib.c::dbtds" ref="ga8d765d810a40dfa01b39995a8e7406f0" args="(DBPROCESS *dbproc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int dbtds </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the TDS version in use for <em>dbproc</em>. </p>
<p><b>For internal use only.</b></p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a <code>DBTDS*</code> token. </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>The integer values of the constants are counterintuitive. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga1644cf55d37435711df65c12a3f7b785" title="Sybase macro, maps to the internal (lower-case) function.">DBTDS()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="gaccbc6d98d9528c48cf0254d809ca73ff"></a><!-- doxytag: member="dblib.c::default_err_handler" ref="gaccbc6d98d9528c48cf0254d809ca73ff" args="(DBPROCESS *dbproc, int severity, int dberr, int oserr, char *dberrstr, char *oserrstr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int default_err_handler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00098.html">DBPROCESS</a> *&nbsp;</td>
          <td class="paramname"> <em>dbproc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>severity</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>dberr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>oserr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>dberrstr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>oserrstr</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>default error handler for db-lib (handles library-generated errors) </p>
<p><b>For internal use only.</b></p>
<p>The default error handler doesn't print anything. If you want to see your messages printed, install an error handler. If you think that should be an optional compile- or run-time default, submit a patch. It could be done.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00286.html#ga2c7b5eec4843ea326b21f2db2ded2754" title="Sybase macro mapping to the Microsoft (lower-case) function.">DBDEAD()</a>, <a class="el" href="a00286.html#gab8209543de865f359bdb32829fa8b757" title="Set an error handler, for messages from db-lib.">dberrhandle()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ga2c99ec565452279e9a382451d89642eb"></a><!-- doxytag: member="dblib.c::tdsdbopen" ref="ga2c99ec565452279e9a382451d89642eb" args="(LOGINREC *login, const char *server, int msdblib)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00098.html">DBPROCESS</a>* tdsdbopen </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00070.html">LOGINREC</a> *&nbsp;</td>
          <td class="paramname"> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>server</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>msdblib</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Form a connection with the server. </p>
<p><b>For internal use only.</b></p>
<p>Called by the <code><a class="el" href="a00156.html#ae408d8e1c2ab0767d8bfd26d00d1ff6a" title="Normally not used.">dbopen()</a></code> macro, normally. If FreeTDS was configured with <code>--enable-msdblib</code>, this function is called by (exported) <code><a class="el" href="a00156.html#ae408d8e1c2ab0767d8bfd26d00d1ff6a" title="Normally not used.">dbopen()</a></code> function. <code>tdsdbopen</code> is so-named to avoid namespace conflicts with other database libraries that use the same function name. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>login</em>&nbsp;</td><td><code>LOGINREC*</code> carrying the account information. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>server</em>&nbsp;</td><td>name of the dataserver to connect to. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>valid pointer on successful login. </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>NULL</em>&nbsp;</td><td>insufficient memory, unable to connect for any reason. </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="a00156.html#ae408d8e1c2ab0767d8bfd26d00d1ff6a" title="Normally not used.">dbopen()</a> </dd></dl>
<dl class="todo"><dt><b><a class="el" href="a00306.html#_todo000005">Todo:</a></b></dt><dd><p class="startdd">use <code>asprintf()</code> to avoid buffer overflow. </p>
<p class="enddd">separate error messages for <em>no-such-server</em> and <em>no-such-user</em>. </p>
</dd></dl>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&nbsp;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Aug 17 22:22:31 2011 for FreeTDS API by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>