JezK
Edit File: a00538.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/> <meta http-equiv="X-UA-Compatible" content="IE=11"/> <meta name="generator" content="Doxygen 1.9.4"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>FreeTDS API: Configuration</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr id="projectrow"> <td id="projectalign"> <div id="projectname">FreeTDS API </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.9.4 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ var searchBox = new SearchBox("searchBox", "search",'Search','.html'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */ </script> <div id="main-nav"></div> </div><!-- top --> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#define-members">Macros</a> | <a href="#func-members">Functions</a> | <a href="#var-members">Variables</a> </div> <div class="headertitle"><div class="title">Configuration<div class="ingroups"><a class="el" href="a00546.html">LibTDS API</a></div></div></div> </div><!--header--> <div class="contents"> <p>Handle reading of configuration. <a href="#details">More...</a></p> <div class="dynheader"> Collaboration diagram for Configuration:</div> <div class="dyncontent"> <div class="center"><!-- SVG 0 --> </div> </div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a> Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00714.html">tdsvername_t</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:gacc70f24c323b7177050339e069a90c56"><td class="memItemLeft" align="right" valign="top"><a id="gacc70f24c323b7177050339e069a90c56" name="gacc70f24c323b7177050339e069a90c56"></a> #define </td><td class="memItemRight" valign="bottom"><b>TDS_FIND</b>(k, b, c)   tds_find(k, b, TDS_VECTOR_SIZE(b), sizeof(b[0]), c)</td></tr> <tr class="separator:gacc70f24c323b7177050339e069a90c56"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ga369c1a907b111eef229a3e679c914281"><td class="memItemLeft" align="right" valign="top"><a id="ga369c1a907b111eef229a3e679c914281" name="ga369c1a907b111eef229a3e679c914281"></a> static int </td><td class="memItemRight" valign="bottom"><b>hex2num</b> (char *hex)</td></tr> <tr class="separator:ga369c1a907b111eef229a3e679c914281"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga9f90139b7fd8ac8a1b7ec774513786a1"><td class="memItemLeft" align="right" valign="top"><a id="ga9f90139b7fd8ac8a1b7ec774513786a1" name="ga9f90139b7fd8ac8a1b7ec774513786a1"></a> static int </td><td class="memItemRight" valign="bottom"><b>hexdigit</b> (int c)</td></tr> <tr class="separator:ga9f90139b7fd8ac8a1b7ec774513786a1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0f9a22fb6744c5224a97ec3f83af4e15"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga0f9a22fb6744c5224a97ec3f83af4e15">parse_server_name_for_port</a> (<a class="el" href="a01118.html">TDSLOGIN</a> *connection, <a class="el" href="a01118.html">TDSLOGIN</a> *login, bool update_server)</td></tr> <tr class="memdesc:ga0f9a22fb6744c5224a97ec3f83af4e15"><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="a00538.html#ga0f9a22fb6744c5224a97ec3f83af4e15">More...</a><br /></td></tr> <tr class="separator:ga0f9a22fb6744c5224a97ec3f83af4e15"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaca20b6e5f5a5ac1727126712dd39564b"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#gaca20b6e5f5a5ac1727126712dd39564b">search_interface_file</a> (<a class="el" href="a01118.html">TDSLOGIN</a> *login, const char *dir, const char *file, const char *host)</td></tr> <tr class="memdesc:gaca20b6e5f5a5ac1727126712dd39564b"><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="a00538.html#gaca20b6e5f5a5ac1727126712dd39564b">More...</a><br /></td></tr> <tr class="separator:gaca20b6e5f5a5ac1727126712dd39564b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa3e087e2df44398cbb4741584d2b4f8e"><td class="memItemLeft" align="right" valign="top"><a id="gaa3e087e2df44398cbb4741584d2b4f8e" name="gaa3e087e2df44398cbb4741584d2b4f8e"></a> int </td><td class="memItemRight" valign="bottom"><b>tds_config_boolean</b> (const char *option, const char *value, <a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:gaa3e087e2df44398cbb4741584d2b4f8e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga409ea4515b5424920b8371295cebaa48"><td class="memItemLeft" align="right" valign="top"><a id="ga409ea4515b5424920b8371295cebaa48" name="ga409ea4515b5424920b8371295cebaa48"></a> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_encryption</b> (const char *value, <a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:ga409ea4515b5424920b8371295cebaa48"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga86080f29fb8f43acebbfbb355a4f4874"><td class="memItemLeft" align="right" valign="top"><a id="ga86080f29fb8f43acebbfbb355a4f4874" name="ga86080f29fb8f43acebbfbb355a4f4874"></a> static int </td><td class="memItemRight" valign="bottom"><b>tds_config_env_tdsdump</b> (<a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:ga86080f29fb8f43acebbfbb355a4f4874"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gac598ca7c689d62d1535874f40132cc44"><td class="memItemLeft" align="right" valign="top"><a id="gac598ca7c689d62d1535874f40132cc44" name="gac598ca7c689d62d1535874f40132cc44"></a> static int </td><td class="memItemRight" valign="bottom"><b>tds_config_env_tdshost</b> (<a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:gac598ca7c689d62d1535874f40132cc44"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga9d076eb297543cb61e07cabd4220d540"><td class="memItemLeft" align="right" valign="top"><a id="ga9d076eb297543cb61e07cabd4220d540" name="ga9d076eb297543cb61e07cabd4220d540"></a> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_env_tdsport</b> (<a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:ga9d076eb297543cb61e07cabd4220d540"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga6d870fe4597d567aac9c4464b04a3c54"><td class="memItemLeft" align="right" valign="top"><a id="ga6d870fe4597d567aac9c4464b04a3c54" name="ga6d870fe4597d567aac9c4464b04a3c54"></a> static void </td><td class="memItemRight" valign="bottom"><b>tds_config_env_tdsver</b> (<a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:ga6d870fe4597d567aac9c4464b04a3c54"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga8db0faf6db365134a553cc4b43b420e5"><td class="memItemLeft" align="right" valign="top"><a id="ga8db0faf6db365134a553cc4b43b420e5" name="ga8db0faf6db365134a553cc4b43b420e5"></a> static int </td><td class="memItemRight" valign="bottom"><b>tds_config_login</b> (<a class="el" href="a01118.html">TDSLOGIN</a> *connection, <a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:ga8db0faf6db365134a553cc4b43b420e5"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga05c73c963f4d8904869c739c556c58a2"><td class="memItemLeft" align="right" valign="top">TDS_USMALLINT * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga05c73c963f4d8904869c739c556c58a2">tds_config_verstr</a> (const char *tdsver, <a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="memdesc:ga05c73c963f4d8904869c739c556c58a2"><td class="mdescLeft"> </td><td class="mdescRight">Set TDS version from given string. <a href="a00538.html#ga05c73c963f4d8904869c739c556c58a2">More...</a><br /></td></tr> <tr class="separator:ga05c73c963f4d8904869c739c556c58a2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0653423fb216a0de1d78c2680db76d04"><td class="memItemLeft" align="right" valign="top"><a id="ga0653423fb216a0de1d78c2680db76d04" name="ga0653423fb216a0de1d78c2680db76d04"></a> static const void * </td><td class="memItemRight" valign="bottom"><b>tds_find</b> (const void *key, const void *base, size_t nelem, size_t width, int(*compar)(const void *, const void *))</td></tr> <tr class="separator:ga0653423fb216a0de1d78c2680db76d04"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gacee4f06ba749b10ee9f2e5bb1c4a8910"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#gacee4f06ba749b10ee9f2e5bb1c4a8910">tds_fix_login</a> (<a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="memdesc:gacee4f06ba749b10ee9f2e5bb1c4a8910"><td class="mdescLeft"> </td><td class="mdescRight">Fix configuration after reading it. <a href="a00538.html#gacee4f06ba749b10ee9f2e5bb1c4a8910">More...</a><br /></td></tr> <tr class="separator:gacee4f06ba749b10ee9f2e5bb1c4a8910"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0c00a50e074cec7fbb0a1de826a4a46b"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00416.html#a1de034b895312fc0cfae0e28f8921a47">TDS_COMPILETIME_SETTINGS</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga0c00a50e074cec7fbb0a1de826a4a46b">tds_get_compiletime_settings</a> (void)</td></tr> <tr class="memdesc:ga0c00a50e074cec7fbb0a1de826a4a46b"><td class="mdescLeft"> </td><td class="mdescRight">Return a structure capturing the compile-time settings provided to the configure script. <a href="a00538.html#ga0c00a50e074cec7fbb0a1de826a4a46b">More...</a><br /></td></tr> <tr class="separator:ga0c00a50e074cec7fbb0a1de826a4a46b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga69275bf4fa96a7bf23fd445638a6e9aa"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga69275bf4fa96a7bf23fd445638a6e9aa">tds_get_home_file</a> (const char *file)</td></tr> <tr class="memdesc:ga69275bf4fa96a7bf23fd445638a6e9aa"><td class="mdescLeft"> </td><td class="mdescRight">Return filename from HOME directory. <a href="a00538.html#ga69275bf4fa96a7bf23fd445638a6e9aa">More...</a><br /></td></tr> <tr class="separator:ga69275bf4fa96a7bf23fd445638a6e9aa"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3945f760ceb97e8854e18589d6f0d241"><td class="memItemLeft" align="right" valign="top">struct addrinfo * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga3945f760ceb97e8854e18589d6f0d241">tds_lookup_host</a> (const char *servername)</td></tr> <tr class="memdesc:ga3945f760ceb97e8854e18589d6f0d241"><td class="mdescLeft"> </td><td class="mdescRight">Get the IP address for a hostname. <a href="a00538.html#ga3945f760ceb97e8854e18589d6f0d241">More...</a><br /></td></tr> <tr class="separator:ga3945f760ceb97e8854e18589d6f0d241"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga15536d5f0812e156705ed168f5b56b35"><td class="memItemLeft" align="right" valign="top"><a id="ga15536d5f0812e156705ed168f5b56b35" name="ga15536d5f0812e156705ed168f5b56b35"></a> TDSRET </td><td class="memItemRight" valign="bottom"><b>tds_lookup_host_set</b> (const char *servername, struct addrinfo **addr)</td></tr> <tr class="separator:ga15536d5f0812e156705ed168f5b56b35"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga45281d1cb2ac649db65d80bb3ff06b66"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga45281d1cb2ac649db65d80bb3ff06b66">tds_lookup_port</a> (const char *portname)</td></tr> <tr class="memdesc:ga45281d1cb2ac649db65d80bb3ff06b66"><td class="mdescLeft"> </td><td class="mdescRight">Given a portname lookup the port. <a href="a00538.html#ga45281d1cb2ac649db65d80bb3ff06b66">More...</a><br /></td></tr> <tr class="separator:ga45281d1cb2ac649db65d80bb3ff06b66"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa786931199373e617afbf7198e251ce8"><td class="memItemLeft" align="right" valign="top"><a id="gaa786931199373e617afbf7198e251ce8" name="gaa786931199373e617afbf7198e251ce8"></a> int </td><td class="memItemRight" valign="bottom"><b>tds_parse_boolean</b> (const char *value, int default_value)</td></tr> <tr class="separator:gaa786931199373e617afbf7198e251ce8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga3e63911fa1b576b353452295be13765a"><td class="memItemLeft" align="right" valign="top"><a id="ga3e63911fa1b576b353452295be13765a" name="ga3e63911fa1b576b353452295be13765a"></a> void </td><td class="memItemRight" valign="bottom"><b>tds_parse_conf_section</b> (const char *option, const char *value, void *param)</td></tr> <tr class="separator:ga3e63911fa1b576b353452295be13765a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga4799b423b5d982dbc8f31b7738255eef"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga4799b423b5d982dbc8f31b7738255eef">tds_read_conf_file</a> (<a class="el" href="a01118.html">TDSLOGIN</a> *login, const char *server)</td></tr> <tr class="memdesc:ga4799b423b5d982dbc8f31b7738255eef"><td class="mdescLeft"> </td><td class="mdescRight">Read configuration info for given server return 0 on error. <a href="a00538.html#ga4799b423b5d982dbc8f31b7738255eef">More...</a><br /></td></tr> <tr class="separator:ga4799b423b5d982dbc8f31b7738255eef"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga44fdbe16827097d947f900d96003de98"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga44fdbe16827097d947f900d96003de98">tds_read_conf_section</a> (FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *param)</td></tr> <tr class="memdesc:ga44fdbe16827097d947f900d96003de98"><td class="mdescLeft"> </td><td class="mdescRight">Read a section of configuration file (INI style file) <a href="a00538.html#ga44fdbe16827097d947f900d96003de98">More...</a><br /></td></tr> <tr class="separator:ga44fdbe16827097d947f900d96003de98"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaf2e820302d0f47191e038442d9a4b459"><td class="memItemLeft" align="right" valign="top"><a id="gaf2e820302d0f47191e038442d9a4b459" name="gaf2e820302d0f47191e038442d9a4b459"></a> static bool </td><td class="memItemRight" valign="bottom"><b>tds_read_conf_sections</b> (FILE *in, const char *server, <a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:gaf2e820302d0f47191e038442d9a4b459"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga9ff2436ea56ddcdecf984acf46ce4b90"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a01118.html">TDSLOGIN</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90">tds_read_config_info</a> (<a class="el" href="a01210.html">TDSSOCKET</a> *tds, <a class="el" href="a01118.html">TDSLOGIN</a> *login, <a class="el" href="a01126.html">TDSLOCALE</a> *locale)</td></tr> <tr class="memdesc:ga9ff2436ea56ddcdecf984acf46ce4b90"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90" title="tds_read_config_info() will fill the tds connection structure based on configuration information gath...">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="a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90">More...</a><br /></td></tr> <tr class="separator:ga9ff2436ea56ddcdecf984acf46ce4b90"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga6631af35ee817f93827c62bbda41674a"><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga6631af35ee817f93827c62bbda41674a">tds_read_interfaces</a> (const char *server, <a class="el" href="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="memdesc:ga6631af35ee817f93827c62bbda41674a"><td class="mdescLeft"> </td><td class="mdescRight">Try to find the IP number and port for a (possibly) logical server name. <a href="a00538.html#ga6631af35ee817f93827c62bbda41674a">More...</a><br /></td></tr> <tr class="separator:ga6631af35ee817f93827c62bbda41674a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga57cea6e376d7c2d28b811a5b0053210c"><td class="memItemLeft" align="right" valign="top">TDSRET </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#ga57cea6e376d7c2d28b811a5b0053210c">tds_set_interfaces_file_loc</a> (const char *interf)</td></tr> <tr class="memdesc:ga57cea6e376d7c2d28b811a5b0053210c"><td class="mdescLeft"> </td><td class="mdescRight">Set the full name of interface file. <a href="a00538.html#ga57cea6e376d7c2d28b811a5b0053210c">More...</a><br /></td></tr> <tr class="separator:ga57cea6e376d7c2d28b811a5b0053210c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa7e9ddb13f45a24a3402f2e21bb24cdc"><td class="memItemLeft" align="right" valign="top"><a id="gaa7e9ddb13f45a24a3402f2e21bb24cdc" name="gaa7e9ddb13f45a24a3402f2e21bb24cdc"></a> static bool </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="a01118.html">TDSLOGIN</a> *login)</td></tr> <tr class="separator:gaa7e9ddb13f45a24a3402f2e21bb24cdc"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gacb8deb2e87152d851124d944d151ddfa"><td class="memItemLeft" align="right" valign="top"><a id="gacb8deb2e87152d851124d944d151ddfa" name="gacb8deb2e87152d851124d944d151ddfa"></a> static int </td><td class="memItemRight" valign="bottom"><b>tds_vername_cmp</b> (const void *key, const void *pelem)</td></tr> <tr class="separator:gacb8deb2e87152d851124d944d151ddfa"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a> Variables</h2></td></tr> <tr class="memitem:gabba989d1ca2c52bada005d42a752fb6a"><td class="memItemLeft" >struct {</td></tr> <tr class="memitem:gabdb79547ea5c54112b48be39b67fc366"><td class="memItemLeft" >    unsigned char   <b>to_return</b></td></tr> <tr class="separator:gabdb79547ea5c54112b48be39b67fc366"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad1c6db49897958d2399d69712acf6eb4"><td class="memItemLeft" >    char   <b>value</b> [7]</td></tr> <tr class="separator:gad1c6db49897958d2399d69712acf6eb4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gabba989d1ca2c52bada005d42a752fb6a"><td class="memItemLeft" valign="top">} </td><td class="memItemRight" valign="bottom"><a class="el" href="a00538.html#gabba989d1ca2c52bada005d42a752fb6a">boolean_values</a> []</td></tr> <tr class="separator:gabba989d1ca2c52bada005d42a752fb6a"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p >Handle reading of configuration. </p> <h2 class="groupheader">Function Documentation</h2> <a id="ga0f9a22fb6744c5224a97ec3f83af4e15" name="ga0f9a22fb6744c5224a97ec3f83af4e15"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga0f9a22fb6744c5224a97ec3f83af4e15">◆ </a></span>parse_server_name_for_port()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static bool parse_server_name_for_port </td> <td>(</td> <td class="paramtype"><a class="el" href="a01118.html">TDSLOGIN</a> * </td> <td class="paramname"><em>connection</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a01118.html">TDSLOGIN</a> * </td> <td class="paramname"><em>login</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>update_server</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">static</span></span> </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="section return"><dt>Returns</dt><dd>true when found, else false </dd></dl> <div class="dynheader"> Here is the call graph for this function:</div> <div class="dyncontent"> <div class="center"><!-- SVG 1 --> </div> </div> </div> </div> <a id="gaca20b6e5f5a5ac1727126712dd39564b" name="gaca20b6e5f5a5ac1727126712dd39564b"></a> <h2 class="memtitle"><span class="permalink"><a href="#gaca20b6e5f5a5ac1727126712dd39564b">◆ </a></span>search_interface_file()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static int search_interface_file </td> <td>(</td> <td class="paramtype"><a class="el" href="a01118.html">TDSLOGIN</a> * </td> <td class="paramname"><em>login</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> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">static</span></span> </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 'login'</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">dir</td><td>name of base directory for interface file </td></tr> <tr><td class="paramname">file</td><td>name of the interface file </td></tr> <tr><td class="paramname">host</td><td>logical host to search for </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 if not fount 1 if found </dd></dl> <div class="dynheader"> Here is the call graph for this function:</div> <div class="dyncontent"> <div class="center"><!-- SVG 2 --> </div> </div> </div> </div> <a id="ga05c73c963f4d8904869c739c556c58a2" name="ga05c73c963f4d8904869c739c556c58a2"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga05c73c963f4d8904869c739c556c58a2">◆ </a></span>tds_config_verstr()</h2> <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="a01118.html">TDSLOGIN</a> * </td> <td class="paramname"><em>login</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set TDS version from given string. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">tdsver</td><td>tds string version </td></tr> <tr><td class="paramname">login</td><td>where to store information </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>as encoded hex value: high nybble major, low nybble minor. </dd></dl> </div> </div> <a id="gacee4f06ba749b10ee9f2e5bb1c4a8910" name="gacee4f06ba749b10ee9f2e5bb1c4a8910"></a> <h2 class="memtitle"><span class="permalink"><a href="#gacee4f06ba749b10ee9f2e5bb1c4a8910">◆ </a></span>tds_fix_login()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void tds_fix_login </td> <td>(</td> <td class="paramtype"><a class="el" href="a01118.html">TDSLOGIN</a> * </td> <td class="paramname"><em>login</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 id="ga0c00a50e074cec7fbb0a1de826a4a46b" name="ga0c00a50e074cec7fbb0a1de826a4a46b"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga0c00a50e074cec7fbb0a1de826a4a46b">◆ </a></span>tds_get_compiletime_settings()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00416.html#a1de034b895312fc0cfae0e28f8921a47">TDS_COMPILETIME_SETTINGS</a> * tds_get_compiletime_settings </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Return a structure capturing the compile-time settings provided to the configure script. </p> <p ><br /> </p> </div> </div> <a id="ga69275bf4fa96a7bf23fd445638a6e9aa" name="ga69275bf4fa96a7bf23fd445638a6e9aa"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga69275bf4fa96a7bf23fd445638a6e9aa">◆ </a></span>tds_get_home_file()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char * tds_get_home_file </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>file</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Return filename from HOME directory. </p> <dl class="section return"><dt>Returns</dt><dd>allocated string or NULL if error </dd></dl> </div> </div> <a id="ga3945f760ceb97e8854e18589d6f0d241" name="ga3945f760ceb97e8854e18589d6f0d241"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga3945f760ceb97e8854e18589d6f0d241">◆ </a></span>tds_lookup_host()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct addrinfo * tds_lookup_host </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>servername</em></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. <br /> </p> <p >If we can't determine the IP address then 'ip' will be set to empty string. </p> </div> </div> <a id="ga45281d1cb2ac649db65d80bb3ff06b66" name="ga45281d1cb2ac649db65d80bb3ff06b66"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga45281d1cb2ac649db65d80bb3ff06b66">◆ </a></span>tds_lookup_port()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">static</span></span> </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 id="ga4799b423b5d982dbc8f31b7738255eef" name="ga4799b423b5d982dbc8f31b7738255eef"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga4799b423b5d982dbc8f31b7738255eef">◆ </a></span>tds_read_conf_file()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool tds_read_conf_file </td> <td>(</td> <td class="paramtype"><a class="el" href="a01118.html">TDSLOGIN</a> * </td> <td class="paramname"><em>login</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>server</em> </td> </tr> <tr> <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 class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">login</td><td>where to store configuration </td></tr> <tr><td class="paramname">server</td><td>section of file configuration that hold configuration for a server </td></tr> </table> </dd> </dl> </div> </div> <a id="ga44fdbe16827097d947f900d96003de98" name="ga44fdbe16827097d947f900d96003de98"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga44fdbe16827097d947f900d96003de98">◆ </a></span>tds_read_conf_section()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool 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> </tr> <tr> <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 class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">in</td><td>configuration file </td></tr> <tr><td class="paramname">section</td><td>section to read </td></tr> <tr><td class="paramname">tds_conf_parse</td><td>callback that receive every entry in section </td></tr> <tr><td class="paramname">param</td><td>parameter to pass to callback function </td></tr> </table> </dd> </dl> </div> </div> <a id="ga9ff2436ea56ddcdecf984acf46ce4b90" name="ga9ff2436ea56ddcdecf984acf46ce4b90"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga9ff2436ea56ddcdecf984acf46ce4b90">◆ </a></span>tds_read_config_info()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a01118.html">TDSLOGIN</a> * tds_read_config_info </td> <td>(</td> <td class="paramtype"><a class="el" href="a01210.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="a01118.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="a01126.html">TDSLOCALE</a> * </td> <td class="paramname"><em>locale</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p><a class="el" href="a00538.html#ga9ff2436ea56ddcdecf984acf46ce4b90" title="tds_read_config_info() will fill the tds connection structure based on configuration information gath...">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 id="ga6631af35ee817f93827c62bbda41674a" name="ga6631af35ee817f93827c62bbda41674a"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga6631af35ee817f93827c62bbda41674a">◆ </a></span>tds_read_interfaces()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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="a01118.html">TDSLOGIN</a> * </td> <td class="paramname"><em>login</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">static</span></span> </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="section note"><dt>Note</dt><dd>This function uses only the interfaces file and is deprecated. </dd></dl> <div class="dynheader"> Here is the call graph for this function:</div> <div class="dyncontent"> <div class="center"><!-- SVG 3 --> </div> </div> </div> </div> <a id="ga57cea6e376d7c2d28b811a5b0053210c" name="ga57cea6e376d7c2d28b811a5b0053210c"></a> <h2 class="memtitle"><span class="permalink"><a href="#ga57cea6e376d7c2d28b811a5b0053210c">◆ </a></span>tds_set_interfaces_file_loc()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TDSRET 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 class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">interf</td><td>file name </td></tr> </table> </dd> </dl> </div> </div> <h2 class="groupheader">Variable Documentation</h2> <a id="gabba989d1ca2c52bada005d42a752fb6a" name="gabba989d1ca2c52bada005d42a752fb6a"></a> <h2 class="memtitle"><span class="permalink"><a href="#gabba989d1ca2c52bada005d42a752fb6a">◆ </a></span></h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const struct { ... } boolean_values[]</td> </tr> </table> </div><div class="memdoc"> <b>Initial value:</b><div class="fragment"><div class="line">= {</div> <div class="line"> { <span class="stringliteral">"yes"</span>, 1 },</div> <div class="line"> { <span class="stringliteral">"no"</span>, 0 },</div> <div class="line"> { <span class="stringliteral">"on"</span>, 1 },</div> <div class="line"> { <span class="stringliteral">"off"</span>, 0 },</div> <div class="line"> { <span class="stringliteral">"true"</span>, 1 },</div> <div class="line"> { <span class="stringliteral">"false"</span>, 0 }</div> <div class="line">}</div> </div><!-- fragment --> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4 </small></address> </body> </html>