<!-- 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: Configuration</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 Page</span></a></li> <li><a href="pages.html"><span>Related 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>Configuration<br/> <small> [<a class="el" href="a00305.html">LibTDS API</a>]</small> </h1> <p>Handle reading of configuration. <a href="#_details">More...</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga369c1a907b111eef229a3e679c914281"></a><!-- doxytag: member="config::hex2num" ref="ga369c1a907b111eef229a3e679c914281" args="(char *hex)" --> static int </td><td class="memItemRight" valign="bottom"><b>hex2num</b> (char *hex)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9f90139b7fd8ac8a1b7ec774513786a1"></a><!-- doxytag: member="config::hexdigit" ref="ga9f90139b7fd8ac8a1b7ec774513786a1" args="(int c)" --> static int </td><td class="memItemRight" valign="bottom"><b>hexdigit</b> (int c)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#gaf19ef62b462f3fb2481244580d112883">parse_server_name_for_port</a> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection, <a class="el" href="a00107.html">TDSLOGIN</a> *login)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Check the server name to find port info first Warning: connection-> & login-> are all modified when needed. <a href="#gaf19ef62b462f3fb2481244580d112883"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga332d1b8cbb95d2b56a53020b6fa62170">search_interface_file</a> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection, const char *dir, const char *file, const char *host)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Open and read the file 'file' searching for a logical server by the name of 'host'. <a href="#ga332d1b8cbb95d2b56a53020b6fa62170"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabeebe2f9cbcd6a6ba4f2b6aa059091dc"></a><!-- doxytag: member="config::tds_config_boolean" ref="gabeebe2f9cbcd6a6ba4f2b6aa059091dc" args="(const char *value)" --> int </td><td class="memItemRight" valign="bottom"><b>tds_config_boolean</b> (const char *value)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga17dc881955cfb8421982fee0322ce394"></a><!-- doxytag: member="config::tds_config_encryption" ref="ga17dc881955cfb8421982fee0322ce394" args="(const char *value, TDSCONNECTION *connection)" --> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_encryption</b> (const char *value, <a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga838242db6972bbed17579806a9054ea6"></a><!-- doxytag: member="config::tds_config_env_tdsdump" ref="ga838242db6972bbed17579806a9054ea6" args="(TDSCONNECTION *connection)" --> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_env_tdsdump</b> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa2bb30e61abf0db18f34758585f86ee6"></a><!-- doxytag: member="config::tds_config_env_tdshost" ref="gaa2bb30e61abf0db18f34758585f86ee6" args="(TDSCONNECTION *connection)" --> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_env_tdshost</b> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6da100a712a3ff9dbec46ab88325316c"></a><!-- doxytag: member="config::tds_config_env_tdsport" ref="ga6da100a712a3ff9dbec46ab88325316c" args="(TDSCONNECTION *connection)" --> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_env_tdsport</b> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga8557586d4df6bd00aad98d3e7db70949"></a><!-- doxytag: member="config::tds_config_env_tdsver" ref="ga8557586d4df6bd00aad98d3e7db70949" args="(TDSCONNECTION *connection)" --> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_env_tdsver</b> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac7423e8ab12dd816ec443521e8c4b705"></a><!-- doxytag: member="config::tds_config_login" ref="gac7423e8ab12dd816ec443521e8c4b705" args="(TDSCONNECTION *connection, TDSLOGIN *login)" --> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_login</b> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection, <a class="el" href="a00107.html">TDSLOGIN</a> *login)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">TDS_USMALLINT </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga662970d69d4ab4880a734a774f10f754">tds_config_verstr</a> (const char *tdsver, <a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set TDS version from given string. <a href="#ga662970d69d4ab4880a734a774f10f754"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga48a24de61ee487c736a8775937b8493c">tds_fix_connection</a> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Fix configuration after reading it. <a href="#ga48a24de61ee487c736a8775937b8493c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga860690ac47a80f74c83b25cbd8d7703d"></a><!-- doxytag: member="config::tds_get_compiletime_settings" ref="ga860690ac47a80f74c83b25cbd8d7703d" args="(void)" --> const <a class="el" href="a00093.html">TDS_COMPILETIME_SETTINGS</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga860690ac47a80f74c83b25cbd8d7703d">tds_get_compiletime_settings</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return a structure capturing the compile-time settings provided to the configure script. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#gaf49eca946d1b2457e189de7207e3670c">tds_get_home_file</a> (const char *file)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return filename from HOME directory. <a href="#gaf49eca946d1b2457e189de7207e3670c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga9098567ae179fa9f5ab117d36947f993">tds_lookup_host</a> (const char *servername, char *ip)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the IP address for a hostname. <a href="#ga9098567ae179fa9f5ab117d36947f993"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga45281d1cb2ac649db65d80bb3ff06b66">tds_lookup_port</a> (const char *portname)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Given a portname lookup the port. <a href="#ga45281d1cb2ac649db65d80bb3ff06b66"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3e63911fa1b576b353452295be13765a"></a><!-- doxytag: member="config::tds_parse_conf_section" ref="ga3e63911fa1b576b353452295be13765a" args="(const char *option, const char *value, void *param)" --> void </td><td class="memItemRight" valign="bottom"><b>tds_parse_conf_section</b> (const char *option, const char *value, void *param)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#gaac3f1471754edaaa2ab95b0a31fbf17e">tds_read_conf_file</a> (<a class="el" href="a00094.html">TDSCONNECTION</a> *connection, const char *server)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Read configuration info for given server return 0 on error. <a href="#gaac3f1471754edaaa2ab95b0a31fbf17e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga6580a3a0a6063c8095a3c4405061e068">tds_read_conf_section</a> (FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *param)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Read a section of configuration file (INI style file). <a href="#ga6580a3a0a6063c8095a3c4405061e068"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6be0eed88ec2903157b291ca77081c66"></a><!-- doxytag: member="config::tds_read_conf_sections" ref="ga6be0eed88ec2903157b291ca77081c66" args="(FILE *in, const char *server, TDSCONNECTION *connection)" --> static int </td><td class="memItemRight" valign="bottom"><b>tds_read_conf_sections</b> (FILE *in, const char *server, <a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00094.html">TDSCONNECTION</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga03612ea81c8a94144818b813b126d4ff">tds_read_config_info</a> (<a class="el" href="a00122.html">TDSSOCKET</a> *tds, <a class="el" href="a00107.html">TDSLOGIN</a> *login, <a class="el" href="a00106.html">TDSLOCALE</a> *locale)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="a00297.html#ga03612ea81c8a94144818b813b126d4ff" title="tds_read_config_info() will fill the tds connection structure based on configuration...">tds_read_config_info()</a> will fill the tds connection structure based on configuration information gathered in the following order: 1) Program specified in TDSLOGIN structure 2) The environment variables TDSVER, TDSDUMP, TDSPORT, TDSQUERY, TDSHOST 3) A config file with the following search order: a) a readable file specified by environment variable FREETDSCONF b) a readable file in ~/.freetds.conf c) a readable file in $prefix/etc/freetds.conf 3) ~/.interfaces if exists 4) $SYBASE/interfaces if exists 5) TDS_DEF_* default values <a href="#ga03612ea81c8a94144818b813b126d4ff"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga92087e8f31696931016ced1d3e8466bc">tds_read_interfaces</a> (const char *server, <a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Try to find the IP number and port for a (possibly) logical server name. <a href="#ga92087e8f31696931016ced1d3e8466bc"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00297.html#ga5c7db4ea00d307c2637349ed0799675d">tds_set_interfaces_file_loc</a> (const char *interf)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the full name of interface file. <a href="#ga5c7db4ea00d307c2637349ed0799675d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadc420e4411ba91f044d79d5414b9923d"></a><!-- doxytag: member="config::tds_try_conf_file" ref="gadc420e4411ba91f044d79d5414b9923d" args="(const char *path, const char *how, const char *server, TDSCONNECTION *connection)" --> static int </td><td class="memItemRight" valign="bottom"><b>tds_try_conf_file</b> (const char *path, const char *how, const char *server, <a class="el" href="a00094.html">TDSCONNECTION</a> *connection)</td></tr> <tr><td colspan="2"><h2>Variables</h2></td></tr> <tr><td class="memItemLeft" ><a class="anchor" id="ga2c32497a669f9aa16807adef07dff998"></a><!-- doxytag: member="config::boolean_values" ref="ga2c32497a669f9aa16807adef07dff998" args="[]" --> struct {</td></tr> <tr><td class="memItemLeft" > unsigned char <b>to_return</b></td></tr> <tr><td class="memItemLeft" > char <b>value</b> [7]</td></tr> <tr><td class="memItemLeft" valign="top">} </td><td class="memItemRight" valign="bottom"><b>boolean_values</b> []</td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Handle reading of configuration. </p> <hr/><h2>Function Documentation</h2> <a class="anchor" id="gaf19ef62b462f3fb2481244580d112883"></a><!-- doxytag: member="config.c::parse_server_name_for_port" ref="gaf19ef62b462f3fb2481244580d112883" args="(TDSCONNECTION *connection, TDSLOGIN *login)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int parse_server_name_for_port </td> <td>(</td> <td class="paramtype"><a class="el" href="a00094.html">TDSCONNECTION</a> * </td> <td class="paramname"> <em>connection</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00107.html">TDSLOGIN</a> * </td> <td class="paramname"> <em>login</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Check the server name to find port info first Warning: connection-> & login-> are all modified when needed. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>1 when found, else 0 </dd></dl> </div> </div> <a class="anchor" id="ga332d1b8cbb95d2b56a53020b6fa62170"></a><!-- doxytag: member="config.c::search_interface_file" ref="ga332d1b8cbb95d2b56a53020b6fa62170" args="(TDSCONNECTION *connection, const char *dir, const char *file, const char *host)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int search_interface_file </td> <td>(</td> <td class="paramtype"><a class="el" href="a00094.html">TDSCONNECTION</a> * </td> <td class="paramname"> <em>connection</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>dir</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>file</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>host</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Open and read the file 'file' searching for a logical server by the name of 'host'. </p> <p>If one is found then lookup the IP address and port number and store them in 'connection'</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>dir</em> </td><td>name of base directory for interface file </td></tr> <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>name of the interface file </td></tr> <tr><td valign="top"></td><td valign="top"><em>host</em> </td><td>logical host to search for </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>0 if not fount 1 if found </dd></dl> </div> </div> <a class="anchor" id="ga662970d69d4ab4880a734a774f10f754"></a><!-- doxytag: member="config.c::tds_config_verstr" ref="ga662970d69d4ab4880a734a774f10f754" args="(const char *tdsver, TDSCONNECTION *connection)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TDS_USMALLINT tds_config_verstr </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>tdsver</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00094.html">TDSCONNECTION</a> * </td> <td class="paramname"> <em>connection</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Set TDS version from given string. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>tdsver</em> </td><td>tds string version </td></tr> <tr><td valign="top"></td><td valign="top"><em>connection</em> </td><td>where to store information </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>as encoded hex value: high nybble major, low nybble minor. </dd></dl> </div> </div> <a class="anchor" id="ga48a24de61ee487c736a8775937b8493c"></a><!-- doxytag: member="config.c::tds_fix_connection" ref="ga48a24de61ee487c736a8775937b8493c" args="(TDSCONNECTION *connection)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void tds_fix_connection </td> <td>(</td> <td class="paramtype"><a class="el" href="a00094.html">TDSCONNECTION</a> * </td> <td class="paramname"> <em>connection</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Fix configuration after reading it. </p> <p>Currently this read some environment variables and replace some options. </p> </div> </div> <a class="anchor" id="gaf49eca946d1b2457e189de7207e3670c"></a><!-- doxytag: member="config.c::tds_get_home_file" ref="gaf49eca946d1b2457e189de7207e3670c" args="(const char *file)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static char* tds_get_home_file </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>file</em></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Return filename from HOME directory. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>allocated string or NULL if error </dd></dl> </div> </div> <a class="anchor" id="ga9098567ae179fa9f5ab117d36947f993"></a><!-- doxytag: member="config.c::tds_lookup_host" ref="ga9098567ae179fa9f5ab117d36947f993" args="(const char *servername, char *ip)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int tds_lookup_host </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>servername</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char * </td> <td class="paramname"> <em>ip</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Get the IP address for a hostname. </p> <p>Store server's IP address in the string 'ip' in dotted-decimal notation. (The "hostname" might itself be a dotted-decimal address.</p> <p>If we can't determine the IP address then 'ip' will be set to empty string. </p> </div> </div> <a class="anchor" id="ga45281d1cb2ac649db65d80bb3ff06b66"></a><!-- doxytag: member="config.c::tds_lookup_port" ref="ga45281d1cb2ac649db65d80bb3ff06b66" args="(const char *portname)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int tds_lookup_port </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>portname</em></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Given a portname lookup the port. </p> <p>If we can't determine the port number then return 0. </p> </div> </div> <a class="anchor" id="gaac3f1471754edaaa2ab95b0a31fbf17e"></a><!-- doxytag: member="config.c::tds_read_conf_file" ref="gaac3f1471754edaaa2ab95b0a31fbf17e" args="(TDSCONNECTION *connection, const char *server)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int tds_read_conf_file </td> <td>(</td> <td class="paramtype"><a class="el" href="a00094.html">TDSCONNECTION</a> * </td> <td class="paramname"> <em>connection</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>server</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Read configuration info for given server return 0 on error. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>connection</em> </td><td>where to store configuration </td></tr> <tr><td valign="top"></td><td valign="top"><em>server</em> </td><td>section of file configuration that hold configuration for a server </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga6580a3a0a6063c8095a3c4405061e068"></a><!-- doxytag: member="config.c::tds_read_conf_section" ref="ga6580a3a0a6063c8095a3c4405061e068" args="(FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *param)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int tds_read_conf_section </td> <td>(</td> <td class="paramtype">FILE * </td> <td class="paramname"> <em>in</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>section</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">TDSCONFPARSE </td> <td class="paramname"> <em>tds_conf_parse</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>param</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Read a section of configuration file (INI style file). </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>configuration file </td></tr> <tr><td valign="top"></td><td valign="top"><em>section</em> </td><td>section to read </td></tr> <tr><td valign="top"></td><td valign="top"><em>tds_conf_parse</em> </td><td>callback that receive every entry in section </td></tr> <tr><td valign="top"></td><td valign="top"><em>param</em> </td><td>parameter to pass to callback function </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga03612ea81c8a94144818b813b126d4ff"></a><!-- doxytag: member="config.c::tds_read_config_info" ref="ga03612ea81c8a94144818b813b126d4ff" args="(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00094.html">TDSCONNECTION</a>* tds_read_config_info </td> <td>(</td> <td class="paramtype"><a class="el" href="a00122.html">TDSSOCKET</a> * </td> <td class="paramname"> <em>tds</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00107.html">TDSLOGIN</a> * </td> <td class="paramname"> <em>login</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00106.html">TDSLOCALE</a> * </td> <td class="paramname"> <em>locale</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p><a class="el" href="a00297.html#ga03612ea81c8a94144818b813b126d4ff" title="tds_read_config_info() will fill the tds connection structure based on configuration...">tds_read_config_info()</a> will fill the tds connection structure based on configuration information gathered in the following order: 1) Program specified in TDSLOGIN structure 2) The environment variables TDSVER, TDSDUMP, TDSPORT, TDSQUERY, TDSHOST 3) A config file with the following search order: a) a readable file specified by environment variable FREETDSCONF b) a readable file in ~/.freetds.conf c) a readable file in $prefix/etc/freetds.conf 3) ~/.interfaces if exists 4) $SYBASE/interfaces if exists 5) TDS_DEF_* default values </p> <p>.tdsrc and freetds.conf have been added to make the package easier to integration with various Linux and *BSD distributions. </p> </div> </div> <a class="anchor" id="ga92087e8f31696931016ced1d3e8466bc"></a><!-- doxytag: member="config.c::tds_read_interfaces" ref="ga92087e8f31696931016ced1d3e8466bc" args="(const char *server, TDSCONNECTION *connection)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int tds_read_interfaces </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>server</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00094.html">TDSCONNECTION</a> * </td> <td class="paramname"> <em>connection</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Try to find the IP number and port for a (possibly) logical server name. </p> <dl class="note"><dt><b>Note:</b></dt><dd>This function uses only the interfaces file and is deprecated. </dd></dl> </div> </div> <a class="anchor" id="ga5c7db4ea00d307c2637349ed0799675d"></a><!-- doxytag: member="config.c::tds_set_interfaces_file_loc" ref="ga5c7db4ea00d307c2637349ed0799675d" args="(const char *interf)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int tds_set_interfaces_file_loc </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>interf</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set the full name of interface file. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>interf</em> </td><td>file name </td></tr> </table> </dd> </dl> </div> </div> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Aug 17 22:22:31 2011 for FreeTDS API by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>