Sophie

Sophie

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

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: Network functions</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>Network functions<br/>
<small>
[<a class="el" href="a00305.html">LibTDS API</a>]</small>
</h1>
<p>Functions for reading or writing from network.  
<a href="#_details">More...</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6a24d6c991fa35bcb5ed6a0c015b636b"></a><!-- doxytag: member="network::TEMP_FREE" ref="ga6a24d6c991fa35bcb5ed6a0c015b636b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>TEMP_FREE</b>&nbsp;&nbsp;&nbsp;;</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab54f9c510601c54fbe2efd04ce26ef10"></a><!-- doxytag: member="network::TEMP_INIT" ref="gab54f9c510601c54fbe2efd04ce26ef10" args="(s)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>TEMP_INIT</b>(s)&nbsp;&nbsp;&nbsp;char temp[s]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf210e2a89b8ae08c2c3c2e3e68947df8"></a><!-- doxytag: member="network::TEMP_SIZE" ref="gaf210e2a89b8ae08c2c3c2e3e68947df8" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>TEMP_SIZE</b>&nbsp;&nbsp;&nbsp;sizeof(temp)</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac97a52714fbc7abdb0f6471e07a8e807"></a><!-- doxytag: member="network::ioctl_nonblocking_t" ref="gac97a52714fbc7abdb0f6471e07a8e807" args="" -->
typedef unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><b>ioctl_nonblocking_t</b></td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5ece65537141e55f804956798d67af53"></a><!-- doxytag: member="network::goodread" ref="ga5ece65537141e55f804956798d67af53" args="(TDSSOCKET *tds, unsigned char *buf, int buflen)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>goodread</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, unsigned char *buf, int buflen)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2de8df661857597bbf44a0a6970fe094"></a><!-- doxytag: member="network::read_and_convert" ref="ga2de8df661857597bbf44a0a6970fe094" args="(TDSSOCKET *tds, const TDSICONV *char_conv, size_t *wire_size, char **outbuf, size_t *outbytesleft)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>read_and_convert</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const <a class="el" href="a00130.html">TDSICONV</a> *char_conv, size_t *wire_size, char **outbuf, size_t *outbytesleft)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#gab2a008268a6385c114695ee17619b293">tds7_get_instance_port</a> (const char *ip_addr, const char *instance)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get port of given instance.  <a href="#gab2a008268a6385c114695ee17619b293"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#gaaf869a0cfbeb1f67c4b9e8b460705d3f">tds7_get_instance_ports</a> (FILE *output, const char *ip_addr)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get port of all instances.  <a href="#gaaf869a0cfbeb1f67c4b9e8b460705d3f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab43fd10c60abd6d7903e2e6d0da52048"></a><!-- doxytag: member="network::tds_close_socket" ref="gab43fd10c60abd6d7903e2e6d0da52048" args="(TDSSOCKET *tds)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_close_socket</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#gaea1bfbdf47b379ddf87c1eabed9aa7a8">tds_flush_packet</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flush packet to server.  <a href="#gaea1bfbdf47b379ddf87c1eabed9aa7a8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0cb72d3f6943795c39db1fa692be0a58"></a><!-- doxytag: member="network::tds_get_byte" ref="ga0cb72d3f6943795c39db1fa692be0a58" args="(TDSSOCKET *tds)" -->
unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_get_byte</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#ga94c7a01ad9071f09f0cd8013ec200220">tds_get_char_data</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, char *row_buffer, size_t wire_size, <a class="el" href="a00092.html">TDSCOLUMN</a> *curcol)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fetch character data the wire.  <a href="#ga94c7a01ad9071f09f0cd8013ec200220"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga452e60c210309458f8a244d731e08848"></a><!-- doxytag: member="network::tds_get_int" ref="ga452e60c210309458f8a244d731e08848" args="(TDSSOCKET *tds)" -->
TDS_INT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#ga452e60c210309458f8a244d731e08848">tds_get_int</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an int32 from the server. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadbb472a2786fa3b36fd93bce4a555190"></a><!-- doxytag: member="network::tds_get_int8" ref="gadbb472a2786fa3b36fd93bce4a555190" args="(TDSSOCKET *tds)" -->
TDS_INT8&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_get_int8</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#gab007f269c45476181f6676fbc332a11b">tds_get_n</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, void *dest, int need)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get N bytes from the buffer and return them in the already allocated space given to us.  <a href="#gab007f269c45476181f6676fbc332a11b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7059aa02facd9d694d034b24e7201b67"></a><!-- doxytag: member="network::tds_get_smallint" ref="ga7059aa02facd9d694d034b24e7201b67" args="(TDSSOCKET *tds)" -->
TDS_SMALLINT&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#ga7059aa02facd9d694d034b24e7201b67">tds_get_smallint</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an int16 from the server. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#ga9a76090c8f026063bc84d2a9f2154d86">tds_get_string</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, int string_len, char *dest, size_t dest_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fetch a string from the wire.  <a href="#ga9a76090c8f026063bc84d2a9f2154d86"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf0d74bb3a2dd49f1d56d481948392f80"></a><!-- doxytag: member="network::tds_goodread" ref="gaf0d74bb3a2dd49f1d56d481948392f80" args="(TDSSOCKET *tds, unsigned char *buf, int buflen, unsigned char unfinished)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#gaf0d74bb3a2dd49f1d56d481948392f80">tds_goodread</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, unsigned char *buf, int buflen, unsigned char unfinished)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Loops until we have received buflen characters return -1 on failure. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#ga5e5ec34d095254f824e5682606d7e6d7">tds_goodwrite</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const unsigned char *buffer, size_t len, unsigned char last)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad909967e04a0929c511e9d78527221b8"></a><!-- doxytag: member="network::tds_init_write_buf" ref="gad909967e04a0929c511e9d78527221b8" args="(TDSSOCKET *tds)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_init_write_buf</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga91ae1c7059213891a275bb8700731016"></a><!-- doxytag: member="network::tds_lastpacket" ref="ga91ae1c7059213891a275bb8700731016" args="(TDSSOCKET *tds)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_lastpacket</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga62ddcd5fe48e8f5609978df6edb99723"></a><!-- doxytag: member="network::tds_open_socket" ref="ga62ddcd5fe48e8f5609978df6edb99723" args="(TDSSOCKET *tds, const char *ip_addr, unsigned int port, int timeout, int *p_oserr)" -->
TDSERRNO&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_open_socket</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const char *ip_addr, unsigned int port, int timeout, int *p_oserr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga221e98a9c8be96ec6c8547891e1b53af"></a><!-- doxytag: member="network::tds_peek" ref="ga221e98a9c8be96ec6c8547891e1b53af" args="(TDSSOCKET *tds)" -->
unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_peek</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga71f4c47764001c9e2f9c89e35710a798"></a><!-- doxytag: member="network::tds_put_buf" ref="ga71f4c47764001c9e2f9c89e35710a798" args="(TDSSOCKET *tds, const unsigned char *buf, int dsize, int ssize)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_put_buf</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const unsigned char *buf, int dsize, int ssize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaee5d7789a3019c91cb71b2777340c3f0"></a><!-- doxytag: member="network::tds_put_byte" ref="gaee5d7789a3019c91cb71b2777340c3f0" args="(TDSSOCKET *tds, unsigned char c)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_put_byte</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, unsigned char c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaefcc2a4e3166c255f19b8d938fcf7963"></a><!-- doxytag: member="network::tds_put_int" ref="gaefcc2a4e3166c255f19b8d938fcf7963" args="(TDSSOCKET *tds, TDS_INT i)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_put_int</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, TDS_INT i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4b7e7fa90c88e41dbad92583020d39d0"></a><!-- doxytag: member="network::tds_put_int8" ref="ga4b7e7fa90c88e41dbad92583020d39d0" args="(TDSSOCKET *tds, TDS_INT8 i)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_put_int8</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, TDS_INT8 i)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga79393daf59e5c39be91d4f609bd4d0b9"></a><!-- doxytag: member="network::tds_put_n" ref="ga79393daf59e5c39be91d4f609bd4d0b9" args="(TDSSOCKET *tds, const void *buf, size_t n)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_put_n</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const void *buf, size_t n)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaeda567ed45de44b0814c9f6cc0ef05fc"></a><!-- doxytag: member="network::tds_put_smallint" ref="gaeda567ed45de44b0814c9f6cc0ef05fc" args="(TDSSOCKET *tds, TDS_SMALLINT si)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_put_smallint</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, TDS_SMALLINT si)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#ga1fcaf8d488cc1390f106ce3ad0bf37b4">tds_put_string</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const char *s, int len)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Output a string to wire automatic translate string to unicode if needed.  <a href="#ga1fcaf8d488cc1390f106ce3ad0bf37b4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#ga410619783bdf2bb60b0f27a5578e0e07">tds_read_packet</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read in one 'packet' from the server.  <a href="#ga410619783bdf2bb60b0f27a5578e0e07"></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="a00302.html#ga9440674aab6aa2c5e45c0610becb9927">tds_select</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, unsigned tds_sel, int timeout_seconds)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Select on a socket until it's available or the timeout expires.  <a href="#ga9440674aab6aa2c5e45c0610becb9927"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00302.html#gad70d59fb317d098b0c9fd29dd77131a8">tds_unget_byte</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unget will always work as long as you don't call it twice in a row.  <a href="#gad70d59fb317d098b0c9fd29dd77131a8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga19a20ecebd316e2a5c235718cec5c629"></a><!-- doxytag: member="network::tds_write_packet" ref="ga19a20ecebd316e2a5c235718cec5c629" args="(TDSSOCKET *tds, unsigned char final)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_write_packet</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, unsigned char final)</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Functions for reading or writing from network. </p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gab2a008268a6385c114695ee17619b293"></a><!-- doxytag: member="net.c::tds7_get_instance_port" ref="gab2a008268a6385c114695ee17619b293" args="(const char *ip_addr, const char *instance)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int tds7_get_instance_port </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>ip_addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>instance</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get port of given instance. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>port number or 0 if error </dd></dl>

</div>
</div>
<a class="anchor" id="gaaf869a0cfbeb1f67c4b9e8b460705d3f"></a><!-- doxytag: member="net.c::tds7_get_instance_ports" ref="gaaf869a0cfbeb1f67c4b9e8b460705d3f" args="(FILE *output, const char *ip_addr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int tds7_get_instance_ports </td>
          <td>(</td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>output</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>ip_addr</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get port of all instances. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>default port number or 0 if error </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>experimental, cf. MC-SQLR.pdf. </dd></dl>

</div>
</div>
<a class="anchor" id="gaea1bfbdf47b379ddf87c1eabed9aa7a8"></a><!-- doxytag: member="write.c::tds_flush_packet" ref="gaea1bfbdf47b379ddf87c1eabed9aa7a8" args="(TDSSOCKET *tds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int tds_flush_packet </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Flush packet to server. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>TDS_FAIL or TDS_SUCCEED </dd></dl>

</div>
</div>
<a class="anchor" id="ga94c7a01ad9071f09f0cd8013ec200220"></a><!-- doxytag: member="read.c::tds_get_char_data" ref="ga94c7a01ad9071f09f0cd8013ec200220" args="(TDSSOCKET *tds, char *row_buffer, size_t wire_size, TDSCOLUMN *curcol)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int tds_get_char_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>row_buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>wire_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00092.html">TDSCOLUMN</a> *&nbsp;</td>
          <td class="paramname"> <em>curcol</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Fetch character data the wire. </p>
<p>Output is NOT null terminated. If <em>char_conv</em> is not NULL, convert data accordingly. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tds</em>&nbsp;</td><td>state information for the socket and the TDS protocol </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>row_buffer</em>&nbsp;</td><td>destination buffer in current_row. Can't be NULL </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>wire_size</em>&nbsp;</td><td>size to read from wire (in bytes) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>curcol</em>&nbsp;</td><td>column information </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TDS_SUCCEED or TDS_FAIL (probably memory error on text data) </dd></dl>
<dl class="todo"><dt><b><a class="el" href="a00306.html#_todo000020">Todo:</a></b></dt><dd>put a TDSICONV structure in every TDSCOLUMN </dd></dl>

</div>
</div>
<a class="anchor" id="gab007f269c45476181f6676fbc332a11b"></a><!-- doxytag: member="read.c::tds_get_n" ref="gab007f269c45476181f6676fbc332a11b" args="(TDSSOCKET *tds, void *dest, int need)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* tds_get_n </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>need</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get N bytes from the buffer and return them in the already allocated space given to us. </p>
<p>We ASSUME that the person calling this function has done the bounds checking for us since they know how many bytes they want here. dest of NULL means we just want to eat the bytes. (<a href="mailto:tetherow@nol.org">tetherow@nol.org</a>) </p>

</div>
</div>
<a class="anchor" id="ga9a76090c8f026063bc84d2a9f2154d86"></a><!-- doxytag: member="read.c::tds_get_string" ref="ga9a76090c8f026063bc84d2a9f2154d86" args="(TDSSOCKET *tds, int string_len, char *dest, size_t dest_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int tds_get_string </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>string_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>dest_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Fetch a string from the wire. </p>
<p>Output string is NOT null terminated. If TDS version is 7 or 8 read unicode string and convert it. This function should be use to read server default encoding strings like columns name, table names, etc, not for data (use tds_get_char_data instead) </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>bytes written to <em>dest</em> </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tds</em>&nbsp;</td><td>connection information </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>string_len</em>&nbsp;</td><td>length of string to read from wire (in server characters, bytes for tds4-tds5, ucs2 for tds7+) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>destination buffer, if NULL string is read and discarded </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dest_size</em>&nbsp;</td><td>destination buffer size, in bytes </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga5e5ec34d095254f824e5682606d7e6d7"></a><!-- doxytag: member="net.c::tds_goodwrite" ref="ga5e5ec34d095254f824e5682606d7e6d7" args="(TDSSOCKET *tds, const unsigned char *buffer, size_t len, unsigned char last)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int tds_goodwrite </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned char *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&nbsp;</td>
          <td class="paramname"> <em>last</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">
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tds</em>&nbsp;</td><td>the famous socket </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>data to send </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>bytes in buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>last</em>&nbsp;</td><td>1 if this is the last packet, else 0 </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>len on success, &lt;0 on failure </dd></dl>

</div>
</div>
<a class="anchor" id="ga1fcaf8d488cc1390f106ce3ad0bf37b4"></a><!-- doxytag: member="write.c::tds_put_string" ref="ga1fcaf8d488cc1390f106ce3ad0bf37b4" args="(TDSSOCKET *tds, const char *s, int len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int tds_put_string </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Output a string to wire automatic translate string to unicode if needed. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>bytes written to wire </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tds</em>&nbsp;</td><td>state information for the socket and the TDS protocol </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>string to write </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of string in characters, or -1 for null terminated </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga410619783bdf2bb60b0f27a5578e0e07"></a><!-- doxytag: member="net.c::tds_read_packet" ref="ga410619783bdf2bb60b0f27a5578e0e07" args="(TDSSOCKET *tds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int tds_read_packet </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read in one 'packet' from the server. </p>
<p>This is a wrapped outer packet of the protocol (they bundle result packets into chunks and wrap them at what appears to be 512 bytes regardless of how that breaks internal packet up. (tetherow@nol.org) </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>bytes read or -1 on failure </dd></dl>

</div>
</div>
<a class="anchor" id="ga9440674aab6aa2c5e45c0610becb9927"></a><!-- doxytag: member="net.c::tds_select" ref="ga9440674aab6aa2c5e45c0610becb9927" args="(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int tds_select </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>tds_sel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>timeout_seconds</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>Select on a socket until it's available or the timeout expires. </p>
<p>Meanwhile, call the interrupt function. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>&gt;0 ready descriptors 0 timeout &lt;0 error (cf. errno). Caller should close socket and return failure. This function does not call tdserror or close the socket because it can't know the context in which it's being called. </dd></dl>

</div>
</div>
<a class="anchor" id="gad70d59fb317d098b0c9fd29dd77131a8"></a><!-- doxytag: member="read.c::tds_unget_byte" ref="gad70d59fb317d098b0c9fd29dd77131a8" args="(TDSSOCKET *tds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void tds_unget_byte </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> *&nbsp;</td>
          <td class="paramname"> <em>tds</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Unget will always work as long as you don't call it twice in a row. </p>
<p>It it may work if you call it multiple times as long as you don't backup over the beginning of network packet boundary which can occur anywhere in the token stream. </p>

</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:32 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>