Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > core-release > by-pkgid > 13eec89779171a321fe518ddb0e0fec6 > files > 225

freetds-doc-0.91-8.mga5.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: Charset conversion</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>Charset conversion<br/>
<small>
[<a class="el" href="a00305.html">LibTDS API</a>]</small>
</h1>
<p>Convert between different charsets.  
<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="ga849bb1ce9f0ea276dcc0695cfba2492b"></a><!-- doxytag: member="conv::CHUNK_ALLOC" ref="ga849bb1ce9f0ea276dcc0695cfba2492b" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><b>CHUNK_ALLOC</b>&nbsp;&nbsp;&nbsp;4</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab57467684a77c6edc27cd98a3079ef43"></a><!-- doxytag: member="conv::ICONV_CHAR" ref="gab57467684a77c6edc27cd98a3079ef43" args="" -->
typedef TDS_UINT&nbsp;</td><td class="memItemRight" valign="bottom"><b>ICONV_CHAR</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8ffc7fa0eb2d0a1829ffa1d08af82022"></a><!-- doxytag: member="conv::iconv_get_t" ref="ga8ffc7fa0eb2d0a1829ffa1d08af82022" args=")(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>iconv_get_t</b> )(const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga30d03a48338dc0409f404df949f63f97"></a><!-- doxytag: member="conv::iconv_put_t" ref="ga30d03a48338dc0409f404df949f63f97" args=")(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
typedef int(*&nbsp;</td><td class="memItemRight" valign="bottom"><b>iconv_put_t</b> )(unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>ICONV_CD_VALUE</b> { <b>Like_to_Like</b> =  0x100
 }</td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac84d63747b4310901ea09a8995ffbf30"></a><!-- doxytag: member="conv::_iconv_close" ref="gac84d63747b4310901ea09a8995ffbf30" args="(iconv_t *cd)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><b>_iconv_close</b> (iconv_t *cd)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga091a479fdf6ef1c3e2ceba8d3caec6cd"></a><!-- doxytag: member="conv::collate2charset" ref="ga091a479fdf6ef1c3e2ceba8d3caec6cd" args="(int sql_collate, int lcid)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>collate2charset</b> (int sql_collate, int lcid)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8988a609bb65d45467f6b84f6d82264c"></a><!-- doxytag: member="conv::get_ascii" ref="ga8988a609bb65d45467f6b84f6d82264c" args="(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>get_ascii</b> (const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6d46cddd12bfb5b9481f7d5db1154b28"></a><!-- doxytag: member="conv::get_err" ref="ga6d46cddd12bfb5b9481f7d5db1154b28" args="(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>get_err</b> (const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0aced3bddfcae66d98d293397cd37ec7"></a><!-- doxytag: member="conv::get_iso1" ref="ga0aced3bddfcae66d98d293397cd37ec7" args="(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>get_iso1</b> (const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9426e103f1325667962640d59d92ec1c"></a><!-- doxytag: member="conv::get_ucs4be" ref="ga9426e103f1325667962640d59d92ec1c" args="(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>get_ucs4be</b> (const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gade4cd5108b3002c6ad880ee9dc2f62e9"></a><!-- doxytag: member="conv::get_ucs4le" ref="gade4cd5108b3002c6ad880ee9dc2f62e9" args="(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>get_ucs4le</b> (const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4aa60de8ece655b8d88b3b0bbc1635f9"></a><!-- doxytag: member="conv::get_utf16be" ref="ga4aa60de8ece655b8d88b3b0bbc1635f9" args="(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>get_utf16be</b> (const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab8b8471bf9b5cccb6c056b67d4307b7f"></a><!-- doxytag: member="conv::get_utf16le" ref="gab8b8471bf9b5cccb6c056b67d4307b7f" args="(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>get_utf16le</b> (const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga26673980abc1bd02ec9021f291d54a78"></a><!-- doxytag: member="conv::get_utf8" ref="ga26673980abc1bd02ec9021f291d54a78" args="(const unsigned char *p, size_t len, ICONV_CHAR *out)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>get_utf8</b> (const unsigned char *p, size_t len, ICONV_CHAR *out)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacbb493e233cbcba830fd0185a86958e0"></a><!-- doxytag: member="conv::lookup_canonic" ref="gacbb493e233cbcba830fd0185a86958e0" args="(const CHARACTER_SET_ALIAS aliases[], const char *charset_name)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>lookup_canonic</b> (const <a class="el" href="a00001.html">CHARACTER_SET_ALIAS</a> aliases[], const char *charset_name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga05804a8292ddd7f5481436451a4f4a26"></a><!-- doxytag: member="conv::put_ascii" ref="ga05804a8292ddd7f5481436451a4f4a26" args="(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_ascii</b> (unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga897a71bda21d63281583b7c40ad7dcd0"></a><!-- doxytag: member="conv::put_err" ref="ga897a71bda21d63281583b7c40ad7dcd0" args="(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_err</b> (unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac6b9e69bf4a3fc9e8cb8d86e40688138"></a><!-- doxytag: member="conv::put_iso1" ref="gac6b9e69bf4a3fc9e8cb8d86e40688138" args="(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_iso1</b> (unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac5e1e0c488a8c9fc9e060bef9c62261e"></a><!-- doxytag: member="conv::put_ucs4be" ref="gac5e1e0c488a8c9fc9e060bef9c62261e" args="(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_ucs4be</b> (unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac05cbba509163492d6c0835c53cec4ed"></a><!-- doxytag: member="conv::put_ucs4le" ref="gac05cbba509163492d6c0835c53cec4ed" args="(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_ucs4le</b> (unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaccf9c0f7b71cc687b4e8174e2206242a"></a><!-- doxytag: member="conv::put_utf16be" ref="gaccf9c0f7b71cc687b4e8174e2206242a" args="(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_utf16be</b> (unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaeb3ff2093c2da0ed54842a5d8d53847b"></a><!-- doxytag: member="conv::put_utf16le" ref="gaeb3ff2093c2da0ed54842a5d8d53847b" args="(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_utf16le</b> (unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga39681befed140ba03251364f014cc6b3"></a><!-- doxytag: member="conv::put_utf8" ref="ga39681befed140ba03251364f014cc6b3" args="(unsigned char *buf, size_t buf_len, ICONV_CHAR c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><b>put_utf8</b> (unsigned char *buf, size_t buf_len, ICONV_CHAR c)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#ga3380140fc6eb9f2090c430f40e846876">skip_one_input_sequence</a> (iconv_t cd, const <a class="el" href="a00102.html">TDS_ENCODING</a> *charset, const char **input, size_t *input_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move the input sequence pointer to the next valid position.  <a href="#ga3380140fc6eb9f2090c430f40e846876"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga11625c89247d56409efa500054387dac"></a><!-- doxytag: member="conv::tds7_srv_charset_changed" ref="ga11625c89247d56409efa500054387dac" args="(TDSSOCKET *tds, int sql_collate, int lcid)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds7_srv_charset_changed</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, int sql_collate, int lcid)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#ga38c0ac641a8c6e25e91ee9205c3c50c5">tds_canonical_charset</a> (const char *charset_name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine canonical iconv character set.  <a href="#ga38c0ac641a8c6e25e91ee9205c3c50c5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#ga6561d1dba1a04c168431b16ec17d7e4c">tds_canonical_charset_name</a> (const char *charset_name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine canonical iconv character set name.  <a href="#ga6561d1dba1a04c168431b16ec17d7e4c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#ga58d84206127a9777c9bc6daa66cf75d4">tds_iconv</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const <a class="el" href="a00130.html">TDSICONV</a> *conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapper around iconv(3).  <a href="#ga58d84206127a9777c9bc6daa66cf75d4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5b38b2c76a16895c695a89e635408d1d"></a><!-- doxytag: member="conv::tds_iconv_close" ref="ga5b38b2c76a16895c695a89e635408d1d" args="(TDSSOCKET *tds)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_iconv_close</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#gaaa6e5b2df49a1b3e5312f9a4d8f2170f">tds_iconv_fread</a> (iconv_t cd, FILE *stream, size_t field_len, size_t term_len, char *outbuf, size_t *outbytesleft)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a data file, passing the data through iconv().  <a href="#gaaa6e5b2df49a1b3e5312f9a4d8f2170f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga62e37d52ef7cef24ed0e12ab8777971b"></a><!-- doxytag: member="conv::tds_iconv_free" ref="ga62e37d52ef7cef24ed0e12ab8777971b" args="(TDSSOCKET *tds)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_iconv_free</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga03199e1e4cdbf14c670e27b548e64104"></a><!-- doxytag: member="conv::tds_iconv_from_collate" ref="ga03199e1e4cdbf14c670e27b548e64104" args="(TDSSOCKET *tds, TDS_UCHAR collate[5])" -->
<a class="el" href="a00130.html">TDSICONV</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#ga03199e1e4cdbf14c670e27b548e64104">tds_iconv_from_collate</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, TDS_UCHAR collate[5])</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get iconv information from a LCID (to support different column encoding under MSSQL2K). <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4f8944364588764eb3c026c23249f599"></a><!-- doxytag: member="conv::tds_iconv_get" ref="ga4f8944364588764eb3c026c23249f599" args="(TDSSOCKET *tds, const char *client_charset, const char *server_charset)" -->
<a class="el" href="a00130.html">TDSICONV</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_iconv_get</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const char *client_charset, const char *server_charset)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga52dff5f300e9f640829b99b1a68cf1c7"></a><!-- doxytag: member="conv::tds_iconv_get_info" ref="ga52dff5f300e9f640829b99b1a68cf1c7" args="(TDSSOCKET *tds, int canonic_client, int canonic_server)" -->
static <a class="el" href="a00130.html">TDSICONV</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#ga52dff5f300e9f640829b99b1a68cf1c7">tds_iconv_get_info</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, int canonic_client, int canonic_server)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a iconv info structure, allocate and initialize if needed. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacacca154f73a30b2fb8a4736de51755f"></a><!-- doxytag: member="conv::tds_iconv_info_close" ref="gacacca154f73a30b2fb8a4736de51755f" args="(TDSICONV *char_conv)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_iconv_info_close</b> (<a class="el" href="a00130.html">TDSICONV</a> *char_conv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#ga3a7a7b4d6ed344127e164dd0b443d790">tds_iconv_info_init</a> (<a class="el" href="a00130.html">TDSICONV</a> *char_conv, int client_canonical, int server_canonical)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open iconv descriptors to convert between character sets (both directions).  <a href="#ga3a7a7b4d6ed344127e164dd0b443d790"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab9ebe3cdf204781df875354145b00f1c"></a><!-- doxytag: member="conv::tds_iconv_open" ref="gab9ebe3cdf204781df875354145b00f1c" args="(TDSSOCKET *tds, const char *charset)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_iconv_open</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const char *charset)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8fea92c8a4c791732974b5c2625281c2"></a><!-- doxytag: member="conv::tds_srv_charset_changed" ref="ga8fea92c8a4c791732974b5c2625281c2" args="(TDSSOCKET *tds, const char *charset)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_srv_charset_changed</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, const char *charset)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadee81e48c1da10fb754849c174a13ca7"></a><!-- doxytag: member="conv::tds_srv_charset_changed_num" ref="gadee81e48c1da10fb754849c174a13ca7" args="(TDSSOCKET *tds, int canonic_charset_num)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_srv_charset_changed_num</b> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, int canonic_charset_num)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#gacf6855134e182dd58507838843ca00c2">tds_sybase_charset_name</a> (const char *charset_name)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine the name Sybase uses for a character set, given a canonical iconv name.  <a href="#gacf6855134e182dd58507838843ca00c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6e879e60070a3e43c8f223365bf66137"></a><!-- doxytag: member="conv::tds_sys_iconv" ref="ga6e879e60070a3e43c8f223365bf66137" args="(iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)" -->
size_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_sys_iconv</b> (iconv_t cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae9f9201cc5e009a15e888923575ecc67"></a><!-- doxytag: member="conv::tds_sys_iconv_close" ref="gae9f9201cc5e009a15e888923575ecc67" args="(iconv_t cd)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>tds_sys_iconv_close</b> (iconv_t cd)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">iconv_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00299.html#ga900b0bce08c6bfc2e7c988f4b5970516">tds_sys_iconv_open</a> (const char *tocode, const char *fromcode)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inputs are FreeTDS canonical names, no other.  <a href="#ga900b0bce08c6bfc2e7c988f4b5970516"></a><br/></td></tr>
<tr><td colspan="2"><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const iconv_get_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>iconv_gets</b> [8]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const iconv_put_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>iconv_puts</b> [8]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><b>utf8_lengths</b> [256]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><b>utf8_masks</b> [7]</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>Convert between different charsets. </p>
<p>Set up the initial iconv conversion descriptors.</p>
<p>When the socket is allocated, three TDSICONV structures are attached to iconv. They have fixed meanings: </p>
<ul>
<li>0. Client &lt;-&gt; UCS-2 (client2ucs2) </li>
<li>1. Client &lt;-&gt; server single-byte charset (client2server_chardata) </li>
<li>2. ISO8859-1 &lt;-&gt; server meta data (iso2server_metadata)</li>
</ul>
<p>Other designs that use less data are possible, but these three conversion needs are very often needed. By reserving them, we avoid searching the array for our most common purposes.</p>
<p>To solve different iconv names and portability problems FreeTDS maintains a list of aliases each charset.</p>
<p>First we discover the names of our minimum required charsets (UTF-8, ISO8859-1 and UCS2). Later, as and when it's needed, we try to discover others.</p>
<p>There is one list of canonic names (GNU iconv names) and two sets of aliases (one for other iconv implementations and another for Sybase). For every canonic charset name we cache the iconv name found during discovery. </p>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga3380140fc6eb9f2090c430f40e846876"></a><!-- doxytag: member="iconv.c::skip_one_input_sequence" ref="ga3380140fc6eb9f2090c430f40e846876" args="(iconv_t cd, const TDS_ENCODING *charset, const char **input, size_t *input_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static size_t skip_one_input_sequence </td>
          <td>(</td>
          <td class="paramtype">iconv_t&nbsp;</td>
          <td class="paramname"> <em>cd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00102.html">TDS_ENCODING</a> *&nbsp;</td>
          <td class="paramname"> <em>charset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&nbsp;</td>
          <td class="paramname"> <em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>input_size</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>Move the input sequence pointer to the next valid position. </p>
<p>Used when an input character cannot be converted. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes to skip. </dd></dl>

</div>
</div>
<a class="anchor" id="ga38c0ac641a8c6e25e91ee9205c3c50c5"></a><!-- doxytag: member="iconv.c::tds_canonical_charset" ref="ga38c0ac641a8c6e25e91ee9205c3c50c5" args="(const char *charset_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int tds_canonical_charset </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>charset_name</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Determine canonical iconv character set. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>canonical position, or -1 if lookup failed. </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Returned name can be used in bytes_per_char(), above. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6561d1dba1a04c168431b16ec17d7e4c"></a><!-- doxytag: member="iconv.c::tds_canonical_charset_name" ref="ga6561d1dba1a04c168431b16ec17d7e4c" args="(const char *charset_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* tds_canonical_charset_name </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>charset_name</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Determine canonical iconv character set name. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>canonical name, or NULL if lookup failed. </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Returned name can be used in bytes_per_char(), above. </dd></dl>

</div>
</div>
<a class="anchor" id="ga58d84206127a9777c9bc6daa66cf75d4"></a><!-- doxytag: member="iconv.c::tds_iconv" ref="ga58d84206127a9777c9bc6daa66cf75d4" args="(TDSSOCKET *tds, const TDSICONV *conv, TDS_ICONV_DIRECTION io, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t tds_iconv </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 <a class="el" href="a00130.html">TDSICONV</a> *&nbsp;</td>
          <td class="paramname"> <em>conv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">TDS_ICONV_DIRECTION&nbsp;</td>
          <td class="paramname"> <em>io</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&nbsp;</td>
          <td class="paramname"> <em>inbuf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>inbytesleft</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>outbuf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>outbytesleft</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Wrapper around iconv(3). </p>
<p>Same parameters, with slightly different behavior. </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>io</em>&nbsp;</td><td>Enumerated value indicating whether the data are being sent to or received from the server. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>conv</em>&nbsp;</td><td>information about the encodings involved, including the iconv(3) conversion descriptors. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>inbuf</em>&nbsp;</td><td>address of pointer to the input buffer of data to be converted. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>inbytesleft</em>&nbsp;</td><td>address of count of bytes in <em>inbuf</em>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>outbuf</em>&nbsp;</td><td>address of pointer to the output buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>outbytesleft</em>&nbsp;</td><td>address of count of bytes in <em>outbuf</em>. </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>number</em>&nbsp;</td><td>of irreversible conversions performed. -1 on error, see iconv(3) documentation for a description of the possible values of <em>errno</em>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Unlike iconv(3), none of the arguments can be nor point to NULL. Like iconv(3), all pointers will be updated. Success is signified by a nonnegative return code and <em>*inbytesleft</em> == 0. If the conversion descriptor in <em>iconv</em> is -1 or NULL, <em>inbuf</em> is copied to <em>outbuf</em>, and all parameters updated accordingly.</dd></dl>
<p>If a character in <em>inbuf</em> cannot be converted because no such cbaracter exists in the <em>outbuf</em> character set, we emit messages similar to the ones Sybase emits when it fails such a conversion. The message varies depending on the direction of the data. On a read error, we emit Msg 2403, Severity 16 (EX_INFO): "WARNING! Some character(s) could not be converted into client's character set. 
			Unconverted bytes were changed to question marks ('?')." On a write error we emit Msg 2402, Severity 16 (EX_USER): "Error converting client characters into server's character set. Some character(s) could not be converted." and return an error code. Client libraries relying on this routine should reflect an error back to the application.</p>
<dl class="todo"><dt><b><a class="el" href="a00306.html#_todo000018">Todo:</a></b></dt><dd><p class="startdd">Check for variable multibyte non-UTF-8 input character set. </p>
<p>Use more robust error message generation. </p>
<p>For reads, cope with <em>outbuf</em> encodings that don't have the equivalent of an ASCII '?'. </p>
<p class="enddd">Support alternative to '?' for the replacement character. </p>
</dd></dl>

</div>
</div>
<a class="anchor" id="gaaa6e5b2df49a1b3e5312f9a4d8f2170f"></a><!-- doxytag: member="iconv.c::tds_iconv_fread" ref="gaaa6e5b2df49a1b3e5312f9a4d8f2170f" args="(iconv_t cd, FILE *stream, size_t field_len, size_t term_len, char *outbuf, size_t *outbytesleft)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t tds_iconv_fread </td>
          <td>(</td>
          <td class="paramtype">iconv_t&nbsp;</td>
          <td class="paramname"> <em>cd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>stream</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>field_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>term_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>outbuf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>outbytesleft</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read a data file, passing the data through iconv(). </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Count of bytes either not read, or read but not converted. Returns zero on success. </dd></dl>

</div>
</div>
<a class="anchor" id="ga3a7a7b4d6ed344127e164dd0b443d790"></a><!-- doxytag: member="iconv.c::tds_iconv_info_init" ref="ga3a7a7b4d6ed344127e164dd0b443d790" args="(TDSICONV *char_conv, int client_canonical, int server_canonical)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int tds_iconv_info_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00130.html">TDSICONV</a> *&nbsp;</td>
          <td class="paramname"> <em>char_conv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>client_canonical</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>server_canonical</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>Open iconv descriptors to convert between character sets (both directions). </p>
<p>1. Look up the canonical names of the character sets. 2. Look up their widths. 3. Ask iconv to open a conversion descriptor. 4. Fail if any of the above offer any resistance. </p>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>The charset names written to <em>iconv</em> will be the canonical names, not necessarily the names passed in. </dd></dl>

</div>
</div>
<a class="anchor" id="gacf6855134e182dd58507838843ca00c2"></a><!-- doxytag: member="iconv.c::tds_sybase_charset_name" ref="gacf6855134e182dd58507838843ca00c2" args="(const char *charset_name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* tds_sybase_charset_name </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>charset_name</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Determine the name Sybase uses for a character set, given a canonical iconv name. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Sybase name, or NULL if lookup failed. </dd></dl>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>Returned name can be sent to Sybase a server. </dd></dl>

</div>
</div>
<a class="anchor" id="ga900b0bce08c6bfc2e7c988f4b5970516"></a><!-- doxytag: member="iconv.c::tds_sys_iconv_open" ref="ga900b0bce08c6bfc2e7c988f4b5970516" args="(const char *tocode, const char *fromcode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">iconv_t tds_sys_iconv_open </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>tocode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>fromcode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inputs are FreeTDS canonical names, no other. </p>
<p>No alias list is consulted. </p>

</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="ga638e76712791b4f8b9faa24f68291d2c"></a><!-- doxytag: member="iconv.c::iconv_gets" ref="ga638e76712791b4f8b9faa24f68291d2c" args="[8]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const iconv_get_t iconv_gets[8]<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
        get_iso1, get_ascii, get_utf16le, get_utf16be, get_ucs4le, get_ucs4be, get_utf8, get_err
}
</pre></div>
</div>
</div>
<a class="anchor" id="gacfc3d74648add23b2dd2d5876eed9797"></a><!-- doxytag: member="iconv.c::iconv_puts" ref="gacfc3d74648add23b2dd2d5876eed9797" args="[8]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const iconv_put_t iconv_puts[8]<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
        put_iso1, put_ascii, put_utf16le, put_utf16be, put_ucs4le, put_ucs4be, put_utf8, put_err
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga833455ee60fba2eff3fd8c157f30fe49"></a><!-- doxytag: member="iconv.c::utf8_lengths" ref="ga833455ee60fba2eff3fd8c157f30fe49" args="[256]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char utf8_lengths[256]<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
        3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
        4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0,
}
</pre></div>
</div>
</div>
<a class="anchor" id="ga7b89bc425ece776bb10e3bb7a141461c"></a><!-- doxytag: member="iconv.c::utf8_masks" ref="ga7b89bc425ece776bb10e3bb7a141461c" args="[7]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned char utf8_masks[7]<code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Initial value:</b><div class="fragment"><pre class="fragment"> {
        0, 0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01
}
</pre></div>
</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>