Sophie

Sophie

distrib > Mageia > 1 > i586 > media > core-release > by-pkgid > f0bc842dcf666302badcfd2545f3387c > files > 57

libfreetds0-doc-0.82-12.mga1.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>FreeTDS API: Internals</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.1 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>Internals<br>
<small>
[<a class="el" href="a00274.html">The db-lib API</a>]</small>
</h1>Functions called within <code>db-lib</code> for self-help.  
<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00133.html">_dblib_error_message</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="a00281.html#ga22">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="#ga22"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga23">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="#ga23"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="a00133.html">_dblib_error_message</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga0">DBLIB_ERROR_MESSAGE</a></td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga21">_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="#ga21"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga8">dbcmdrow</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if the current command can return rows.  <a href="#ga8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">DBINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga6">dbcount</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get count of rows processed.  <a href="#ga6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga13">dbcurcmd</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of the row just returned.  <a href="#ga13"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">DBINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga11">dbcurrow</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of the row currently being read.  <a href="#ga11"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">DBBOOL&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga9">dbdead</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if <em>dbproc</em> is an ex-parrot.  <a href="#ga9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">DBINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga15">dbfirstrow</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of the first row in the row buffer.  <a href="#ga15"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga17">dbiordesc</a> (DBPROCESS *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="#ga17"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga18">dbiowdesc</a> (DBPROCESS *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="#ga18"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">DBINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga16">dblastrow</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of the last row in the row buffer.  <a href="#ga16"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga20">dbperror</a> (DBPROCESS *dbproc, DBINT msgno, long errnum,...)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Call client-installed error handler.  <a href="#ga20"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga7">dbrows</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Indicate whether a query returned rows.  <a href="#ga7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">STATUS&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga12">dbrowtype</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get returned row's type.  <a href="#ga12"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga19">dbsetavail</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mark a <code>DBPROCESS</code> as "available".  <a href="#ga19"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga4">dbsetlbool</a> (LOGINREC *login, int value, int which)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a boolean value in a <code>LOGINREC</code> structure.  <a href="#ga4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga2">dbsetllong</a> (LOGINREC *login, long value, int which)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an integer value in a <code>LOGINREC</code> structure.  <a href="#ga2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga1">dbsetlname</a> (LOGINREC *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>LOGINREC</code> structure.  <a href="#ga1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">RETCODE&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga3">dbsetlshort</a> (LOGINREC *login, int value, int which)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an integer value in a <code>LOGINREC</code> structure.  <a href="#ga3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga14">dbtds</a> (DBPROCESS *dbproc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the TDS version in use for <em>dbproc</em>.  <a href="#ga14"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga10">default_err_handler</a> (DBPROCESS *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="#ga10"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">DBPROCESS *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00281.html#ga5">tdsdbopen</a> (LOGINREC *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="#ga5"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Functions called within <code>db-lib</code> for self-help. 
<p>
These functions are of interest only to people hacking on the FreeTDS db-lib implementation. <hr><h2>Define Documentation</h2>
<a class="anchor" name="ga22" doxytag="sybdb.h::DBSETLLABELED"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">DBSETLLABELED          </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">x,         <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>y&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap>&nbsp;&nbsp;&nbsp;dbsetlbool((x), (y), DBSETLABELED)</td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Alternative way to set login packet fields. 
<p>
<dl compact><dt><b>See also:</b></dt><dd>dbsetllabeled() </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="ga23" doxytag="sybdb.h::DBSETLVERSION"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">DBSETLVERSION          </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">login,         <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>version&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap>&nbsp;&nbsp;&nbsp;dbsetlversion((login), (version))</td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
maps to the Microsoft (lower-case) function. 
<p>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga3">dbsetlversion()</a> </dd></dl>
    </td>
  </tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="ga0" doxytag="dblib.c::DBLIB_ERROR_MESSAGE"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">typedef struct <a class="el" href="a00133.html">_dblib_error_message</a>  <a class="el" href="a00133.html">DBLIB_ERROR_MESSAGE</a>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<p><b>For internal use only.</b></p>
<p>
<dl compact><dt><b>Remarks:</b></dt><dd>member msgno Vendor-defined message number <p>
member severity Is passed to the error handler <p>
member msgtext Text of message </dd></dl>
</p>
    </td>
  </tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="ga21" doxytag="dbutil.c::_dblib_check_and_handle_interrupt"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int _dblib_check_and_handle_interrupt           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">void *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>vdbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
check interrupts for libtds. 
<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>vdbproc</em>&nbsp;</td><td>a DBPROCESS pointer, contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga104">DBDEAD()</a>, <a class="el" href="a00275.html#ga54">dbsetinterrupt()</a>. </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="ga8" doxytag="dblib.c::dbcmdrow"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">RETCODE dbcmdrow           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
See if the current command can return rows. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><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>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd>Use <a class="el" href="a00275.html#ga100">DBCMDROW()</a> macro instead. </dd></dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga100">DBCMDROW()</a>, <a class="el" href="a00275.html#ga16">dbnextrow()</a>, <a class="el" href="a00275.html#ga10">dbresults()</a>, <a class="el" href="a00275.html#ga111">DBROWS()</a>, <a class="el" href="a00275.html#ga112">DBROWTYPE()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga6" doxytag="dblib.c::dbcount"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">DBINT dbcount           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get count of rows processed. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd><ul>
<li>for insert/update/delete, count of rows affected.</li><li>for select, count of rows returned, after all rows have been fetched. </li></ul>
</dd></dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga101">DBCOUNT()</a>, <a class="el" href="a00275.html#ga16">dbnextrow()</a>, <a class="el" href="a00275.html#ga10">dbresults()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga13" doxytag="dblib.c::dbcurcmd"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int dbcurcmd           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get number of the row just returned. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga103">DBCURROW()</a>. </dd></dl>
<dl compact><dt><b><a class="el" href="todo.html#_todo000033">Todo:</a></b></dt><dd>Unimplemented. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga11" doxytag="dblib.c::dbcurrow"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">DBINT dbcurrow           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get number of the row currently being read. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>ostensibly the row number, or 0 if no rows have been read yet. </dd></dl>
<dl compact><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>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga103">DBCURROW()</a>, <a class="el" href="a00275.html#ga23">dbclrbuf()</a>, <a class="el" href="a00275.html#ga105">DBFIRSTROW()</a>, <a class="el" href="a00275.html#ga13">dbgetrow()</a>, <a class="el" href="a00275.html#ga109">DBLASTROW()</a>, <a class="el" href="a00275.html#ga16">dbnextrow()</a>, <a class="el" href="a00275.html#ga53">dbsetopt()</a>,. </dd></dl>
<dl compact><dt><b><a class="el" href="todo.html#_todo000032">Todo:</a></b></dt><dd>Unimplemented. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga9" doxytag="dblib.c::dbdead"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">DBBOOL dbdead           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Check if <em>dbproc</em> is an ex-parrot. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><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>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd><a class="el" href="a00281.html#ga9">dbdead()</a> does not communicate with the server. Unless a previously db-lib marked <em>dbproc</em> <em>dead</em>, <a class="el" href="a00281.html#ga9">dbdead()</a> returns <code>FALSE</code>. </dd></dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga59">dberrhandle()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga15" doxytag="dblib.c::dbfirstrow"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">DBINT dbfirstrow           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get number of the first row in the row buffer. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga105">DBFIRSTROW()</a>, <a class="el" href="a00275.html#ga23">dbclrbuf()</a>, <a class="el" href="a00275.html#ga103">DBCURROW()</a>, <a class="el" href="a00275.html#ga13">dbgetrow()</a>, <a class="el" href="a00275.html#ga109">DBLASTROW()</a>, <a class="el" href="a00275.html#ga16">dbnextrow()</a>, <a class="el" href="a00275.html#ga53">dbsetopt()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga17" doxytag="dblib.c::dbiordesc"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int dbiordesc           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga5">dbcmd()</a>, <a class="el" href="a00275.html#ga106">DBIORDESC()</a>, <a class="el" href="a00275.html#ga107">DBIOWDESC()</a>, <a class="el" href="a00275.html#ga16">dbnextrow()</a>, <a class="el" href="a00275.html#ga97">dbpoll()</a>, DBRBUF(), <a class="el" href="a00275.html#ga10">dbresults()</a>, <a class="el" href="a00275.html#ga55">dbsqlok()</a>, <a class="el" href="a00275.html#ga94">dbsqlsend()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga18" doxytag="dblib.c::dbiowdesc"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int dbiowdesc           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga5">dbcmd()</a>, <a class="el" href="a00275.html#ga106">DBIORDESC()</a>, <a class="el" href="a00275.html#ga107">DBIOWDESC()</a>, <a class="el" href="a00275.html#ga16">dbnextrow()</a>, <a class="el" href="a00275.html#ga97">dbpoll()</a>, DBRBUF(), <a class="el" href="a00275.html#ga10">dbresults()</a>, <a class="el" href="a00275.html#ga55">dbsqlok()</a>, <a class="el" href="a00275.html#ga94">dbsqlsend()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga16" doxytag="dblib.c::dblastrow"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">DBINT dblastrow           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get number of the last row in the row buffer. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga109">DBLASTROW()</a>, <a class="el" href="a00275.html#ga23">dbclrbuf()</a>, <a class="el" href="a00275.html#ga103">DBCURROW()</a>, <a class="el" href="a00275.html#ga105">DBFIRSTROW()</a>, <a class="el" href="a00275.html#ga13">dbgetrow()</a>, <a class="el" href="a00275.html#ga16">dbnextrow()</a>, <a class="el" href="a00275.html#ga53">dbsetopt()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga20" doxytag="dblib.c::dbperror"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int dbperror           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname" nowrap> <em>dbproc</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>DBINT&nbsp;</td>
          <td class="mdname" nowrap> <em>msgno</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>long&nbsp;</td>
          <td class="mdname" nowrap> <em>errnum</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>&nbsp;</td>
          <td class="mdname" nowrap> <em>...</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Call client-installed error handler. 
<p>
<p><b>For internal use only.</b></p>
<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>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>
</dl>
<dl compact><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 compact><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>
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>
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>
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>
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. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga59">dberrhandle()</a>, _dblib_handle_err_message(). </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga7" doxytag="dblib.c::dbrows"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">RETCODE dbrows           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Indicate whether a query returned rows. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga111">DBROWS()</a>, <a class="el" href="a00275.html#ga100">DBCMDROW()</a>, <a class="el" href="a00275.html#ga16">dbnextrow()</a>, <a class="el" href="a00275.html#ga10">dbresults()</a>, <a class="el" href="a00275.html#ga112">DBROWTYPE()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga12" doxytag="dblib.c::dbrowtype"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">STATUS dbrowtype           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get returned row's type. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga112">DBROWTYPE()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga19" doxytag="dblib.c::dbsetavail"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">void dbsetavail           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Mark a <code>DBPROCESS</code> as "available". 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><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="a00281.html#ga19">dbsetavail()</a> resets it to "available". </dd></dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga108">DBISAVAIL()</a>. DBSETAVAIL(). </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga4" doxytag="dblib.c::dbsetlbool"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">RETCODE dbsetlbool           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LOGINREC *&nbsp;</td>
          <td class="mdname" nowrap> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>which</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set a boolean value in a <code>LOGINREC</code> structure. 
<p>
<p><b>For internal use only.</b></p>
<p>
Called by various macros to populate <em>login</em>. <dl compact><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>
</dl>
<dl compact><dt><b>Remarks:</b></dt><dd>Only DBSETBCP is implemented. </dd></dl>
<dl compact><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>
</dl>
<dl compact><dt><b><a class="el" href="todo.html#_todo000007">Todo:</a></b></dt><dd>DBSETNOSHORT, DBSETENCRYPT, DBSETLABELED </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga2" doxytag="dblib.c::dbsetllong"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">RETCODE dbsetllong           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LOGINREC *&nbsp;</td>
          <td class="mdname" nowrap> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>long&nbsp;</td>
          <td class="mdname" nowrap> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>which</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set an integer value in a <code>LOGINREC</code> structure. 
<p>
<p><b>For internal use only.</b></p>
<p>
Called by various macros to populate <em>login</em>. <dl compact><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>
</dl>
<dl compact><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>
</dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga1" doxytag="dblib.c::dbsetlname"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">RETCODE dbsetlname           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LOGINREC *&nbsp;</td>
          <td class="mdname" nowrap> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>which</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the value of a string in a <code>LOGINREC</code> structure. 
<p>
<p><b>For internal use only.</b></p>
<p>
Called by various macros to populate <em>login</em>. <dl compact><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>
</dl>
<dl compact><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>
</dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga3" doxytag="dblib.c::dbsetlshort"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">RETCODE dbsetlshort           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LOGINREC *&nbsp;</td>
          <td class="mdname" nowrap> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>value</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>which</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set an integer value in a <code>LOGINREC</code> structure. 
<p>
<p><b>For internal use only.</b></p>
<p>
Called by various macros to populate <em>login</em>. <dl compact><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>
</dl>
<dl compact><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>DBSETHIER</code> was passed for <em>which</em>. </td></tr>
  </table>
</dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga14" doxytag="dblib.c::dbtds"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int dbtds           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dbproc</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get the TDS version in use for <em>dbproc</em>. 
<p>
<p><b>For internal use only.</b></p>
<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>dbproc</em>&nbsp;</td><td>contains all information needed by db-lib to manage communications with the server. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a <code>DBTDS*</code> token. </dd></dl>
<dl compact><dt><b>Remarks:</b></dt><dd>The integer values of the constants are counterintuitive. </dd></dl>
<dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga113">DBTDS()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga10" doxytag="dblib.c::default_err_handler"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">static int default_err_handler           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">DBPROCESS *&nbsp;</td>
          <td class="mdname" nowrap> <em>dbproc</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>severity</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>dberr</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>oserr</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname" nowrap> <em>dberrstr</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>char *&nbsp;</td>
          <td class="mdname" nowrap> <em>oserrstr</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [static]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<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 compact><dt><b>See also:</b></dt><dd><a class="el" href="a00275.html#ga104">DBDEAD()</a>, <a class="el" href="a00275.html#ga59">dberrhandle()</a>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<a class="anchor" name="ga5" doxytag="dblib.c::tdsdbopen"></a><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">DBPROCESS* tdsdbopen           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">LOGINREC *&nbsp;</td>
          <td class="mdname" nowrap> <em>login</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap> <em>server</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>msdblib</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Form a connection with the server. 
<p>
<p><b>For internal use only.</b></p>
<p>
Called by the <code>dbopen()</code> macro, normally. If FreeTDS was configured with <code>--enable-msdblib</code>, this function is called by (exported) <code>dbopen()</code> function. <code>tdsdbopen</code> is so-named to avoid namespace conflicts with other database libraries that use the same function name. <dl compact><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>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>valid pointer on successful login. </dd></dl>
<dl compact><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>
</dl>
<dl compact><dt><b>See also:</b></dt><dd>dbopen() </dd></dl>
<dl compact><dt><b><a class="el" href="todo.html#_todo000008">Todo:</a></b></dt><dd>use <code>asprintf()</code> to avoid buffer overflow.</dd></dl>
<p>
<dl compact><dt><b><a class="el" href="todo.html#_todo000008">Todo:</a></b></dt><dd>separate error messages for <em>no-such-server</em> and <em>no-such-user</em>. </dd></dl>
</p>
    </td>
  </tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Wed May 7 19:22:10 2008 for FreeTDS API by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.1 </small></address>
</body>
</html>