24 Dec
2022
24 Dec
'22
13:50
Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package freetds for openSUSE:Factory checked in at 2022-12-24 14:50:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/freetds (Old) and /work/SRC/openSUSE:Factory/.freetds.new.1563 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "freetds" Sat Dec 24 14:50:53 2022 rev:35 rq:1044254 version:1.3.16 Changes: -------- --- /work/SRC/openSUSE:Factory/freetds/freetds.changes 2022-12-07 17:33:15.463978237 +0100 +++ /work/SRC/openSUSE:Factory/.freetds.new.1563/freetds.changes 2022-12-24 14:50:56.955161696 +0100 @@ -1,0 +2,8 @@ +Thu Dec 22 12:41:30 UTC 2022 - Dirk M��ller <dmueller@suse.com> + +- update to 1.3.16: + * tds_close_socket and tds_connection_close could have been called + while reading/writing TLS sockets so calling tds_ssl_deinit + cause some used structure to be released while used. + +------------------------------------------------------------------- Old: ---- freetds-1.3.15.tar.gz New: ---- freetds-1.3.16.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ freetds.spec ++++++ --- /var/tmp/diff_new_pack.4KUxE3/_old 2022-12-24 14:50:57.459164637 +0100 +++ /var/tmp/diff_new_pack.4KUxE3/_new 2022-12-24 14:50:57.467164684 +0100 @@ -17,7 +17,7 @@ Name: freetds -Version: 1.3.15 +Version: 1.3.16 Release: 0 Summary: A free re-implementation of the TDS (Tabular Data Stream) protocol License: GPL-2.0-or-later AND LGPL-2.1-or-later ++++++ freetds-1.3.15.tar.gz -> freetds-1.3.16.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/ChangeLog new/freetds-1.3.16/ChangeLog --- old/freetds-1.3.15/ChangeLog 2022-11-22 10:01:08.000000000 +0100 +++ new/freetds-1.3.16/ChangeLog 2022-12-09 10:01:06.000000000 +0100 @@ -1,4 +1,15 @@ Author: Frediano Ziglio <freddy77@gmail.com> +Date: Thu Dec 8 07:20:01 2022 +0000 + + tds: Fix use-after-free in TLS code + + tds_close_socket and tds_connection_close could have been called + while reading/writing TLS sockets so calling tds_ssl_deinit + cause some used structure to be released while used. + + Reported-by: Jonas B��low + +Author: Frediano Ziglio <freddy77@gmail.com> Date: Mon Nov 21 11:05:07 2022 +0000 odbc: Fix some issues with SQLCopyDesc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/configure new/freetds-1.3.16/configure --- old/freetds-1.3.15/configure 2022-11-22 10:01:14.000000000 +0100 +++ new/freetds-1.3.16/configure 2022-12-09 10:01:12.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for FreeTDS 1.3.15. +# Generated by GNU Autoconf 2.69 for FreeTDS 1.3.16. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='FreeTDS' PACKAGE_TARNAME='freetds' -PACKAGE_VERSION='1.3.15' -PACKAGE_STRING='FreeTDS 1.3.15' +PACKAGE_VERSION='1.3.16' +PACKAGE_STRING='FreeTDS 1.3.16' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1438,7 +1438,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures FreeTDS 1.3.15 to adapt to many kinds of systems. +\`configure' configures FreeTDS 1.3.16 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1508,7 +1508,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of FreeTDS 1.3.15:";; + short | recursive ) echo "Configuration of FreeTDS 1.3.16:";; esac cat <<\_ACEOF @@ -1672,7 +1672,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -FreeTDS configure 1.3.15 +FreeTDS configure 1.3.16 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2377,7 +2377,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by FreeTDS $as_me 1.3.15, which was +It was created by FreeTDS $as_me 1.3.16, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3243,7 +3243,7 @@ # Define the identity of the package. PACKAGE='freetds' - VERSION='1.3.15' + VERSION='1.3.16' cat >>confdefs.h <<_ACEOF @@ -22214,7 +22214,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by FreeTDS $as_me 1.3.15, which was +This file was extended by FreeTDS $as_me 1.3.16, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22280,7 +22280,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -FreeTDS config.status 1.3.15 +FreeTDS config.status 1.3.16 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/configure.ac new/freetds-1.3.16/configure.ac --- old/freetds-1.3.15/configure.ac 2022-11-22 10:01:08.000000000 +0100 +++ new/freetds-1.3.16/configure.ac 2022-12-09 10:01:06.000000000 +0100 @@ -11,7 +11,7 @@ # ------------------------------------------------------------ # Initialization # ------------------------------------------------------------ -AC_INIT(FreeTDS, 1.3.15) +AC_INIT(FreeTDS, 1.3.16) AC_CONFIG_SRCDIR(src/dblib/dblib.c) AC_PREREQ(2.53) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/bsqldb.1 new/freetds-1.3.16/doc/bsqldb.1 --- old/freetds-1.3.15/doc/bsqldb.1 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/bsqldb.1 2022-12-09 10:01:31.000000000 +0100 @@ -1,7 +1,7 @@ .\" cf. groff_mdoc .Dd March 26, 2015 .Dt BSQLDB 1 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Sh NAME .Nm bsqldb .Nd batch SQL script processor using DB-Library diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/bsqlodbc.1 new/freetds-1.3.16/doc/bsqlodbc.1 --- old/freetds-1.3.15/doc/bsqlodbc.1 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/bsqlodbc.1 2022-12-09 10:01:31.000000000 +0100 @@ -1,6 +1,6 @@ .\" cf. groff_mdoc .Dd March 25, 2015 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Dt BSQLODBC FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/datacopy.1 new/freetds-1.3.16/doc/datacopy.1 --- old/freetds-1.3.15/doc/datacopy.1 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/datacopy.1 2022-12-09 10:01:31.000000000 +0100 @@ -1,6 +1,6 @@ .\" cf. groff_mdoc .Dd March 25, 2015 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Dt DATACOPY FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/defncopy.1 new/freetds-1.3.16/doc/defncopy.1 --- old/freetds-1.3.15/doc/defncopy.1 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/defncopy.1 2022-12-09 10:01:31.000000000 +0100 @@ -1,6 +1,6 @@ .\" cf. groff_mdoc .Dd April 26, 2012 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Dt DEFNCOPY FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/fisql.1 new/freetds-1.3.16/doc/fisql.1 --- old/freetds-1.3.15/doc/fisql.1 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/fisql.1 2022-12-09 10:01:31.000000000 +0100 @@ -1,6 +1,6 @@ .\" cf. groff_mdoc .Dd March 25, 2015 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Dt FISQL FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/freebcp.1 new/freetds-1.3.16/doc/freebcp.1 --- old/freetds-1.3.15/doc/freebcp.1 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/freebcp.1 2022-12-09 10:01:31.000000000 +0100 @@ -1,6 +1,6 @@ .\" cf. groff_mdoc .Dd March 25, 2015 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Dt FREEBCP 1 .Sh NAME .Nm freebcp diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/freetds.conf.5 new/freetds-1.3.16/doc/freetds.conf.5 --- old/freetds-1.3.15/doc/freetds.conf.5 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/freetds.conf.5 2022-12-09 10:01:31.000000000 +0100 @@ -1,5 +1,5 @@ .Dd May 2, 2017 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Dt FREETDS.CONF "FreeTDS 5" "FreeTDS Reference Manual" . .Sh NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/osql.1 new/freetds-1.3.16/doc/osql.1 --- old/freetds-1.3.15/doc/osql.1 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/osql.1 2022-12-09 10:01:31.000000000 +0100 @@ -1,6 +1,6 @@ .\" cf. groff_mdoc .Dd April 26, 2012 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Dt OSQL FreeTDS "FreeTDS Reference Manual" .\" .Sh NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/reference/a00077_source.html new/freetds-1.3.16/doc/reference/a00077_source.html --- old/freetds-1.3.15/doc/reference/a00077_source.html 2022-11-22 10:01:45.000000000 +0100 +++ new/freetds-1.3.16/doc/reference/a00077_source.html 2022-12-09 10:01:44.000000000 +0100 @@ -582,7 +582,7 @@ <div class="ttc" id="aa00566_html_ga197c6af67f2e7469d06c2aa055917b1e"><div class="ttname"><a href="a00566.html#ga197c6af67f2e7469d06c2aa055917b1e">tds_dstr_isempty</a></div><div class="ttdeci">static int tds_dstr_isempty(const DSTR *s)</div><div class="ttdoc">test if string is empty</div><div class="ttdef"><b>Definition:</b> string.h:60</div></div> <div class="ttc" id="aa00239_html_ade7df2db455b61edc83819ad60edb339"><div class="ttname"><a href="a00239.html#ade7df2db455b61edc83819ad60edb339">tds_bcp_done</a></div><div class="ttdeci">TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied)</div><div class="ttdoc">Tell we finished sending BCP data to server.</div><div class="ttdef"><b>Definition:</b> bulk.c:836</div></div> <div class="ttc" id="aa00550_html_gada8e987c4a6225b9276c05ba3a4f47a0"><div class="ttname"><a href="a00550.html#gada8e987c4a6225b9276c05ba3a4f47a0">bcp_init</a></div><div class="ttdeci">RETCODE bcp_init(DBPROCESS *dbproc, const char *tblname, const char *hfile, const char *errfile, int direction)</div><div class="ttdoc">Prepare for bulk copy operation on a table.</div><div class="ttdef"><b>Definition:</b> bcp.c:167</div></div> -<div class="ttc" id="aa00564_html_ga954dcc3b0332fa9448d9edf59c0fe439"><div class="ttname"><a href="a00564.html#ga954dcc3b0332fa9448d9edf59c0fe439">tds7_get_instance_ports</a></div><div class="ttdeci">int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)</div><div class="ttdoc">Get port of all instances.</div><div class="ttdef"><b>Definition:</b> net.c:1093</div></div> +<div class="ttc" id="aa00564_html_ga954dcc3b0332fa9448d9edf59c0fe439"><div class="ttname"><a href="a00564.html#ga954dcc3b0332fa9448d9edf59c0fe439">tds7_get_instance_ports</a></div><div class="ttdeci">int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)</div><div class="ttdoc">Get port of all instances.</div><div class="ttdef"><b>Definition:</b> net.c:1091</div></div> <div class="ttc" id="aa00559_html_gaa17936ef93e1c68833c4aab769bd90d9"><div class="ttname"><a href="a00559.html#gaa17936ef93e1c68833c4aab769bd90d9">tds_lookup_host</a></div><div class="ttdeci">struct addrinfo * tds_lookup_host(const char *servername)</div><div class="ttdoc">Get the IP address for a hostname.</div><div class="ttdef"><b>Definition:</b> config.c:987</div></div> <div class="ttc" id="aa01400_html_a230fa5b56ae4e3509a69bd266495732b"><div class="ttname"><a href="a01400.html#a230fa5b56ae4e3509a69bd266495732b">_bcp_convert_out</a></div><div class="ttdeci">static int _bcp_convert_out(DBPROCESS *dbproc, TDSCOLUMN *curcol, BCP_HOSTCOLINFO *hostcol, TDS_UCHAR **p_data, const char *bcpdatefmt)</div><div class="ttdoc">Convert column for output (usually to a file) Conversion is slightly different from input as:</div><div class="ttdef"><b>Definition:</b> bcp.c:725</div></div> <div class="ttc" id="aa00611_html_a5a057d6bbecfac1a85a9fbcd09eaf3a0"><div class="ttname"><a href="a00611.html#a5a057d6bbecfac1a85a9fbcd09eaf3a0">dblib_buffer_row::row_data</a></div><div class="ttdeci">unsigned char * row_data</div><div class="ttdoc">row data, NULL for resinfo->current_row</div><div class="ttdef"><b>Definition:</b> buffering.h:5</div></div> @@ -721,7 +721,7 @@ <div class="ttc" id="aa01143_html_ad8d335a04cf09453a87a8e0b9118eaeb"><div class="ttname"><a href="a01143.html#ad8d335a04cf09453a87a8e0b9118eaeb">tds_login::server_spn</a></div><div class="ttdeci">DSTR server_spn</div><div class="ttdoc">server SPN (in freetds.conf)</div><div class="ttdef"><b>Definition:</b> tds.h:528</div></div> <div class="ttc" id="aa01063_html"><div class="ttname"><a href="a01063.html">tdsdatetime4</a></div><div class="ttdef"><b>Definition:</b> proto.h:56</div></div> <div class="ttc" id="aa01123_html_a81d1931139497023deb1bb75dc0aae7a"><div class="ttname"><a href="a01123.html#a81d1931139497023deb1bb75dc0aae7a">tdsdaterec::minute</a></div><div class="ttdeci">TDS_INT minute</div><div class="ttdoc">0-59</div><div class="ttdef"><b>Definition:</b> tds.h:167</div></div> -<div class="ttc" id="aa00564_html_gac23c12ccb3e8599f10f305e993e216f6"><div class="ttname"><a href="a00564.html#gac23c12ccb3e8599f10f305e993e216f6">tds7_get_instance_port</a></div><div class="ttdeci">int tds7_get_instance_port(struct addrinfo *addr, const char *instance)</div><div class="ttdoc">Get port of given instance.</div><div class="ttdef"><b>Definition:</b> net.c:1229</div></div> +<div class="ttc" id="aa00564_html_gac23c12ccb3e8599f10f305e993e216f6"><div class="ttname"><a href="a00564.html#gac23c12ccb3e8599f10f305e993e216f6">tds7_get_instance_port</a></div><div class="ttdeci">int tds7_get_instance_port(struct addrinfo *addr, const char *instance)</div><div class="ttdoc">Get port of given instance.</div><div class="ttdef"><b>Definition:</b> net.c:1227</div></div> <div class="ttc" id="aa00563_html_ga5f071b94ad7889690762dc85646c74ab"><div class="ttname"><a href="a00563.html#ga5f071b94ad7889690762dc85646c74ab">tds_submit_rpc</a></div><div class="ttdeci">TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)</div><div class="ttdoc">Calls a RPC from server.</div><div class="ttdef"><b>Definition:</b> query.c:1929</div></div> <div class="ttc" id="aa00871_html"><div class="ttname"><a href="a00871.html">cs_diag_msg</a></div><div class="ttdef"><b>Definition:</b> ctlib.h:69</div></div> <div class="ttc" id="aa00449_html_aa8d8044be84bcde003f28ec25a77519caa9d79a3b62e3321332223ac3d1a5b18d"><div class="ttname"><a href="a00449.html#aa8d8044be84bcde003f28ec25a77519caa9d79a3b62e3321332223ac3d1a5b18d">TDS_DONE_ERROR</a></div><div class="ttdeci">@ TDS_DONE_ERROR</div><div class="ttdoc">error occurred</div><div class="ttdef"><b>Definition:</b> tds.h:253</div></div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/reference/a00269_source.html new/freetds-1.3.16/doc/reference/a00269_source.html --- old/freetds-1.3.15/doc/reference/a00269_source.html 2022-11-22 10:01:47.000000000 +0100 +++ new/freetds-1.3.16/doc/reference/a00269_source.html 2022-12-09 10:01:46.000000000 +0100 @@ -497,7 +497,7 @@ <div class="ttc" id="aa00248_html_aa818c1cbf4d16e609b7e4895cc7ed74f"><div class="ttname"><a href="a00248.html#aa818c1cbf4d16e609b7e4895cc7ed74f">tds_swap_numeric</a></div><div class="ttdeci">static void tds_swap_numeric(TDS_NUMERIC *num)</div><div class="ttdoc">Converts numeric from Microsoft representation to internal one (Sybase).</div><div class="ttdef"><b>Definition:</b> data.c:1674</div></div> <div class="ttc" id="aa00449_html"><div class="ttname"><a href="a00449.html">tds.h</a></div><div class="ttdoc">Main include file for libtds.</div></div> <div class="ttc" id="aa00715_html_a616193286e91acc0a5dbe8942550e11e"><div class="ttname"><a href="a00715.html#a616193286e91acc0a5dbe8942550e11e">tds_pbcb::pb</a></div><div class="ttdeci">char * pb</div><div class="ttdoc">buffer</div><div class="ttdef"><b>Definition:</b> bulk.c:61</div></div> -<div class="ttc" id="aa00564_html_ga8560e2536fdcf8f1514d4fa14f90876c"><div class="ttname"><a href="a00564.html#ga8560e2536fdcf8f1514d4fa14f90876c">tds_socket_read</a></div><div class="ttdeci">static int tds_socket_read(TDSCONNECTION *conn, TDSSOCKET *tds, unsigned char *buf, int buflen)</div><div class="ttdoc">Read from an OS socket @TODO remove tds, save error somewhere, report error in another way.</div><div class="ttdef"><b>Definition:</b> net.c:727</div></div> +<div class="ttc" id="aa00564_html_ga8560e2536fdcf8f1514d4fa14f90876c"><div class="ttname"><a href="a00564.html#ga8560e2536fdcf8f1514d4fa14f90876c">tds_socket_read</a></div><div class="ttdeci">static int tds_socket_read(TDSCONNECTION *conn, TDSSOCKET *tds, unsigned char *buf, int buflen)</div><div class="ttdoc">Read from an OS socket @TODO remove tds, save error somewhere, report error in another way.</div><div class="ttdef"><b>Definition:</b> net.c:725</div></div> <div class="ttc" id="aa01231_html_a17b3352a5f14239b2eecc4fc272bfe2a"><div class="ttname"><a href="a01231.html#a17b3352a5f14239b2eecc4fc272bfe2a">tds_connection::env</a></div><div class="ttdeci">TDSENV env</div><div class="ttdoc">environment is shared between all sessions</div><div class="ttdef"><b>Definition:</b> tds.h:1101</div></div> <div class="ttc" id="aa01087_html_a2f0be7677a1bf9c730e3c697bfba21c9"><div class="ttname"><a href="a01087.html#a2f0be7677a1bf9c730e3c697bfba21c9">tds_input_stream::read</a></div><div class="ttdeci">int(* read)(struct tds_input_stream *stream, void *ptr, size_t len)</div><div class="ttdoc">read some data Return 0 if end of stream Return <0 if error (actually not defined)</div><div class="ttdef"><b>Definition:</b> stream.h:35</div></div> <div class="ttc" id="aa01123_html_a82d0cf263d8d4a3abcf84b9a146ddf83"><div class="ttname"><a href="a01123.html#a82d0cf263d8d4a3abcf84b9a146ddf83">tdsdaterec::day</a></div><div class="ttdeci">TDS_INT day</div><div class="ttdoc">day of month (1-31)</div><div class="ttdef"><b>Definition:</b> tds.h:163</div></div> @@ -508,7 +508,7 @@ <div class="ttc" id="aa01103_html"><div class="ttname"><a href="a01103.html">tds_staticin_stream</a></div><div class="ttdoc">input stream to read data from a static buffer</div><div class="ttdef"><b>Definition:</b> stream.h:81</div></div> <div class="ttc" id="aa00239_html_ade7df2db455b61edc83819ad60edb339"><div class="ttname"><a href="a00239.html#ade7df2db455b61edc83819ad60edb339">tds_bcp_done</a></div><div class="ttdeci">TDSRET tds_bcp_done(TDSSOCKET *tds, int *rows_copied)</div><div class="ttdoc">Tell we finished sending BCP data to server.</div><div class="ttdef"><b>Definition:</b> bulk.c:836</div></div> <div class="ttc" id="aa01235_html_a00c22eeebbdb781ab7b9d5e8403e451e"><div class="ttname"><a href="a01235.html#a00c22eeebbdb781ab7b9d5e8403e451e">tds_socket::login</a></div><div class="ttdeci">TDSLOGIN * login</div><div class="ttdoc">config for login stuff.</div><div class="ttdef"><b>Definition:</b> tds.h:1258</div></div> -<div class="ttc" id="aa00564_html_ga954dcc3b0332fa9448d9edf59c0fe439"><div class="ttname"><a href="a00564.html#ga954dcc3b0332fa9448d9edf59c0fe439">tds7_get_instance_ports</a></div><div class="ttdeci">int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)</div><div class="ttdoc">Get port of all instances.</div><div class="ttdef"><b>Definition:</b> net.c:1093</div></div> +<div class="ttc" id="aa00564_html_ga954dcc3b0332fa9448d9edf59c0fe439"><div class="ttname"><a href="a00564.html#ga954dcc3b0332fa9448d9edf59c0fe439">tds7_get_instance_ports</a></div><div class="ttdeci">int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)</div><div class="ttdoc">Get port of all instances.</div><div class="ttdef"><b>Definition:</b> net.c:1091</div></div> <div class="ttc" id="aa00248_html_a84e17808683ba2dd956e811a42e23176"><div class="ttname"><a href="a00248.html#a84e17808683ba2dd956e811a42e23176">tds_generic_put</a></div><div class="ttdeci">TDSRET tds_generic_put(TDSSOCKET *tds, TDSCOLUMN *curcol, int bcp7)</div><div class="ttdoc">Write data to wire.</div><div class="ttdef"><b>Definition:</b> data.c:919</div></div> <div class="ttc" id="aa01163_html_aa9d3f1d6d994fcd5871ca41d7797ae95"><div class="ttname"><a href="a01163.html#aa9d3f1d6d994fcd5871ca41d7797ae95">tds_encoding::canonic</a></div><div class="ttdeci">unsigned char canonic</div><div class="ttdoc">internal numeric index into array of all encodings</div><div class="ttdef"><b>Definition:</b> tds.h:624</div></div> <div class="ttc" id="aa01199_html"><div class="ttname"><a href="a01199.html">tds_cursor</a></div><div class="ttdoc">Holds informations about a cursor.</div><div class="ttdef"><b>Definition:</b> tds.h:937</div></div> @@ -543,7 +543,7 @@ <div class="ttc" id="aa01079_html"><div class="ttname"><a href="a01079.html">pollfd</a></div><div class="ttdef"><b>Definition:</b> poll.h:52</div></div> <div class="ttc" id="aa01231_html_a7dc98cfe507c626073b6e76985a06a8a"><div class="ttname"><a href="a01231.html#a7dc98cfe507c626073b6e76985a06a8a">tds_connection::dyns</a></div><div class="ttdeci">TDSDYNAMIC * dyns</div><div class="ttdoc">list of dynamic allocated for this connection contains only dynamic allocated on the server</div><div class="ttdef"><b>Definition:</b> tds.h:1112</div></div> <div class="ttc" id="aa00562_html_ga1224fb9277112dc2ce12531d2b73b145"><div class="ttname"><a href="a00562.html#ga1224fb9277112dc2ce12531d2b73b145">tds_alloc_row</a></div><div class="ttdeci">TDSRET tds_alloc_row(TDSRESULTINFO *res_info)</div><div class="ttdoc">Allocate space for row store return NULL on out of memory.</div><div class="ttdef"><b>Definition:</b> mem.c:524</div></div> -<div class="ttc" id="aa00564_html_ga6f2ae00407f59fb1ab280fa44a56295e"><div class="ttname"><a href="a00564.html#ga6f2ae00407f59fb1ab280fa44a56295e">tds_goodread</a></div><div class="ttdeci">int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)</div><div class="ttdoc">Loops until we have received some characters return -1 on failure.</div><div class="ttdef"><b>Definition:</b> net.c:916</div></div> +<div class="ttc" id="aa00564_html_ga6f2ae00407f59fb1ab280fa44a56295e"><div class="ttname"><a href="a00564.html#ga6f2ae00407f59fb1ab280fa44a56295e">tds_goodread</a></div><div class="ttdeci">int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)</div><div class="ttdoc">Loops until we have received some characters return -1 on failure.</div><div class="ttdef"><b>Definition:</b> net.c:914</div></div> <div class="ttc" id="aa00743_html_adce28126e9bbd4ef005e3bf181d59745"><div class="ttname"><a href="a00743.html#adce28126e9bbd4ef005e3bf181d59745">tds_time::tm_mon</a></div><div class="ttdeci">int tm_mon</div><div class="ttdoc">month (0-11)</div><div class="ttdef"><b>Definition:</b> convert.c:57</div></div> <div class="ttc" id="aa01223_html_aa9a66245e3c629a07111067cd1fdd0d4"><div class="ttname"><a href="a01223.html#aa9a66245e3c629a07111067cd1fdd0d4">tds_packet::data_len</a></div><div class="ttdeci">unsigned data_len</div><div class="ttdoc">data length, this does not account SMP header, only TDS part</div><div class="ttdef"><b>Definition:</b> tds.h:1071</div></div> <div class="ttc" id="aa01279_html"><div class="ttname"><a href="a01279.html">MD5Context</a></div><div class="ttdef"><b>Definition:</b> md5.h:8</div></div> @@ -606,7 +606,7 @@ <div class="ttc" id="aa01095_html_a8101abd3e9e8d6f90b2ba2717bf7f926"><div class="ttname"><a href="a01095.html#a8101abd3e9e8d6f90b2ba2717bf7f926">tds_datain_stream::wire_size</a></div><div class="ttdeci">size_t wire_size</div><div class="ttdoc">bytes still to read</div><div class="ttdef"><b>Definition:</b> stream.h:65</div></div> <div class="ttc" id="aa00563_html_ga4f1f0a4f77bc4ea1440dfdebc19a157c"><div class="ttname"><a href="a00563.html#ga4f1f0a4f77bc4ea1440dfdebc19a157c">tds5_put_params</a></div><div class="ttdeci">static TDSRET tds5_put_params(TDSSOCKET *tds, TDSPARAMINFO *info, int flags) TDS_WUR</div><div class="ttdoc">Send parameters to server.</div><div class="ttdef"><b>Definition:</b> query.c:1693</div></div> <div class="ttc" id="aa00564_html_ga0cb72d3f6943795c39db1fa692be0a58"><div class="ttname"><a href="a00564.html#ga0cb72d3f6943795c39db1fa692be0a58">tds_get_byte</a></div><div class="ttdeci">unsigned char tds_get_byte(TDSSOCKET *tds)</div><div class="ttdoc">Return a single byte from the input buffer.</div><div class="ttdef"><b>Definition:</b> read.c:72</div></div> -<div class="ttc" id="aa00564_html_gad6f81b48fbcfc18ce0b213dbbea47e30"><div class="ttname"><a href="a00564.html#gad6f81b48fbcfc18ce0b213dbbea47e30">tds_socket_write</a></div><div class="ttdeci">static int tds_socket_write(TDSCONNECTION *conn, TDSSOCKET *tds, const unsigned char *buf, int buflen)</div><div class="ttdoc">Write to an OS socket.</div><div class="ttdef"><b>Definition:</b> net.c:762</div></div> +<div class="ttc" id="aa00564_html_gad6f81b48fbcfc18ce0b213dbbea47e30"><div class="ttname"><a href="a00564.html#gad6f81b48fbcfc18ce0b213dbbea47e30">tds_socket_write</a></div><div class="ttdeci">static int tds_socket_write(TDSCONNECTION *conn, TDSSOCKET *tds, const unsigned char *buf, int buflen)</div><div class="ttdoc">Write to an OS socket.</div><div class="ttdef"><b>Definition:</b> net.c:760</div></div> <div class="ttc" id="aa00239_html_a91cf6a009e823417d6c8849256cb211c"><div class="ttname"><a href="a00239.html#a91cf6a009e823417d6c8849256cb211c">tds5_bcp_add_fixed_columns</a></div><div class="ttdeci">static int tds5_bcp_add_fixed_columns(TDSBCPINFO *bcpinfo, tds_bcp_get_col_data get_col_data, tds_bcp_null_error null_error, int offset, unsigned char *rowbuffer, int start)</div><div class="ttdoc">Add fixed size columns to the row.</div><div class="ttdef"><b>Definition:</b> bulk.c:507</div></div> <div class="ttc" id="aa00563_html_gaf0da49585d39e99780a004ee2ca23479"><div class="ttname"><a href="a00563.html#gaf0da49585d39e99780a004ee2ca23479">tds_submit_optioncmd</a></div><div class="ttdeci">TDSRET tds_submit_optioncmd(TDSSOCKET *tds, TDS_OPTION_CMD command, TDS_OPTION option, TDS_OPTION_ARG *param, TDS_INT param_size)</div><div class="ttdoc">Send option commands to server.</div><div class="ttdef"><b>Definition:</b> query.c:3389</div></div> <div class="ttc" id="aa00564_html_gafae08056186b143f3ef1399307dc9be7"><div class="ttname"><a href="a00564.html#gafae08056186b143f3ef1399307dc9be7">tds_dstr_get</a></div><div class="ttdeci">DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len)</div><div class="ttdoc">Reads a string from wire and put in a DSTR.</div><div class="ttdef"><b>Definition:</b> read.c:293</div></div> @@ -618,7 +618,7 @@ <div class="ttc" id="aa00563_html_ga6455b2991afbf7da90270787f2059d31"><div class="ttname"><a href="a00563.html#ga6455b2991afbf7da90270787f2059d31">tds_next_placeholder</a></div><div class="ttdeci">const char * tds_next_placeholder(const char *start)</div><div class="ttdoc">Get position of next placeholder.</div><div class="ttdef"><b>Definition:</b> query.c:535</div></div> <div class="ttc" id="aa01235_html_a9bb663ee7c71f56f1602cbfcd993018c"><div class="ttname"><a href="a01235.html#a9bb663ee7c71f56f1602cbfcd993018c">tds_socket::out_flag</a></div><div class="ttdeci">unsigned char out_flag</div><div class="ttdoc">output buffer type</div><div class="ttdef"><b>Definition:</b> tds.h:1196</div></div> <div class="ttc" id="aa01067_html"><div class="ttname"><a href="a01067.html">tdsunique</a></div><div class="ttdef"><b>Definition:</b> proto.h:62</div></div> -<div class="ttc" id="aa00564_html_ga2734407109c834c5dda7ff8a45c71230"><div class="ttname"><a href="a00564.html#ga2734407109c834c5dda7ff8a45c71230">tds_goodwrite</a></div><div class="ttdeci">int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)</div><div class="ttdef"><b>Definition:</b> net.c:987</div></div> +<div class="ttc" id="aa00564_html_ga2734407109c834c5dda7ff8a45c71230"><div class="ttname"><a href="a00564.html#ga2734407109c834c5dda7ff8a45c71230">tds_goodwrite</a></div><div class="ttdeci">int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)</div><div class="ttdef"><b>Definition:</b> net.c:985</div></div> <div class="ttc" id="aa01207_html_adc93b94b6b4caf15dcf45297d928a8da"><div class="ttname"><a href="a01207.html#adc93b94b6b4caf15dcf45297d928a8da">tds_dynamic::next</a></div><div class="ttdeci">struct tds_dynamic * next</div><div class="ttdoc">next in linked list, keep first</div><div class="ttdef"><b>Definition:</b> tds.h:978</div></div> <div class="ttc" id="aa01167_html"><div class="ttname"><a href="a01167.html">tds_bcpcoldata</a></div><div class="ttdef"><b>Definition:</b> tds.h:628</div></div> <div class="ttc" id="aa01235_html_ae67d850cfbedf6b1e6b02111d4388d42"><div class="ttname"><a href="a01235.html#ae67d850cfbedf6b1e6b02111d4388d42">tds_socket::in_cancel</a></div><div class="ttdeci">volatile unsigned char in_cancel</div><div class="ttdoc">indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean we have to send cance...</div><div class="ttdef"><b>Definition:</b> tds.h:1248</div></div> @@ -660,7 +660,7 @@ <div class="ttc" id="aa01123_html_a8560717700de586f279af702bac86ad6"><div class="ttname"><a href="a01123.html#a8560717700de586f279af702bac86ad6">tdsdaterec::second</a></div><div class="ttdeci">TDS_INT second</div><div class="ttdoc">0-59</div><div class="ttdef"><b>Definition:</b> tds.h:168</div></div> <div class="ttc" id="aa00562_html_ga282d67682d293810625d87d566443c2d"><div class="ttname"><a href="a00562.html#ga282d67682d293810625d87d566443c2d">tds_alloc_param_data</a></div><div class="ttdeci">void * tds_alloc_param_data(TDSCOLUMN *curparam)</div><div class="ttdoc">Allocate data for a parameter.</div><div class="ttdef"><b>Definition:</b> mem.c:364</div></div> <div class="ttc" id="aa00563_html_ga2a64baaf4aa50ef601a49b801dfdaaf6"><div class="ttname"><a href="a00563.html#ga2a64baaf4aa50ef601a49b801dfdaaf6">tds_cursor_check_allocated</a></div><div class="ttdeci">static bool tds_cursor_check_allocated(TDSCONNECTION *conn, TDSCURSOR *cursor)</div><div class="ttdoc">Check if a cursor is allocated into the server.</div><div class="ttdef"><b>Definition:</b> query.c:2991</div></div> -<div class="ttc" id="aa00564_html_gad7aae89e32444ab30852fee056231403"><div class="ttname"><a href="a00564.html#gad7aae89e32444ab30852fee056231403">tds_select</a></div><div class="ttdeci">int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)</div><div class="ttdoc">Select on a socket until it's available or the timeout expires.</div><div class="ttdef"><b>Definition:</b> net.c:612</div></div> +<div class="ttc" id="aa00564_html_gad7aae89e32444ab30852fee056231403"><div class="ttname"><a href="a00564.html#gad7aae89e32444ab30852fee056231403">tds_select</a></div><div class="ttdeci">int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)</div><div class="ttdoc">Select on a socket until it's available or the timeout expires.</div><div class="ttdef"><b>Definition:</b> net.c:610</div></div> <div class="ttc" id="aa00563_html_ga62c3dc9946acb3ffd1b7ae43424f5b47"><div class="ttname"><a href="a00563.html#ga62c3dc9946acb3ffd1b7ae43424f5b47">TDS_PUT_N_AS_UCS2</a></div><div class="ttdeci">#define TDS_PUT_N_AS_UCS2(tds, s)</div><div class="ttdoc">Utility to convert a constant ascii string to ucs2 and send to server.</div><div class="ttdef"><b>Definition:</b> query.c:110</div></div> <div class="ttc" id="aa00715_html_ad483e0559eaa78104c4978667a0b739c"><div class="ttname"><a href="a00715.html#ad483e0559eaa78104c4978667a0b739c">tds_pbcb::from_malloc</a></div><div class="ttdeci">unsigned int from_malloc</div><div class="ttdoc">true is buffer came from malloc</div><div class="ttdef"><b>Definition:</b> bulk.c:65</div></div> <div class="ttc" id="aa00449_html_a4c070147d189dede5e08a2dc66852678"><div class="ttname"><a href="a00449.html#a4c070147d189dede5e08a2dc66852678">tds_get_size_by_type</a></div><div class="ttdeci">int tds_get_size_by_type(TDS_SERVER_TYPE servertype)</div><div class="ttdoc">Return the number of bytes needed by specified type.</div><div class="ttdef"><b>Definition:</b> tds_types.h:9</div></div> @@ -755,7 +755,7 @@ <div class="ttc" id="aa01063_html"><div class="ttname"><a href="a01063.html">tdsdatetime4</a></div><div class="ttdef"><b>Definition:</b> proto.h:56</div></div> <div class="ttc" id="aa00564_html_gab604dd1d75afa8f852d1a6ee0b681974"><div class="ttname"><a href="a00564.html#gab604dd1d75afa8f852d1a6ee0b681974">tds_setup_socket</a></div><div class="ttdeci">static TDSERRNO tds_setup_socket(TDS_SYS_SOCKET *p_sock, struct addrinfo *addr, unsigned int port, int *p_oserr)</div><div class="ttdoc">Setup the socket and attempt a connection.</div><div class="ttdef"><b>Definition:</b> net.c:249</div></div> <div class="ttc" id="aa01123_html_a81d1931139497023deb1bb75dc0aae7a"><div class="ttname"><a href="a01123.html#a81d1931139497023deb1bb75dc0aae7a">tdsdaterec::minute</a></div><div class="ttdeci">TDS_INT minute</div><div class="ttdoc">0-59</div><div class="ttdef"><b>Definition:</b> tds.h:167</div></div> -<div class="ttc" id="aa00564_html_gac23c12ccb3e8599f10f305e993e216f6"><div class="ttname"><a href="a00564.html#gac23c12ccb3e8599f10f305e993e216f6">tds7_get_instance_port</a></div><div class="ttdeci">int tds7_get_instance_port(struct addrinfo *addr, const char *instance)</div><div class="ttdoc">Get port of given instance.</div><div class="ttdef"><b>Definition:</b> net.c:1229</div></div> +<div class="ttc" id="aa00564_html_gac23c12ccb3e8599f10f305e993e216f6"><div class="ttname"><a href="a00564.html#gac23c12ccb3e8599f10f305e993e216f6">tds7_get_instance_port</a></div><div class="ttdeci">int tds7_get_instance_port(struct addrinfo *addr, const char *instance)</div><div class="ttdoc">Get port of given instance.</div><div class="ttdef"><b>Definition:</b> net.c:1227</div></div> <div class="ttc" id="aa00563_html_gada27f4cfce925240ad33b71b63ca692d"><div class="ttname"><a href="a00563.html#gada27f4cfce925240ad33b71b63ca692d">tds_query_flush_packet</a></div><div class="ttdeci">static TDSRET tds_query_flush_packet(TDSSOCKET *tds)</div><div class="ttdoc">Flush query packet.</div><div class="ttdef"><b>Definition:</b> query.c:178</div></div> <div class="ttc" id="aa00449_html_aca53a637849948c4b7a07f69e40c685c"><div class="ttname"><a href="a00449.html#aca53a637849948c4b7a07f69e40c685c">TDS_SYB_VER</a></div><div class="ttdeci">#define TDS_SYB_VER(maj, min, x)</div><div class="ttdoc">Calc a version number for Sybase.</div><div class="ttdef"><b>Definition:</b> tds.h:1731</div></div> <div class="ttc" id="aa00563_html_ga5f071b94ad7889690762dc85646c74ab"><div class="ttname"><a href="a00563.html#ga5f071b94ad7889690762dc85646c74ab">tds_submit_rpc</a></div><div class="ttdeci">TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)</div><div class="ttdoc">Calls a RPC from server.</div><div class="ttdef"><b>Definition:</b> query.c:1929</div></div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/reference/a00287_source.html new/freetds-1.3.16/doc/reference/a00287_source.html --- old/freetds-1.3.15/doc/reference/a00287_source.html 2022-11-22 10:01:47.000000000 +0100 +++ new/freetds-1.3.16/doc/reference/a00287_source.html 2022-12-09 10:01:46.000000000 +0100 @@ -470,7 +470,7 @@ <div class="ttc" id="aa00564_html_ga410619783bdf2bb60b0f27a5578e0e07"><div class="ttname"><a href="a00564.html#ga410619783bdf2bb60b0f27a5578e0e07">tds_read_packet</a></div><div class="ttdeci">int tds_read_packet(TDSSOCKET *tds)</div><div class="ttdoc">Read in one 'packet' from the server.</div><div class="ttdef"><b>Definition:</b> packet.c:527</div></div> <div class="ttc" id="aa01283_html"><div class="ttname"><a href="a01283.html">tds_dstr</a></div><div class="ttdoc">Structure to hold a string.</div><div class="ttdef"><b>Definition:</b> string.h:36</div></div> <div class="ttc" id="aa01183_html"><div class="ttname"><a href="a01183.html">tds_result_info</a></div><div class="ttdoc">Hold information for any results.</div><div class="ttdef"><b>Definition:</b> tds.h:769</div></div> -<div class="ttc" id="aa00564_html_gad7aae89e32444ab30852fee056231403"><div class="ttname"><a href="a00564.html#gad7aae89e32444ab30852fee056231403">tds_select</a></div><div class="ttdeci">int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)</div><div class="ttdoc">Select on a socket until it's available or the timeout expires.</div><div class="ttdef"><b>Definition:</b> net.c:612</div></div> +<div class="ttc" id="aa00564_html_gad7aae89e32444ab30852fee056231403"><div class="ttname"><a href="a00564.html#gad7aae89e32444ab30852fee056231403">tds_select</a></div><div class="ttdeci">int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)</div><div class="ttdoc">Select on a socket until it's available or the timeout expires.</div><div class="ttdef"><b>Definition:</b> net.c:610</div></div> <div class="ttc" id="aa01235_html_a0b6e65b9d00b3a4efbf78b2d866cca20"><div class="ttname"><a href="a01235.html#a0b6e65b9d00b3a4efbf78b2d866cca20">tds_socket::in_len</a></div><div class="ttdeci">unsigned in_len</div><div class="ttdoc">input buffer length</div><div class="ttdef"><b>Definition:</b> tds.h:1194</div></div> <div class="ttc" id="aa01235_html_a426adbd80f29f477377e42e8f78d3ff0"><div class="ttname"><a href="a01235.html#a426adbd80f29f477377e42e8f78d3ff0">tds_socket::out_pos</a></div><div class="ttdeci">unsigned out_pos</div><div class="ttdoc">current position in out_buf</div><div class="ttdef"><b>Definition:</b> tds.h:1193</div></div> <div class="ttc" id="aa01175_html_a2c2756c00a1099c82d4cfa4da2894672"><div class="ttname"><a href="a01175.html#a2c2756c00a1099c82d4cfa4da2894672">tds_column::column_size</a></div><div class="ttdeci">TDS_INT column_size</div><div class="ttdoc">maximun size of data.</div><div class="ttdef"><b>Definition:</b> tds.h:694</div></div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/reference/a00359_source.html new/freetds-1.3.16/doc/reference/a00359_source.html --- old/freetds-1.3.15/doc/reference/a00359_source.html 2022-11-22 10:01:44.000000000 +0100 +++ new/freetds-1.3.16/doc/reference/a00359_source.html 2022-12-09 10:01:43.000000000 +0100 @@ -634,7 +634,7 @@ <div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="preprocessor">#define PACKAGE_NAME "FreeTDS"</span></div> <div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div> <div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="comment">/* Define to the full name and version of this package. */</span></div> -<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#define PACKAGE_STRING "FreeTDS 1.3.15"</span></div> +<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#define PACKAGE_STRING "FreeTDS 1.3.16"</span></div> <div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div> <div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="comment">/* Define to the one symbol short name of this package. */</span></div> <div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor">#define PACKAGE_TARNAME "freetds"</span></div> @@ -643,7 +643,7 @@ <div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="preprocessor">#define PACKAGE_URL ""</span></div> <div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div> <div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="comment">/* Define to the version of this package. */</span></div> -<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="preprocessor">#define PACKAGE_VERSION "1.3.15"</span></div> +<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="preprocessor">#define PACKAGE_VERSION "1.3.16"</span></div> <div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div> <div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="comment">/* Define to necessary symbol if this constant uses a non-standard name on</span></div> <div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="comment"> your system. */</span></div> @@ -767,7 +767,7 @@ <div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div> <div class="line"><a name="l00697"></a><span class="lineno"> 697</span> </div> <div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="comment">/* Version number of package */</span></div> -<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="preprocessor">#define VERSION "1.3.15"</span></div> +<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="preprocessor">#define VERSION "1.3.16"</span></div> <div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div> <div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="comment">/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most</span></div> <div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="comment"> significant byte first (like Motorola and SPARC, unlike Intel). */</span></div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/reference/a00407_source.html new/freetds-1.3.16/doc/reference/a00407_source.html --- old/freetds-1.3.15/doc/reference/a00407_source.html 2022-11-22 10:01:44.000000000 +0100 +++ new/freetds-1.3.16/doc/reference/a00407_source.html 2022-12-09 10:01:43.000000000 +0100 @@ -70,7 +70,7 @@ </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div> -<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * This file produced from ./encodings.pl on Tue Nov 22 09:01:35 2022</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * This file produced from ./encodings.pl on Fri Dec 9 09:01:33 2022</span></div> <div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> */</span></div> <div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#ifdef TDS_ICONV_ENCODING_TABLES</span></div> <div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/reference/a00449_source.html new/freetds-1.3.16/doc/reference/a00449_source.html --- old/freetds-1.3.15/doc/reference/a00449_source.html 2022-11-22 10:01:45.000000000 +0100 +++ new/freetds-1.3.16/doc/reference/a00449_source.html 2022-12-09 10:01:43.000000000 +0100 @@ -1650,7 +1650,7 @@ <div class="ttc" id="aa00559_html_ga44fdbe16827097d947f900d96003de98"><div class="ttname"><a href="a00559.html#ga44fdbe16827097d947f900d96003de98">tds_read_conf_section</a></div><div class="ttdeci">bool tds_read_conf_section(FILE *in, const char *section, TDSCONFPARSE tds_conf_parse, void *parse_param)</div><div class="ttdoc">Read a section of configuration file (INI style file)</div><div class="ttdef"><b>Definition:</b> config.c:503</div></div> <div class="ttc" id="aa01203_html"><div class="ttname"><a href="a01203.html">tds_env</a></div><div class="ttdoc">Current environment as reported by the server.</div><div class="ttdef"><b>Definition:</b> tds.h:963</div></div> <div class="ttc" id="aa01235_html_a00c22eeebbdb781ab7b9d5e8403e451e"><div class="ttname"><a href="a01235.html#a00c22eeebbdb781ab7b9d5e8403e451e">tds_socket::login</a></div><div class="ttdeci">TDSLOGIN * login</div><div class="ttdoc">config for login stuff.</div><div class="ttdef"><b>Definition:</b> tds.h:1258</div></div> -<div class="ttc" id="aa00564_html_ga954dcc3b0332fa9448d9edf59c0fe439"><div class="ttname"><a href="a00564.html#ga954dcc3b0332fa9448d9edf59c0fe439">tds7_get_instance_ports</a></div><div class="ttdeci">int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)</div><div class="ttdoc">Get port of all instances.</div><div class="ttdef"><b>Definition:</b> net.c:1093</div></div> +<div class="ttc" id="aa00564_html_ga954dcc3b0332fa9448d9edf59c0fe439"><div class="ttname"><a href="a00564.html#ga954dcc3b0332fa9448d9edf59c0fe439">tds7_get_instance_ports</a></div><div class="ttdeci">int tds7_get_instance_ports(FILE *output, struct addrinfo *addr)</div><div class="ttdoc">Get port of all instances.</div><div class="ttdef"><b>Definition:</b> net.c:1091</div></div> <div class="ttc" id="aa00559_html_gaa17936ef93e1c68833c4aab769bd90d9"><div class="ttname"><a href="a00559.html#gaa17936ef93e1c68833c4aab769bd90d9">tds_lookup_host</a></div><div class="ttdeci">struct addrinfo * tds_lookup_host(const char *servername)</div><div class="ttdoc">Get the IP address for a hostname.</div><div class="ttdef"><b>Definition:</b> config.c:987</div></div> <div class="ttc" id="aa00564_html_gad70d59fb317d098b0c9fd29dd77131a8"><div class="ttname"><a href="a00564.html#gad70d59fb317d098b0c9fd29dd77131a8">tds_unget_byte</a></div><div class="ttdeci">void tds_unget_byte(TDSSOCKET *tds)</div><div class="ttdoc">Unget will always work as long as you don't call it twice in a row.</div><div class="ttdef"><b>Definition:</b> read.c:89</div></div> <div class="ttc" id="aa01163_html_aa9d3f1d6d994fcd5871ca41d7797ae95"><div class="ttname"><a href="a01163.html#aa9d3f1d6d994fcd5871ca41d7797ae95">tds_encoding::canonic</a></div><div class="ttdeci">unsigned char canonic</div><div class="ttdoc">internal numeric index into array of all encodings</div><div class="ttdef"><b>Definition:</b> tds.h:624</div></div> @@ -1685,7 +1685,7 @@ <div class="ttc" id="aa01231_html_a7dc98cfe507c626073b6e76985a06a8a"><div class="ttname"><a href="a01231.html#a7dc98cfe507c626073b6e76985a06a8a">tds_connection::dyns</a></div><div class="ttdeci">TDSDYNAMIC * dyns</div><div class="ttdoc">list of dynamic allocated for this connection contains only dynamic allocated on the server</div><div class="ttdef"><b>Definition:</b> tds.h:1112</div></div> <div class="ttc" id="aa00562_html_ga1224fb9277112dc2ce12531d2b73b145"><div class="ttname"><a href="a00562.html#ga1224fb9277112dc2ce12531d2b73b145">tds_alloc_row</a></div><div class="ttdeci">TDSRET tds_alloc_row(TDSRESULTINFO *res_info)</div><div class="ttdoc">Allocate space for row store return NULL on out of memory.</div><div class="ttdef"><b>Definition:</b> mem.c:524</div></div> <div class="ttc" id="aa00559_html_ga9af192306186ddf39e09be0fd4ad8aaf"><div class="ttname"><a href="a00559.html#ga9af192306186ddf39e09be0fd4ad8aaf">tds_read_config_info</a></div><div class="ttdeci">TDSLOGIN * tds_read_config_info(TDSSOCKET *tds, TDSLOGIN *login, TDSLOCALE *locale)</div><div class="ttdoc">tds_read_config_info() will fill the tds connection structure based on configuration information gath...</div><div class="ttdef"><b>Definition:</b> config.c:138</div></div> -<div class="ttc" id="aa00564_html_ga6f2ae00407f59fb1ab280fa44a56295e"><div class="ttname"><a href="a00564.html#ga6f2ae00407f59fb1ab280fa44a56295e">tds_goodread</a></div><div class="ttdeci">int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)</div><div class="ttdoc">Loops until we have received some characters return -1 on failure.</div><div class="ttdef"><b>Definition:</b> net.c:916</div></div> +<div class="ttc" id="aa00564_html_ga6f2ae00407f59fb1ab280fa44a56295e"><div class="ttname"><a href="a00564.html#ga6f2ae00407f59fb1ab280fa44a56295e">tds_goodread</a></div><div class="ttdeci">int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)</div><div class="ttdoc">Loops until we have received some characters return -1 on failure.</div><div class="ttdef"><b>Definition:</b> net.c:914</div></div> <div class="ttc" id="aa00559_html_ga57cea6e376d7c2d28b811a5b0053210c"><div class="ttname"><a href="a00559.html#ga57cea6e376d7c2d28b811a5b0053210c">tds_set_interfaces_file_loc</a></div><div class="ttdeci">TDSRET tds_set_interfaces_file_loc(const char *interfloc)</div><div class="ttdoc">Set the full name of interface file.</div><div class="ttdef"><b>Definition:</b> config.c:961</div></div> <div class="ttc" id="aa01223_html_aa9a66245e3c629a07111067cd1fdd0d4"><div class="ttname"><a href="a01223.html#aa9a66245e3c629a07111067cd1fdd0d4">tds_packet::data_len</a></div><div class="ttdeci">unsigned data_len</div><div class="ttdoc">data length, this does not account SMP header, only TDS part</div><div class="ttdef"><b>Definition:</b> tds.h:1071</div></div> <div class="ttc" id="aa00563_html_gab25de0567ac096e8f8e88490eeddf562"><div class="ttname"><a href="a00563.html#gab25de0567ac096e8f8e88490eeddf562">tds_cursor_dealloc</a></div><div class="ttdeci">TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor)</div><div class="ttdoc">Send a deallocation request to server.</div><div class="ttdef"><b>Definition:</b> query.c:3006</div></div> @@ -1733,7 +1733,7 @@ <div class="ttc" id="aa00563_html_ga6455b2991afbf7da90270787f2059d31"><div class="ttname"><a href="a00563.html#ga6455b2991afbf7da90270787f2059d31">tds_next_placeholder</a></div><div class="ttdeci">const char * tds_next_placeholder(const char *start)</div><div class="ttdoc">Get position of next placeholder.</div><div class="ttdef"><b>Definition:</b> query.c:535</div></div> <div class="ttc" id="aa01235_html_a9bb663ee7c71f56f1602cbfcd993018c"><div class="ttname"><a href="a01235.html#a9bb663ee7c71f56f1602cbfcd993018c">tds_socket::out_flag</a></div><div class="ttdeci">unsigned char out_flag</div><div class="ttdoc">output buffer type</div><div class="ttdef"><b>Definition:</b> tds.h:1196</div></div> <div class="ttc" id="aa00449_html_a87cdae58f91ebe9229206bf0628f8e33"><div class="ttname"><a href="a00449.html#a87cdae58f91ebe9229206bf0628f8e33">tds_states</a></div><div class="ttdeci">tds_states</div><div class="ttdoc">values for tds->state</div><div class="ttdef"><b>Definition:</b> tds.h:789</div></div> -<div class="ttc" id="aa00564_html_ga2734407109c834c5dda7ff8a45c71230"><div class="ttname"><a href="a00564.html#ga2734407109c834c5dda7ff8a45c71230">tds_goodwrite</a></div><div class="ttdeci">int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)</div><div class="ttdef"><b>Definition:</b> net.c:987</div></div> +<div class="ttc" id="aa00564_html_ga2734407109c834c5dda7ff8a45c71230"><div class="ttname"><a href="a00564.html#ga2734407109c834c5dda7ff8a45c71230">tds_goodwrite</a></div><div class="ttdeci">int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)</div><div class="ttdef"><b>Definition:</b> net.c:985</div></div> <div class="ttc" id="aa01207_html_adc93b94b6b4caf15dcf45297d928a8da"><div class="ttname"><a href="a01207.html#adc93b94b6b4caf15dcf45297d928a8da">tds_dynamic::next</a></div><div class="ttdeci">struct tds_dynamic * next</div><div class="ttdoc">next in linked list, keep first</div><div class="ttdef"><b>Definition:</b> tds.h:978</div></div> <div class="ttc" id="aa01167_html"><div class="ttname"><a href="a01167.html">tds_bcpcoldata</a></div><div class="ttdef"><b>Definition:</b> tds.h:628</div></div> <div class="ttc" id="aa01235_html_ae67d850cfbedf6b1e6b02111d4388d42"><div class="ttname"><a href="a01235.html#ae67d850cfbedf6b1e6b02111d4388d42">tds_socket::in_cancel</a></div><div class="ttdeci">volatile unsigned char in_cancel</div><div class="ttdoc">indicate we are waiting a cancel reply; discard tokens till acknowledge; 1 mean we have to send cance...</div><div class="ttdef"><b>Definition:</b> tds.h:1248</div></div> @@ -1767,7 +1767,7 @@ <div class="ttc" id="aa00449_html_a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025"><div class="ttname"><a href="a00449.html#a87cdae58f91ebe9229206bf0628f8e33a4a4fcc1840bee1e09521f08a0184d025">TDS_WRITING</a></div><div class="ttdeci">@ TDS_WRITING</div><div class="ttdoc">client is writing data</div><div class="ttdef"><b>Definition:</b> tds.h:791</div></div> <div class="ttc" id="aa01123_html_a8560717700de586f279af702bac86ad6"><div class="ttname"><a href="a01123.html#a8560717700de586f279af702bac86ad6">tdsdaterec::second</a></div><div class="ttdeci">TDS_INT second</div><div class="ttdoc">0-59</div><div class="ttdef"><b>Definition:</b> tds.h:168</div></div> <div class="ttc" id="aa00562_html_ga282d67682d293810625d87d566443c2d"><div class="ttname"><a href="a00562.html#ga282d67682d293810625d87d566443c2d">tds_alloc_param_data</a></div><div class="ttdeci">void * tds_alloc_param_data(TDSCOLUMN *curparam)</div><div class="ttdoc">Allocate data for a parameter.</div><div class="ttdef"><b>Definition:</b> mem.c:364</div></div> -<div class="ttc" id="aa00564_html_gad7aae89e32444ab30852fee056231403"><div class="ttname"><a href="a00564.html#gad7aae89e32444ab30852fee056231403">tds_select</a></div><div class="ttdeci">int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)</div><div class="ttdoc">Select on a socket until it's available or the timeout expires.</div><div class="ttdef"><b>Definition:</b> net.c:612</div></div> +<div class="ttc" id="aa00564_html_gad7aae89e32444ab30852fee056231403"><div class="ttname"><a href="a00564.html#gad7aae89e32444ab30852fee056231403">tds_select</a></div><div class="ttdeci">int tds_select(TDSSOCKET *tds, unsigned tds_sel, int timeout_seconds)</div><div class="ttdoc">Select on a socket until it's available or the timeout expires.</div><div class="ttdef"><b>Definition:</b> net.c:610</div></div> <div class="ttc" id="aa00449_html_a4c070147d189dede5e08a2dc66852678"><div class="ttname"><a href="a00449.html#a4c070147d189dede5e08a2dc66852678">tds_get_size_by_type</a></div><div class="ttdeci">int tds_get_size_by_type(TDS_SERVER_TYPE servertype)</div><div class="ttdoc">Return the number of bytes needed by specified type.</div><div class="ttdef"><b>Definition:</b> tds_types.h:9</div></div> <div class="ttc" id="aa00563_html_ga3e7b4793c6f799fbc6c174f673bb5b32"><div class="ttname"><a href="a00563.html#ga3e7b4793c6f799fbc6c174f673bb5b32">tds_submit_execute</a></div><div class="ttdeci">TDSRET tds_submit_execute(TDSSOCKET *tds, TDSDYNAMIC *dyn)</div><div class="ttdoc">Sends a previously prepared dynamic statement to the server.</div><div class="ttdef"><b>Definition:</b> query.c:1630</div></div> <div class="ttc" id="aa00562_html_gabdc5fee73b22345c02ab894e49ad7f95"><div class="ttname"><a href="a00562.html#gabdc5fee73b22345c02ab894e49ad7f95">tds_free_input_params</a></div><div class="ttdeci">void tds_free_input_params(TDSDYNAMIC *dyn)</div><div class="ttdoc">Frees all allocated input parameters of a dynamic statement.</div><div class="ttdef"><b>Definition:</b> mem.c:206</div></div> @@ -1835,7 +1835,7 @@ <div class="ttc" id="aa01163_html"><div class="ttname"><a href="a01163.html">tds_encoding</a></div><div class="ttdoc">Information relevant to libiconv.</div><div class="ttdef"><b>Definition:</b> tds.h:618</div></div> <div class="ttc" id="aa00449_html_ac1e460551f1188620ea478238864ac4b"><div class="ttname"><a href="a00449.html#ac1e460551f1188620ea478238864ac4b">tds_writetext_end</a></div><div class="ttdeci">TDSRET tds_writetext_end(TDSSOCKET *tds)</div><div class="ttdoc">Finish sending writetext data.</div><div class="ttdef"><b>Definition:</b> bulk.c:1202</div></div> <div class="ttc" id="aa01123_html_a81d1931139497023deb1bb75dc0aae7a"><div class="ttname"><a href="a01123.html#a81d1931139497023deb1bb75dc0aae7a">tdsdaterec::minute</a></div><div class="ttdeci">TDS_INT minute</div><div class="ttdoc">0-59</div><div class="ttdef"><b>Definition:</b> tds.h:167</div></div> -<div class="ttc" id="aa00564_html_gac23c12ccb3e8599f10f305e993e216f6"><div class="ttname"><a href="a00564.html#gac23c12ccb3e8599f10f305e993e216f6">tds7_get_instance_port</a></div><div class="ttdeci">int tds7_get_instance_port(struct addrinfo *addr, const char *instance)</div><div class="ttdoc">Get port of given instance.</div><div class="ttdef"><b>Definition:</b> net.c:1229</div></div> +<div class="ttc" id="aa00564_html_gac23c12ccb3e8599f10f305e993e216f6"><div class="ttname"><a href="a00564.html#gac23c12ccb3e8599f10f305e993e216f6">tds7_get_instance_port</a></div><div class="ttdeci">int tds7_get_instance_port(struct addrinfo *addr, const char *instance)</div><div class="ttdoc">Get port of given instance.</div><div class="ttdef"><b>Definition:</b> net.c:1227</div></div> <div class="ttc" id="aa00563_html_ga5f071b94ad7889690762dc85646c74ab"><div class="ttname"><a href="a00563.html#ga5f071b94ad7889690762dc85646c74ab">tds_submit_rpc</a></div><div class="ttdeci">TDSRET tds_submit_rpc(TDSSOCKET *tds, const char *rpc_name, TDSPARAMINFO *params, TDSHEADERS *head)</div><div class="ttdoc">Calls a RPC from server.</div><div class="ttdef"><b>Definition:</b> query.c:1929</div></div> <div class="ttc" id="aa01235_html_ae6fc66be718f3211fac3b835557e330e"><div class="ttname"><a href="a01235.html#ae6fc66be718f3211fac3b835557e330e">tds_socket::out_buf_max</a></div><div class="ttdeci">unsigned int out_buf_max</div><div class="ttdoc">Maximum size of packet pointed by out_buf.</div><div class="ttdef"><b>Definition:</b> tds.h:1191</div></div> <div class="ttc" id="aa00449_html_aa8d8044be84bcde003f28ec25a77519ca202254cfd6784404cf1aa22bc7147c86"><div class="ttname"><a href="a00449.html#aa8d8044be84bcde003f28ec25a77519ca202254cfd6784404cf1aa22bc7147c86">TDS_DONE_CANCELLED</a></div><div class="ttdeci">@ TDS_DONE_CANCELLED</div><div class="ttdoc">acknowledging an attention command (usually a cancel)</div><div class="ttdef"><b>Definition:</b> tds.h:257</div></div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/reference/a00488_source.html new/freetds-1.3.16/doc/reference/a00488_source.html --- old/freetds-1.3.15/doc/reference/a00488_source.html 2022-11-22 10:01:45.000000000 +0100 +++ new/freetds-1.3.16/doc/reference/a00488_source.html 2022-12-09 10:01:43.000000000 +0100 @@ -93,12 +93,12 @@ <div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div> <div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/* $Id: 9640daf619734147e3b5ff6a1dad56ad305ffa51 $ */</span></div> <div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div> -<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define TDS_VERSION_NO "freetds v1.3.15"</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define TDS_VERSION_NO "freetds v1.3.16"</span></div> <div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div> <div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#define TDS_VERSION_MAJOR 1</span></div> <div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#define TDS_VERSION_MINOR 3</span></div> -<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define TDS_VERSION_SUBVERSION 15</span></div> -<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define TDS_VERSION_BUILD_NUMBER 692</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define TDS_VERSION_SUBVERSION 16</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define TDS_VERSION_BUILD_NUMBER 709</span></div> <div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div> <div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#endif</span></div> </div><!-- fragment --></div><!-- contents --> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/reference/a00527_source.html new/freetds-1.3.16/doc/reference/a00527_source.html --- old/freetds-1.3.15/doc/reference/a00527_source.html 2022-11-22 10:01:48.000000000 +0100 +++ new/freetds-1.3.16/doc/reference/a00527_source.html 2022-12-09 10:01:46.000000000 +0100 @@ -117,7 +117,7 @@ <div class="ttc" id="aa00562_html_ga1224fb9277112dc2ce12531d2b73b145"><div class="ttname"><a href="a00562.html#ga1224fb9277112dc2ce12531d2b73b145">tds_alloc_row</a></div><div class="ttdeci">TDSRET tds_alloc_row(TDSRESULTINFO *res_info)</div><div class="ttdoc">Allocate space for row store return NULL on out of memory.</div><div class="ttdef"><b>Definition:</b> mem.c:524</div></div> <div class="ttc" id="aa00787_html"><div class="ttname"><a href="a00787.html">namelist</a></div><div class="ttdoc">Holds list of names.</div><div class="ttdef"><b>Definition:</b> token.c:914</div></div> <div class="ttc" id="aa00565_html_ga7f24a7af985cd320788122e98072b7af"><div class="ttname"><a href="a00565.html#ga7f24a7af985cd320788122e98072b7af">tds_token_name</a></div><div class="ttdeci">static const char * tds_token_name(unsigned char marker)</div><div class="ttdoc">Returns string representation for a given token type.</div><div class="ttdef"><b>Definition:</b> token.c:3130</div></div> -<div class="ttc" id="aa00564_html_ga6f2ae00407f59fb1ab280fa44a56295e"><div class="ttname"><a href="a00564.html#ga6f2ae00407f59fb1ab280fa44a56295e">tds_goodread</a></div><div class="ttdeci">int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)</div><div class="ttdoc">Loops until we have received some characters return -1 on failure.</div><div class="ttdef"><b>Definition:</b> net.c:916</div></div> +<div class="ttc" id="aa00564_html_ga6f2ae00407f59fb1ab280fa44a56295e"><div class="ttname"><a href="a00564.html#ga6f2ae00407f59fb1ab280fa44a56295e">tds_goodread</a></div><div class="ttdeci">int tds_goodread(TDSSOCKET *tds, unsigned char *buf, int buflen)</div><div class="ttdoc">Loops until we have received some characters return -1 on failure.</div><div class="ttdef"><b>Definition:</b> net.c:914</div></div> <div class="ttc" id="aa01279_html"><div class="ttname"><a href="a01279.html">MD5Context</a></div><div class="ttdef"><b>Definition:</b> md5.h:8</div></div> <div class="ttc" id="aa00563_html_gab25de0567ac096e8f8e88490eeddf562"><div class="ttname"><a href="a00563.html#gab25de0567ac096e8f8e88490eeddf562">tds_cursor_dealloc</a></div><div class="ttdeci">TDSRET tds_cursor_dealloc(TDSSOCKET *tds, TDSCURSOR *cursor)</div><div class="ttdoc">Send a deallocation request to server.</div><div class="ttdef"><b>Definition:</b> query.c:3006</div></div> <div class="ttc" id="aa01235_html_ab6a91be7f3b9966216e621c60e8151f2"><div class="ttname"><a href="a01235.html#ab6a91be7f3b9966216e621c60e8151f2">tds_socket::in_row</a></div><div class="ttdeci">bool in_row</div><div class="ttdoc">true if we are getting rows</div><div class="ttdef"><b>Definition:</b> tds.h:1246</div></div> @@ -152,7 +152,7 @@ <div class="ttc" id="aa00565_html_ga905d2fa5e1b602817bd16bb0fcf9eadb"><div class="ttname"><a href="a00565.html#ga905d2fa5e1b602817bd16bb0fcf9eadb">tds_process_col_name</a></div><div class="ttdeci">static TDSRET tds_process_col_name(TDSSOCKET *tds)</div><div class="ttdoc">tds_process_col_name() is one half of the result set under TDS 4.2 it contains all the column names,...</div><div class="ttdef"><b>Definition:</b> token.c:1004</div></div> <div class="ttc" id="aa00564_html_gafae08056186b143f3ef1399307dc9be7"><div class="ttname"><a href="a00564.html#gafae08056186b143f3ef1399307dc9be7">tds_dstr_get</a></div><div class="ttdeci">DSTR * tds_dstr_get(TDSSOCKET *tds, DSTR *s, size_t len)</div><div class="ttdoc">Reads a string from wire and put in a DSTR.</div><div class="ttdef"><b>Definition:</b> read.c:293</div></div> <div class="ttc" id="aa01235_html_a9bb663ee7c71f56f1602cbfcd993018c"><div class="ttname"><a href="a01235.html#a9bb663ee7c71f56f1602cbfcd993018c">tds_socket::out_flag</a></div><div class="ttdeci">unsigned char out_flag</div><div class="ttdoc">output buffer type</div><div class="ttdef"><b>Definition:</b> tds.h:1196</div></div> -<div class="ttc" id="aa00564_html_ga2734407109c834c5dda7ff8a45c71230"><div class="ttname"><a href="a00564.html#ga2734407109c834c5dda7ff8a45c71230">tds_goodwrite</a></div><div class="ttdeci">int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)</div><div class="ttdef"><b>Definition:</b> net.c:987</div></div> +<div class="ttc" id="aa00564_html_ga2734407109c834c5dda7ff8a45c71230"><div class="ttname"><a href="a00564.html#ga2734407109c834c5dda7ff8a45c71230">tds_goodwrite</a></div><div class="ttdeci">int tds_goodwrite(TDSSOCKET *tds, const unsigned char *buffer, size_t buflen)</div><div class="ttdef"><b>Definition:</b> net.c:985</div></div> <div class="ttc" id="aa00565_html_gaeec59bca9bd0c5388e245f0d19d9c81a"><div class="ttname"><a href="a00565.html#gaeec59bca9bd0c5388e245f0d19d9c81a">tds_process_tabname</a></div><div class="ttdeci">static TDSRET tds_process_tabname(TDSSOCKET *tds)</div><div class="ttdoc">Process list of table from network.</div><div class="ttdef"><b>Definition:</b> token.c:1188</div></div> <div class="ttc" id="aa01207_html_adc93b94b6b4caf15dcf45297d928a8da"><div class="ttname"><a href="a01207.html#adc93b94b6b4caf15dcf45297d928a8da">tds_dynamic::next</a></div><div class="ttdeci">struct tds_dynamic * next</div><div class="ttdoc">next in linked list, keep first</div><div class="ttdef"><b>Definition:</b> tds.h:978</div></div> <div class="ttc" id="aa01267_html"><div class="ttname"><a href="a01267.html">dlist_ring</a></div><div class="ttdef"><b>Definition:</b> dlist.h:23</div></div> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/tsql.1 new/freetds-1.3.16/doc/tsql.1 --- old/freetds-1.3.15/doc/tsql.1 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/doc/tsql.1 2022-12-09 10:01:31.000000000 +0100 @@ -1,6 +1,6 @@ .\" cf. groff_mdoc .Dd March 25, 2015 -.Os FreeTDS 1.3.15 +.Os FreeTDS 1.3.16 .Dt TSQL FreeTDS "FreeTDS Reference Manual" .Sh NAME .Nm tsql diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/Ambition.html new/freetds-1.3.16/doc/userguide/Ambition.html --- old/freetds-1.3.15/doc/userguide/Ambition.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/Ambition.html 2022-12-09 10:01:40.000000000 +0100 @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>Ambitious ideas</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="contrib.html" title="Chapter��10.��Helping" /><link rel="prev" href="Light.taper.html" title="Light another's taper" /><link rel="next" href="Advocacy.html" title="Advocacy" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Ambitious ideas</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Light.taper.html">Prev</a>��</td><th width="60%" align="center">Chapter��10.��Helping</th><td width="20%" align="right">��<a accesskey="n" href="Advocacy.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Ambition"></a>Ambitious ideas</h2></div></div></div><p>If you want to get your hands really dirty, here are some big ideas to contemplate. </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm70296816"></a><code class="literal">libtds2</code></h3></div></div></div><p>After many years developing <span class="productname">FreeTDS</span>, we've learned quite a bit about the protocol and how to write database libraries. Unfortunately, though, one of the things holding us back ��� and, obviously hampering the project ��� is the underlying utility library.</p><p>This wouldn't be a from-scratch effort; most of the code is already written. What's needed is a more uniform API that better reflects the TDS protocol, and that does <span class="emphasis"><em>not</em></span> attempt character set conversions immediately on receipt of the data. </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm70302320"></a><code class="literal">libstddb</code></h3></div></div></div><p>This would be a new client library modelled after <code class="literal">stdio</code>, a project to demonstrate what database programming should be like. </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm70300400"></a>Server code </h3></div></div></div><p><span class="productname">FreeTDS</span> includes a little stub of a server, but it could be much more useful. One idea would be to make it a front-end to SQLite, thereby creating for the first time a TDS client & server pair composed entirely of free software. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Light.taper.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="contrib.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="Advocacy.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Light another's taper��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Advocacy</td></tr></table></div></body></html> \ No newline at end of file +<!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/html; charset=UTF-8" /><title>Ambitious ideas</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="contrib.html" title="Chapter��10.��Helping" /><link rel="prev" href="Light.taper.html" title="Light another's taper" /><link rel="next" href="Advocacy.html" title="Advocacy" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Ambitious ideas</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Light.taper.html">Prev</a>��</td><th width="60%" align="center">Chapter��10.��Helping</th><td width="20%" align="right">��<a accesskey="n" href="Advocacy.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Ambition"></a>Ambitious ideas</h2></div></div></div><p>If you want to get your hands really dirty, here are some big ideas to contemplate. </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm70673648"></a><code class="literal">libtds2</code></h3></div></div></div><p>After many years developing <span class="productname">FreeTDS</span>, we've learned quite a bit about the protocol and how to write database libraries. Unfortunately, though, one of the things holding us back ��� and, obviously hampering the project ��� is the underlying utility library.</p><p>This wouldn't be a from-scratch effort; most of the code is already written. What's needed is a more uniform API that better reflects the TDS protocol, and that does <span class="emphasis"><em>not</em></span> attempt character set conversions immediately on receipt of the data. </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm70679152"></a><code class="literal">libstddb</code></h3></div></div></div><p>This would be a new client library modelled after <code class="literal">stdio</code>, a project to demonstrate what database programming should be like. </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm70677232"></a>Server code </h3></div></div></div><p><span class="productname">FreeTDS</span> includes a little stub of a server, but it could be much more useful. One idea would be to make it a front-end to SQLite, thereby creating for the first time a TDS client & server pair composed entirely of free software. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Light.taper.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="contrib.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="Advocacy.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Light another's taper��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Advocacy</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/ChoosingTdsProtocol.html new/freetds-1.3.16/doc/userguide/ChoosingTdsProtocol.html --- old/freetds-1.3.15/doc/userguide/ChoosingTdsProtocol.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/ChoosingTdsProtocol.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>Choosing a TDS protocol version</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="install.html" title="Chapter��3.��Install FreeTDS" /><link rel="prev" href="install.html" title="Chapter��3.��Install FreeTDS" /><link rel="next" href="name.lookup.html" title="servername Lookup" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Choosing a <acronym class="acronym">TDS</acronym> protocol version</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="install.html">Prev</a>��</td><th width="60%" alig n="center">Chapter��3.��Install <span class="productname">FreeTDS</span></th><td width="20%" align="right">��<a accesskey="n" href="name.lookup.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="ChoosingTdsProtocol"></a>Choosing a <acronym class="acronym">TDS</acronym> protocol version</h2></div></div></div><p>The <acronym class="acronym">TDS</acronym> protocol version is probably something you'd rather not know even existed, much less something you'd have to choose. But there's not that much to it, really. Unless you run into an incompatibility, you're best off running with the highest protocol version supported by your server. That's what the vendors' own products do, which is why when you read the Sybase or Microsoft documentation you find no mention of <acronym class="acronym">TDS</acronym> versions. - </p><div class="table"><a id="tab.Protocol.by.Product"></a><p class="title"><strong>Table��3.1.��Versions of the <acronym class="acronym">TDS</acronym> Protocol, by Product</strong></p><div class="table-contents"><table class="table" summary="Versions of the TDS Protocol, by Product" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Product</th><th>TDS Version</th><th>Comment</th></tr></thead><tbody><tr><td>Sybase before System 10, Microsoft SQL Server 6.x</td><td>4.2</td><td>Still works with all products, subject to its limitations. </td></tr><tr><td>Sybase System 10 and above</td><td>5.0</td><td>Still the most current protocol used by Sybase. </td></tr><tr><td>Sybase System SQL Anywhere</td><td>5.0 <span class="emphasis"><em>only</em></span> </td><td>Originally Watcom SQL Server, a completely separate codebase. Our best information is that SQL Anywhere first supported TDS in version 5.5.03 using the OpenServer Gateway (OSG), and native TDS 5.0 support arrived with version 6.0. </td></tr><tr><td>Microsoft SQL Server 7.0</td><td>7.0</td><td>Includes support for the extended datatypes in <span class="productname">SQL Server</span> 7.0 (such as char/<span class="structname">varchar</span> fields of more than 255 characters), and support for Unicode.</td></tr><tr><td>Microsoft SQL Server 2000</td><td>7.1</td><td>Include support for <span class="symbol">bigint</span> (64 bit integers), <span class="symbol">variant</span> and collation on all fields. Collation is not widely used. </td></tr><tr><td>Microsoft SQL Server 2005</td><td>7.2</td><td>Includes support for varchar(max), varbinary(max), xml datatypes and MARS<a href="#ftn.idm68819696" class="footnote" id="idm68819696"><sup class="footnote">[a]</sup></a>.</td></tr><tr><td>Microsoft SQL Server 2008</td><td>7.3</td><td>Includes support for time, date, datetime2, datetimeoffset.</td></tr><tr><td>Microsoft SQL Server 2012 or 2014</td><td>7.4</td><td>Includes support for session recovery.</td ></tr></tbody><tbody class="footnotes"><tr><td colspan="3"><div id="ftn.idm68819696" class="footnote"><p><a href="#idm68819696" class="para"><sup class="para">[a] </sup></a><span class="emphasis"><em>Multiple Active Result Sets</em></span>.</p></div></td></tr></tbody></table></div></div><p><br class="table-break" /></p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm68823408"></a>Choosing protocol version since <span class="productname">FreeTDS</span> 1.1</h3></div></div></div><p>Version 1.1 improved the discovery of the protocol version. + </p><div class="table"><a id="tab.Protocol.by.Product"></a><p class="title"><strong>Table��3.1.��Versions of the <acronym class="acronym">TDS</acronym> Protocol, by Product</strong></p><div class="table-contents"><table class="table" summary="Versions of the TDS Protocol, by Product" border="1"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Product</th><th>TDS Version</th><th>Comment</th></tr></thead><tbody><tr><td>Sybase before System 10, Microsoft SQL Server 6.x</td><td>4.2</td><td>Still works with all products, subject to its limitations. </td></tr><tr><td>Sybase System 10 and above</td><td>5.0</td><td>Still the most current protocol used by Sybase. </td></tr><tr><td>Sybase System SQL Anywhere</td><td>5.0 <span class="emphasis"><em>only</em></span> </td><td>Originally Watcom SQL Server, a completely separate codebase. Our best information is that SQL Anywhere first supported TDS in version 5.5.03 using the OpenServer Gateway (OSG), and native TDS 5.0 support arrived with version 6.0. </td></tr><tr><td>Microsoft SQL Server 7.0</td><td>7.0</td><td>Includes support for the extended datatypes in <span class="productname">SQL Server</span> 7.0 (such as char/<span class="structname">varchar</span> fields of more than 255 characters), and support for Unicode.</td></tr><tr><td>Microsoft SQL Server 2000</td><td>7.1</td><td>Include support for <span class="symbol">bigint</span> (64 bit integers), <span class="symbol">variant</span> and collation on all fields. Collation is not widely used. </td></tr><tr><td>Microsoft SQL Server 2005</td><td>7.2</td><td>Includes support for varchar(max), varbinary(max), xml datatypes and MARS<a href="#ftn.idm69196528" class="footnote" id="idm69196528"><sup class="footnote">[a]</sup></a>.</td></tr><tr><td>Microsoft SQL Server 2008</td><td>7.3</td><td>Includes support for time, date, datetime2, datetimeoffset.</td></tr><tr><td>Microsoft SQL Server 2012 or 2014</td><td>7.4</td><td>Includes support for session recovery.</td ></tr></tbody><tbody class="footnotes"><tr><td colspan="3"><div id="ftn.idm69196528" class="footnote"><p><a href="#idm69196528" class="para"><sup class="para">[a] </sup></a><span class="emphasis"><em>Multiple Active Result Sets</em></span>.</p></div></td></tr></tbody></table></div></div><p><br class="table-break" /></p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm69200240"></a>Choosing protocol version since <span class="productname">FreeTDS</span> 1.1</h3></div></div></div><p>Version 1.1 improved the discovery of the protocol version. If you are using Microsoft SQL Server is recommended to leave the version to <strong class="userinput"><code>auto</code></strong> (the default). If you are using any Sybase product you could set version to 5.0 to get faster connections (although <strong class="userinput"><code>auto</code></strong> will work too). - </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm68828784"></a>Choosing protocol version before <span class="productname">FreeTDS</span> 1.1</h3></div></div></div><p> + </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm69205616"></a>Choosing protocol version before <span class="productname">FreeTDS</span> 1.1</h3></div></div></div><p> Choosing the correct <acronym class="acronym">TDS</acronym> protocol version for use with SQL Server can be confusing. Hopefully, these steps will lead you to the correct version. If you have a Sybase server, you should be able to use version 5.0, otherwise, if you have Microsoft SQL Server refer to the following section. </p><p> </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Step 1: Find out which FreeTDS version you are running. You can use the command: `tsql -C`</p></li><li class="listitem"><p>Step 2: Find out what version of Microsoft SQL Server you are running.</p></li><li class="listitem"><p>Step 3: Pick the lower TDS Version number out of what matches steps 1 and 2 from the table below.</p></li></ul></div><p> @@ -17,7 +17,7 @@ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If you are running FreeTDS Version 0.64 or 0.82 with Microsoft SQL Server 2000, use TDS Version 8.0 instead of 7.1.</p></li><li class="listitem"><p>If you are running FreeTDS Version 0.91 or greater with Microsoft SQL Server 2000, use TDS Version 7.1.</p></li><li class="listitem"><p>Please note, this is ONLY if you need Microsoft SQL Server 2000 support.</p></li></ul></div><p> </p><p>For best results, use the highest version of the protocol supported by your server. If you encounter problems, try a lower version. If that works, though, please report it to the mailing list! - </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm68856944"></a>Regarding obsolete versions</h3></div></div></div><p>In the earlier days of <span class="productname">FreeTDS</span>, Microsoft did not release official specs for the TDS protocol. + </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="idm69233776"></a>Regarding obsolete versions</h3></div></div></div><p>In the earlier days of <span class="productname">FreeTDS</span>, Microsoft did not release official specs for the TDS protocol. When MSSQL 2000 (product 8.0) was released, there was semi-official indications from the Microsoft community that the TDS protocol would be version 8.0. So the <span class="productname">FreeTDS</span> developers adopted that version for <span class="productname">FreeTDS</span>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/ConfirmInstall.html new/freetds-1.3.16/doc/userguide/ConfirmInstall.html --- old/freetds-1.3.15/doc/userguide/ConfirmInstall.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/ConfirmInstall.html 2022-12-09 10:01:39.000000000 +0100 @@ -77,7 +77,7 @@ Adaptive Server connection failed There was a problem connecting to the server</code></pre></div></div><p><br class="example-break" /> - <span class="quote">���<span class="quote">Unexpected EOF from the server</span>���</span> seems to be a fairly common message when the wrong TDS version is used. Note that there's no complaint about the login.</p><p>If the right TDS version is used, the server will accept the login packet and examine its contents to authenticate the user. If there's a problem, the server will say so. This is the first time we're receiving a message from the server. <a href="#ftn.idm69282416" class="footnote" id="idm69282416"><sup class="footnote">[8]</sup></a> + <span class="quote">���<span class="quote">Unexpected EOF from the server</span>���</span> seems to be a fairly common message when the wrong TDS version is used. Note that there's no complaint about the login.</p><p>If the right TDS version is used, the server will accept the login packet and examine its contents to authenticate the user. If there's a problem, the server will say so. This is the first time we're receiving a message from the server. <a href="#ftn.idm69667440" class="footnote" id="idm69667440"><sup class="footnote">[8]</sup></a> </p><div class="example"><a id="e.g.bad.login"></a><p class="title"><strong>Example��3.8.��Login failure</strong></p><div class="example-contents"><pre class="screen"> <code class="prompt">$ </code><strong class="userinput"><code>tsql -S <em class="replaceable"><code>servername</code></em> -U notme </code></strong> @@ -86,7 +86,7 @@ Login failed for user 'notme'. Msg 20002, Level 9, State -1, Server OpenClient, Line -1 Adaptive Server connection failed - There was a problem connecting to the server</code></pre></div></div><p><br class="example-break" /></p><h4><a id="idm69289456"></a>Bypassing <code class="filename">freetds.conf</code>:</h4><div class="cmdsynopsis"><p><code class="command">tsql</code> {-H <em class="replaceable"><code>hostname</code></em>} {-p <em class="replaceable"><code>port</code></em>} {-U <em class="replaceable"><code>username</code></em>} [-P<em class="replaceable"><code>password</code></em>] [-C]</p></div><p> + There was a problem connecting to the server</code></pre></div></div><p><br class="example-break" /></p><h4><a id="idm69674480"></a>Bypassing <code class="filename">freetds.conf</code>:</h4><div class="cmdsynopsis"><p><code class="command">tsql</code> {-H <em class="replaceable"><code>hostname</code></em>} {-p <em class="replaceable"><code>port</code></em>} {-U <em class="replaceable"><code>username</code></em>} [-P<em class="replaceable"><code>password</code></em>] [-C]</p></div><p> Keep in mind that the TDS protocol version normally comes from <code class="filename">freetds.conf</code>. When using <span class="command"><strong>tsql</strong></span> this way, the library uses the compiled-in default (set by the <code class="filename">configure</code> script). If that's not what you want, override it using the <code class="envar">TDSVER</code> environment variable.</p><div class="example"><a id="e.g.tsqlhostname"></a><p class="title"><strong>Example��3.9.��Connect with <span class="command">tsql</span> using a hostname and port number</strong></p><div class="example-contents"><pre class="screen"> <code class="prompt">$ </code><strong class="userinput"><code>TDSVER=auto tsql -H <em class="replaceable"><code>hillary</code></em> -p <em class="replaceable"><code>4100</code></em> -U <em class="replaceable"><code>sa</code></em></code></strong> @@ -113,4 +113,4 @@ In your <code class="filename">PWD</code> file, add a <code class="literal">SRV</code> entry specifying the DSN entry for your <code class="filename">odbc.ini</code>. The ODBC tests all build their own <code class="filename">odbc.ini</code> and try to redirect the Driver Manager to it, however this functionality is very DM dependent and may well fail unless you have either <code class="systemitem">iODBC</code> or <code class="systemitem">unixODBC</code>.</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../images/tip.gif" /></td><th align="left">Tip</th></tr><tr><td align="left" valign="top"><p> The <code class="filename">PWD</code> provided by <span class="productname">FreeTDS</span> includes usernames and passwords that probably don't exist on your server. -</p></td></tr></table></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69282416" class="footnote"><p><a href="#idm69282416" class="para"><sup class="para">[8] </sup></a>If you'd like to help the project and want to so something fairly easy but still useful, modify tsql to distinguish clearly between errors returned by the library, and those returned by the server. Errors should be marked <span class="quote">���<span class="quote">error</span>���</span> and don't return <span class="emphasis"><em>state</em></span> or a line number, but can contain an error code (and message) from the operating system.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="PortOverride.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="install.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="pr epodbc.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Port/instance override syntax��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��4.��Preparing ODBC</td></tr></table></div></body></html> \ No newline at end of file +</p></td></tr></table></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69667440" class="footnote"><p><a href="#idm69667440" class="para"><sup class="para">[8] </sup></a>If you'd like to help the project and want to so something fairly easy but still useful, modify tsql to distinguish clearly between errors returned by the library, and those returned by the server. Errors should be marked <span class="quote">���<span class="quote">error</span>���</span> and don't return <span class="emphasis"><em>state</em></span> or a line number, but can contain an error code (and message) from the operating system.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="PortOverride.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="install.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="pr epodbc.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Port/instance override syntax��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��4.��Preparing ODBC</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/Localization.html new/freetds-1.3.16/doc/userguide/Localization.html --- old/freetds-1.3.15/doc/userguide/Localization.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/Localization.html 2022-12-09 10:01:39.000000000 +0100 @@ -5,13 +5,13 @@ an implementation of the <a class="ulink" href="http://www.opengroup.org/onlinepubs/7908799/xsh/iconv.html" target="_top">iconv</a> standard. If no <code class="function">iconv</code> library is found, or if it is explicitly disabled, <span class="productname">FreeTDS</span> will use its built-in <code class="function">iconv</code> substitute, and will be capable of converting among only <acronym class="acronym">ISO 8859-1</acronym>, <acronym class="acronym">UTF-8</acronym>, -<acronym class="acronym">UCS-2</acronym>, <acronym class="acronym">UTF-16</acronym> and <acronym class="acronym">UTF-16</acronym>.</p><p>To learn what character set the client wants, <span class="productname">FreeTDS</span> prefers the applicable <a class="link" href="freetdsconf.html#clientcharset"><code class="filename">freetds.conf</code></a> <code class="literal">client charset</code> property. If that is not set, it parses the <code class="envar">LANG</code> environment variable. In either case, the found string is passed to <code class="function">iconv</code>(3) (or its built-in replacement). <a href="#ftn.idm69633264" class="footnote" id="idm69633264"><sup class="footnote">[17]</sup></a>. If neither is found, <acronym class="acronym">UCS-2</acronym> data are converted to <acronym class="acronym">ISO 8859-1</acronym>.</p><p>To list all supported iconv character sets try <span class="command"><strong>iconv</strong></span>(1). GNU's does:</p><pre class="screen"> +<acronym class="acronym">UCS-2</acronym>, <acronym class="acronym">UTF-16</acronym> and <acronym class="acronym">UTF-16</acronym>.</p><p>To learn what character set the client wants, <span class="productname">FreeTDS</span> prefers the applicable <a class="link" href="freetdsconf.html#clientcharset"><code class="filename">freetds.conf</code></a> <code class="literal">client charset</code> property. If that is not set, it parses the <code class="envar">LANG</code> environment variable. In either case, the found string is passed to <code class="function">iconv</code>(3) (or its built-in replacement). <a href="#ftn.idm69989616" class="footnote" id="idm69989616"><sup class="footnote">[17]</sup></a>. If neither is found, <acronym class="acronym">UCS-2</acronym> data are converted to <acronym class="acronym">ISO 8859-1</acronym>.</p><p>To list all supported iconv character sets try <span class="command"><strong>iconv</strong></span>(1). GNU's does:</p><pre class="screen"> <code class="prompt">$ </code><strong class="userinput"><code>iconv --list</code></strong></pre><p>For other systems, consult your documentation (most likely <span class="command"><strong>man iconv</strong></span> will give you some hints).</p><p>In this example a server named <code class="literal">mssql</code> will return data encoded in the GREEK character set.</p><div class="example"><a id="e.g.GREEK"></a><p class="title"><strong>Example��5.2.��Configuring for GREEK <code class="filename">freetds.conf</code> setting</strong></p><div class="example-contents"><pre class="programlisting"> [mssql] host = ntbox.mydomain.com port = 1433 client charset = GREEK - </pre></div></div><br class="example-break" /><p>If <span class="productname">FreeTDS</span> runs into a character it can not convert, its behavior varies according to the severity of the problem. On retrieving data from the server, <span class="productname">FreeTDS</span> substitutes an <acronym class="acronym">ASCII</acronym> '?' in the character's place, and emits a warning message stating that some characters could not be converted. On sending data to the server, <span class="productname">FreeTDS</span> aborts the query and emits an error message. It is well to ensure that the data contained in the database is representable in the client's character set.</p><p>If you have a mix of character data that can not be contained in a single-byte character set, you may wish to use <acronym class="acronym">UTF-8</acronym>. <acronym class="acronym">UTF-8</acronym> is a variable length unicode encoding that is compatible with <acronym class="acronym">ASCII</acronym> in the range 0 to 1 27. With <acronym class="acronym">UTF-8</acronym>, you are guaranteed to never have an unconvertible character.</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../images/important.gif" /></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p><span class="productname">FreeTDS</span> is not fully compatible with multi-byte character sets such as <acronym class="acronym">UCS-2</acronym>. You must use an ASCII-extension charset (e.g., UTF-8, ISO-8859-*)<a href="#ftn.idm69651696" class="footnote" id="idm69651696"><sup class="footnote">[18]</sup></a>. Great care should be taken testing applications using these encodings. Specifically, many applications do not expect the number of characters returned to exceed the column size (in bytes).</p></td></tr></table></div><p>In the following example, a server named <code cl ass="literal">mssql</code> will return data encoded in the <acronym class="acronym">UTF-8</acronym> character set.</p><div class="example"><a id="e.g.UTF8"></a><p class="title"><strong>Example��5.3.��Configuring for <acronym class="acronym">UTF-8</acronym> <code class="filename">freetds.conf</code> setting</strong></p><div class="example-contents"><pre class="programlisting"> + </pre></div></div><br class="example-break" /><p>If <span class="productname">FreeTDS</span> runs into a character it can not convert, its behavior varies according to the severity of the problem. On retrieving data from the server, <span class="productname">FreeTDS</span> substitutes an <acronym class="acronym">ASCII</acronym> '?' in the character's place, and emits a warning message stating that some characters could not be converted. On sending data to the server, <span class="productname">FreeTDS</span> aborts the query and emits an error message. It is well to ensure that the data contained in the database is representable in the client's character set.</p><p>If you have a mix of character data that can not be contained in a single-byte character set, you may wish to use <acronym class="acronym">UTF-8</acronym>. <acronym class="acronym">UTF-8</acronym> is a variable length unicode encoding that is compatible with <acronym class="acronym">ASCII</acronym> in the range 0 to 1 27. With <acronym class="acronym">UTF-8</acronym>, you are guaranteed to never have an unconvertible character.</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../images/important.gif" /></td><th align="left">Important</th></tr><tr><td align="left" valign="top"><p><span class="productname">FreeTDS</span> is not fully compatible with multi-byte character sets such as <acronym class="acronym">UCS-2</acronym>. You must use an ASCII-extension charset (e.g., UTF-8, ISO-8859-*)<a href="#ftn.idm70008048" class="footnote" id="idm70008048"><sup class="footnote">[18]</sup></a>. Great care should be taken testing applications using these encodings. Specifically, many applications do not expect the number of characters returned to exceed the column size (in bytes).</p></td></tr></table></div><p>In the following example, a server named <code cl ass="literal">mssql</code> will return data encoded in the <acronym class="acronym">UTF-8</acronym> character set.</p><div class="example"><a id="e.g.UTF8"></a><p class="title"><strong>Example��5.3.��Configuring for <acronym class="acronym">UTF-8</acronym> <code class="filename">freetds.conf</code> setting</strong></p><div class="example-contents"><pre class="programlisting"> [mssql] host = ntbox.mydomain.com port = 1433 @@ -21,7 +21,7 @@ </p><div class="informalexample"><pre class="screen"> INSERT INTO tablename (greeting) VALUES ('Hall��')</pre></div><p> - the string is subject to somewhat surprising treatment by the server.</p><p>When the server parses the SQL, it extracts the data values for insertion (or update, or comparison, etc.) Unprefixed strings are converted to the single-byte character set of the server/database.<a href="#ftn.idm69659888" class="footnote" id="idm69659888"><sup class="footnote">[19]</sup></a> Inserted data are then of course stored in the column. In the case of UCS-2 columns ��� <code class="literal">nchar</code>, <code class="literal">nvarchar</code>, and <code class="literal">ntext</code> ��� the value stored is that which results from a <span class="emphasis"><em>second</em></span> conversion: from the single-byte form to the <acronym class="acronym">UCS-2</acronym> form.</p><p>The <span class="emphasis"><em>only</em></span> safe way to enclose strings in SQL text is with an 'N' prefix: + the string is subject to somewhat surprising treatment by the server.</p><p>When the server parses the SQL, it extracts the data values for insertion (or update, or comparison, etc.) Unprefixed strings are converted to the single-byte character set of the server/database.<a href="#ftn.idm70016240" class="footnote" id="idm70016240"><sup class="footnote">[19]</sup></a> Inserted data are then of course stored in the column. In the case of UCS-2 columns ��� <code class="literal">nchar</code>, <code class="literal">nvarchar</code>, and <code class="literal">ntext</code> ��� the value stored is that which results from a <span class="emphasis"><em>second</em></span> conversion: from the single-byte form to the <acronym class="acronym">UCS-2</acronym> form.</p><p>The <span class="emphasis"><em>only</em></span> safe way to enclose strings in SQL text is with an 'N' prefix: </p><div class="informalexample"><pre class="screen"> - INSERT INTO tablename (greeting) VALUES (N'Hall��')</pre></div><p> </p><h4><a id="idm69663728"></a>Commentary</h4><p>What's surprising about this? Versions 7.0 and later of the TDS protocol use UCS-2 to send SQL text. No matter how your local client is configured ��� with <acronym class="acronym">UCS-2</acronym> or <acronym class="acronym">ISO 8859-1</acronym> or anything else ��� it's converted to <acronym class="acronym">UCS-2</acronym> before it's sent to the server. And obviously arrives at the server as <acronym class="acronym">UCS-2</acronym>. If the column into which it's being inserted is also <acronym class="acronym">UCS-2</acronym>, there's no need of <span class="emphasis"><em>any</em></span> conversion, much less two, and <span class="emphasis"><em>certainly</em></span> no need to lose information.</p><p>Why this happens is anyone's guess. Here's one: it makes the datatype of the column unimportant. Regardless of whether you use char/varchar/text or nchar/nvarc har/ntext or a mixture of the two, the arriving SQL (if na��vely written) will store exactly the same characters.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69633264" class="footnote"><p><a href="#idm69633264" class="para"><sup class="para">[17] </sup></a>The built-in replacement expects GNU iconv names: <code class="literal">ISO-8859-1</code>, <code class="literal">US-ASCII</code>, or <code class="literal">UTF-8</code>.</p></div><div id="ftn.idm69651696" class="footnote"><p><a href="#idm69651696" class="para"><sup class="para">[18] </sup></a>not EBCDIC or other weird charsets</p></div><div id="ftn.idm69659888" class="footnote"><p><a href="#idm69659888" class="para"><sup class="para">[19] </sup></a>The precise rules are unknown to the author.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configs.html">Prev</a>� �</td><td width="20%" align="center"><a accesskey="u" href="configs.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="domains.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter��5.��Advanced Configurations��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Domain Logins</td></tr></table></div></body></html> \ No newline at end of file + INSERT INTO tablename (greeting) VALUES (N'Hall��')</pre></div><p> </p><h4><a id="idm70020080"></a>Commentary</h4><p>What's surprising about this? Versions 7.0 and later of the TDS protocol use UCS-2 to send SQL text. No matter how your local client is configured ��� with <acronym class="acronym">UCS-2</acronym> or <acronym class="acronym">ISO 8859-1</acronym> or anything else ��� it's converted to <acronym class="acronym">UCS-2</acronym> before it's sent to the server. And obviously arrives at the server as <acronym class="acronym">UCS-2</acronym>. If the column into which it's being inserted is also <acronym class="acronym">UCS-2</acronym>, there's no need of <span class="emphasis"><em>any</em></span> conversion, much less two, and <span class="emphasis"><em>certainly</em></span> no need to lose information.</p><p>Why this happens is anyone's guess. Here's one: it makes the datatype of the column unimportant. Regardless of whether you use char/varchar/text or nchar/nvarc har/ntext or a mixture of the two, the arriving SQL (if na��vely written) will store exactly the same characters.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69989616" class="footnote"><p><a href="#idm69989616" class="para"><sup class="para">[17] </sup></a>The built-in replacement expects GNU iconv names: <code class="literal">ISO-8859-1</code>, <code class="literal">US-ASCII</code>, or <code class="literal">UTF-8</code>.</p></div><div id="ftn.idm70008048" class="footnote"><p><a href="#idm70008048" class="para"><sup class="para">[18] </sup></a>not EBCDIC or other weird charsets</p></div><div id="ftn.idm70016240" class="footnote"><p><a href="#idm70016240" class="para"><sup class="para">[19] </sup></a>The precise rules are unknown to the author.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configs.html">Prev</a>� �</td><td width="20%" align="center"><a accesskey="u" href="configs.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="domains.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter��5.��Advanced Configurations��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Domain Logins</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/about.html new/freetds-1.3.16/doc/userguide/about.html --- old/freetds-1.3.15/doc/userguide/about.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/about.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>About this User Guide</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="index.html" title="FreeTDS User Guide" /><link rel="next" href="what.html" title="Chapter��1.��What is FreeTDS?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">About this User Guide</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>��</td><th width="60%" align="center">��</th><td width="20%" align="right">��<a accesskey="n" href="wha t.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="about"></a>About this User Guide</h1></div></div></div><p>This User Guide describes <span class="productname">FreeTDS</span> 1.3. It is the product of (lots of) happy collaborative effort. Although Brian's name and mine are at the top of it, behind it are many others, who contributed thoughtful suggestions, bamboozled questions, stellar prose, and terse instructions. I don't mention this for the usual reasons (the enumeration of which I leave to you) but rather to emphasize that the purpose of our effort is to help you and those who come after you to have the easiest and most enjoyable time with <span class="productname">FreeTDS</span>.</p><p>It is surprisingly hard, after a while, to remember how it can be for someone newly approaching a project to use it. What seems as obvious as a fog horn to an old hand may be much more like the fog itself to the newco mer. That can make installing and setting up new software a puzzling or frustrating experience. You may have heard, <span class="quote">���<span class="quote">It's easy if you know how.</span>���</span> Indeed it is, and that's our purpose here: to make it easy, by letting you know how.</p><p>This guide is here for you, and we hope that you will be here for it, that others might benefit from your experience or inexperience. The most recent version <a href="#ftn.idm68369392" class="footnote" id="idm68369392"><sup class="footnote">[1]</sup></a> +<!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/html; charset=UTF-8" /><title>About this User Guide</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="index.html" title="FreeTDS User Guide" /><link rel="next" href="what.html" title="Chapter��1.��What is FreeTDS?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">About this User Guide</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a>��</td><th width="60%" align="center">��</th><td width="20%" align="right">��<a accesskey="n" href="wha t.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="about"></a>About this User Guide</h1></div></div></div><p>This User Guide describes <span class="productname">FreeTDS</span> 1.3. It is the product of (lots of) happy collaborative effort. Although Brian's name and mine are at the top of it, behind it are many others, who contributed thoughtful suggestions, bamboozled questions, stellar prose, and terse instructions. I don't mention this for the usual reasons (the enumeration of which I leave to you) but rather to emphasize that the purpose of our effort is to help you and those who come after you to have the easiest and most enjoyable time with <span class="productname">FreeTDS</span>.</p><p>It is surprisingly hard, after a while, to remember how it can be for someone newly approaching a project to use it. What seems as obvious as a fog horn to an old hand may be much more like the fog itself to the newco mer. That can make installing and setting up new software a puzzling or frustrating experience. You may have heard, <span class="quote">���<span class="quote">It's easy if you know how.</span>���</span> Indeed it is, and that's our purpose here: to make it easy, by letting you know how.</p><p>This guide is here for you, and we hope that you will be here for it, that others might benefit from your experience or inexperience. The most recent version <a href="#ftn.idm65002480" class="footnote" id="idm65002480"><sup class="footnote">[1]</sup></a> can be found on the <span class="productname">FreeTDS</span> <a class="ulink" href="http://www.freetds.org/userguide/" target="_top">web site</a>, where you will also find the most up to date <a class="ulink" href="http://www.freetds.org/faq.html" target="_top">FAQ</a>, as well as links to the anonymous and browseable git repository. If you find something wrong, unclear, badly put, misleading, or incorrigible, I hope you will let us know. Post your musings or rants to the mailing list (see <a class="link" href="contrib.html" title="Chapter��10.��Helping">Helping</a>). Patches to <code class="filename">doc/userguide.xml</code> are especially welcome, of course. By taking the time let us know what you think, perhaps the path to enlightenment will be made a little smoother for the fellow behind you.</p><p>A few technical notes. This guide is written in XML DocBook format, specifications for which are found in the <a class="ulink" href="http://www.docbook.org/tdg/en/html/docbook.html" target="_top">DocBook book</a>. It was converted to HT ML with <a class="ulink" href="https://pagure.io/xmlto" target="_top">xmlto</a>. - The XML text is distributed with the rest of the source code, and may be edited with your favorite or least favorite text editor.</p><p>Enough. Let's begin.</p><p>--jkl</p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm68369392" class="footnote"><p><a href="#idm68369392" class="para"><sup class="para">[1] </sup></a>The version you're reading is:</p><table border="0" summary="Simple list" class="simplelist"><tr><td>Date: 2022-11-21 11:05:07 +0000</td></tr><tr><td>Git Id: a35a4ec8131da6c4b459051083ba69c820824b4b</td></tr></table></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="what.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="productname">FreeTDS</span> User Guide��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��1.��What is <span class="productname">FreeTDS</span>?</td></tr></table></div></body></html> \ No newline at end of file + The XML text is distributed with the rest of the source code, and may be edited with your favorite or least favorite text editor.</p><p>Enough. Let's begin.</p><p>--jkl</p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm65002480" class="footnote"><p><a href="#idm65002480" class="para"><sup class="para">[1] </sup></a>The version you're reading is:</p><table border="0" summary="Simple list" class="simplelist"><tr><td>Date: 2022-12-08 07:20:01 +0000</td></tr><tr><td>Git Id: f535ce2a8458007cbd4ae4f1cfd44c475f46a2ed</td></tr></table></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="what.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="productname">FreeTDS</span> User Guide��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��1.��What is <span class="productname">FreeTDS</span>?</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/apireference.html new/freetds-1.3.16/doc/userguide/apireference.html --- old/freetds-1.3.15/doc/userguide/apireference.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/apireference.html 2022-12-09 10:01:40.000000000 +0100 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>API Reference Manual</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="programming.html" title="Chapter��11.��Programming" /><link rel="prev" href="programming.html" title="Chapter��11.��Programming" /><link rel="next" href="dblib.api.summary.html" title="DB-Library API Implementation Summary" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">API Reference Manual</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="programming.html">Prev</a>��</td><th width="60%" align="center">Chapter��11.�� Programming</th><td width="20%" align="right">��<a accesskey="n" href="dblib.api.summary.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="apireference"></a>API Reference Manual</h2></div></div></div><p>The <a class="ulink" href="../reference/index.html" target="_top">reference manual</a> is installed as part of <span class="productname">FreeTDS</span>. It can be regenerated at any time using <span class="productname">Doxygen</span> with <span class="command"><strong>cd <code class="filename">doc</code>; make doc</strong></span>.</p><p>The reference manual is a work in progress: only <code class="systemitem">DB-Library</code> is completely documented, and quite minimally at that. Should you find it inadequate, you may be interested to learn it's not hard to add to, technically. <span class="productname">Doxygen</span> generates a manual from encoded comments in the source code. Its markup syntax is not hard to learn. You can read more about it at the <a class="ulink" href="http://www.doxygen.org" target="_top">Doxygen website</a>.</p><p>Basic API coverage information for the db-lib, ct-lib, and ODBC client libraries is maintained in <code class="filename">doc/api_status.txt</code>, included in the source distribution. For your convenience and enjoyment, we include that file in the following sections. In each table, we note for the function - <a href="#ftn.idm70330096" class="footnote" id="idm70330096"><sup class="footnote">[25]</sup></a> + <a href="#ftn.idm70706928" class="footnote" id="idm70706928"><sup class="footnote">[25]</sup></a> the extent to which it is implemented. The <span class="emphasis"><em>Status</em></span> field may be: - </p><div class="variablelist"><a id="dblib.api.status"></a><p class="title"><strong><code class="systemitem">DB-Library</code> API function status domain</strong></p><dl class="variablelist"><dt><span class="term">(blank)</span></dt><dd><p>Function is not implemented.</p></dd><dt><span class="term">stub</span></dt><dd><p>Function is implemented as a stub. Some such functions return <code class="literal">SUCCEED</code> even though they have no effect, to satisfy upper layers.</p></dd><dt><span class="term">Partial</span></dt><dd><p>Function is partly implemented. We haven't dealt with every possible option, for instance.</p></dd><dt><span class="term">OK</span></dt><dd><p>Function is implemented. Completely, we claim.</p></dd></dl></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70330096" class="footnote"><p><a href="#idm70330096" class="para"><sup class="para">[25] </sup></a>Sybase and Microsoft sometimes use slightly d ifferent names for the same function. It is the intention of the <code class="option">--enable-msdblib</code> option to align + </p><div class="variablelist"><a id="dblib.api.status"></a><p class="title"><strong><code class="systemitem">DB-Library</code> API function status domain</strong></p><dl class="variablelist"><dt><span class="term">(blank)</span></dt><dd><p>Function is not implemented.</p></dd><dt><span class="term">stub</span></dt><dd><p>Function is implemented as a stub. Some such functions return <code class="literal">SUCCEED</code> even though they have no effect, to satisfy upper layers.</p></dd><dt><span class="term">Partial</span></dt><dd><p>Function is partly implemented. We haven't dealt with every possible option, for instance.</p></dd><dt><span class="term">OK</span></dt><dd><p>Function is implemented. Completely, we claim.</p></dd></dl></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70706928" class="footnote"><p><a href="#idm70706928" class="para"><sup class="para">[25] </sup></a>Sybase and Microsoft sometimes use slightly d ifferent names for the same function. It is the intention of the <code class="option">--enable-msdblib</code> option to align <span class="productname">FreeTDS</span> with one or the other's convention.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="programming.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="dblib.api.summary.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter��11.��Programming��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��<code class="systemitem">DB-Library</code> API Implementation Summary</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/build.html new/freetds-1.3.16/doc/userguide/build.html --- old/freetds-1.3.15/doc/userguide/build.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/build.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>Chapter��2.��Build FreeTDS</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="projects.html" title="Current Projects, Language Bindings, and Alternatives" /><link rel="next" href="packages.html" title="What to build: Packages, Tarballs, and the git repository" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter��2.��Build <span class="productname">FreeTDS</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="projects.h tml">Prev</a>��</td><th width="60%" align="center">��</th><td width="20%" align="right">��<a accesskey="n" href="packages.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="build"></a>Chapter��2.��Build <span class="productname">FreeTDS</span></h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="build.html#gnu">The <acronym class="acronym">GNU</acronym> World</a></span></dt><dt><span class="sect1"><a href="packages.html">What to build: Packages, Tarballs, and the <span class="productname">git</span> repository</a></span></dt><dt><span class="sect1"><a href="config.html">How to build: Configure and make</a></span></dt><dd><dl><dt><span class="sect2"><a href="config.html#Experts">For Experts</a></span></dt><dt><span class="sect2"><a href="config.html#Everyone">(<span class="productname">FreeTDS</span> for Dummies?)</a></span></dt></dl></dd ><dt><span class="sect1"><a href="osissues.html">OS-specific Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="osissues.html#Windows">Win32 and Win64</a></span></dt><dt><span class="sect2"><a href="osissues.html#VMS">VMS��</a></span></dt><dt><span class="sect2"><a href="osissues.html#osx">OS X��</a></span></dt><dt><span class="sect2"><a href="osissues.html#AIX">AIX��</a></span></dt><dt><span class="sect2"><a href="osissues.html#RPM">GNU/Linux distributions that use RPMs</a></span></dt></dl></dd></dl></div><div class="epigraph"><p>If you build it they will come.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="gnu"></a>The <acronym class="acronym">GNU</acronym> World</h2></div></div></div><p><span class="productname">FreeTDS</span> uses <acronym class="acronym">GNU</acronym> <span class="application">Autoconf</span>, <span class="application">Automake</span>, and <span class="application">libtool</span><a href="#ft n.idm68556912" class="footnote" id="idm68556912"><sup class="footnote">[4]</sup></a> to increase portability.</p><p>For many people, the preceding sentence says it all (good or bad). +<!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/html; charset=UTF-8" /><title>Chapter��2.��Build FreeTDS</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="projects.html" title="Current Projects, Language Bindings, and Alternatives" /><link rel="next" href="packages.html" title="What to build: Packages, Tarballs, and the git repository" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter��2.��Build <span class="productname">FreeTDS</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="projects.h tml">Prev</a>��</td><th width="60%" align="center">��</th><td width="20%" align="right">��<a accesskey="n" href="packages.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="build"></a>Chapter��2.��Build <span class="productname">FreeTDS</span></h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="build.html#gnu">The <acronym class="acronym">GNU</acronym> World</a></span></dt><dt><span class="sect1"><a href="packages.html">What to build: Packages, Tarballs, and the <span class="productname">git</span> repository</a></span></dt><dt><span class="sect1"><a href="config.html">How to build: Configure and make</a></span></dt><dd><dl><dt><span class="sect2"><a href="config.html#Experts">For Experts</a></span></dt><dt><span class="sect2"><a href="config.html#Everyone">(<span class="productname">FreeTDS</span> for Dummies?)</a></span></dt></dl></dd ><dt><span class="sect1"><a href="osissues.html">OS-specific Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="osissues.html#Windows">Win32 and Win64</a></span></dt><dt><span class="sect2"><a href="osissues.html#VMS">VMS��</a></span></dt><dt><span class="sect2"><a href="osissues.html#osx">OS X��</a></span></dt><dt><span class="sect2"><a href="osissues.html#AIX">AIX��</a></span></dt><dt><span class="sect2"><a href="osissues.html#RPM">GNU/Linux distributions that use RPMs</a></span></dt></dl></dd></dl></div><div class="epigraph"><p>If you build it they will come.</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="gnu"></a>The <acronym class="acronym">GNU</acronym> World</h2></div></div></div><p><span class="productname">FreeTDS</span> uses <acronym class="acronym">GNU</acronym> <span class="application">Autoconf</span>, <span class="application">Automake</span>, and <span class="application">libtool</span><a href="#ft n.idm68933744" class="footnote" id="idm68933744"><sup class="footnote">[4]</sup></a> to increase portability.</p><p>For many people, the preceding sentence says it all (good or bad). If you're familiar with the <acronym class="acronym">GNU</acronym> system, you can probably just download the tarball and get away with scanning the <code class="filename">README.md</code> impatiently and then following your instincts. -Because everyone is a beginner once and no one is an expert at everything, we'll try to explain things in plain English where possible, and to define our terms as we go along.</p><p>If the following nevertheless reads like gibberish, you might very well want to use something prepackaged (see <a class="link" href="projects.html#alternatives" title="Alternatives">Alternatives</a>). If it reads like a vaguely intelligible alien script that might yield to intensive research, we've included links to some of the usual suspects at the end of this chapter. If it reads like a bad explanation of something you could explain better, please send us your version!</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm68556912" class="footnote"><div class="itemizedlist"><p class="title"><strong><a href="#idm68556912" class="itemizedlist"><sup>[4] </sup></a>Versions used for this release</strong></p><ul class="itemizedlist compact" style="lis t-style-type: disc; "><li class="listitem"><p>autoconf (GNU Autoconf) 2.69</p></li><li class="listitem"><p>automake (GNU automake) 1.15</p></li><li class="listitem"><p>ltmain.sh (GNU libtool) 2.4.6</p></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="projects.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="packages.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Current Projects, Language Bindings, and Alternatives��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��What to build: Packages, Tarballs, and the <span class="productname">git</span> repository</td></tr></table></div></body></html> \ No newline at end of file +Because everyone is a beginner once and no one is an expert at everything, we'll try to explain things in plain English where possible, and to define our terms as we go along.</p><p>If the following nevertheless reads like gibberish, you might very well want to use something prepackaged (see <a class="link" href="projects.html#alternatives" title="Alternatives">Alternatives</a>). If it reads like a vaguely intelligible alien script that might yield to intensive research, we've included links to some of the usual suspects at the end of this chapter. If it reads like a bad explanation of something you could explain better, please send us your version!</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm68933744" class="footnote"><div class="itemizedlist"><p class="title"><strong><a href="#idm68933744" class="itemizedlist"><sup>[4] </sup></a>Versions used for this release</strong></p><ul class="itemizedlist compact" style="lis t-style-type: disc; "><li class="listitem"><p>autoconf (GNU Autoconf) 2.69</p></li><li class="listitem"><p>automake (GNU automake) 1.15</p></li><li class="listitem"><p>ltmain.sh (GNU libtool) 2.4.6</p></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="projects.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="packages.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Current Projects, Language Bindings, and Alternatives��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��What to build: Packages, Tarballs, and the <span class="productname">git</span> repository</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/config.html new/freetds-1.3.16/doc/userguide/config.html --- old/freetds-1.3.15/doc/userguide/config.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/config.html 2022-12-09 10:01:39.000000000 +0100 @@ -42,10 +42,10 @@ </p></dd><dt><span class="term"><code class="option">--enable-extra-checks</code></span></dt><dd><p>Intended for debugging purposes, enables certain internal consistency checks against problems like memory corruption and buffer exhaustion. </p></dd><dt><span class="term"><code class="option">--enable-developing</code></span></dt><dd><p>Enable some code still in development. Should be used only by a developer or a brave user :) </p></dd><dt><span class="term"><code class="option">--enable-odbc-wide-tests</code></span></dt><dd><p>Compile ODBC tests to use wide characters. Test will use wide versions. -</p></dd></dl></div><div class="variablelist"><a id="tab.ssl"></a><p class="title"><strong>SSL support</strong></p><dl class="variablelist"><dt><span class="term"><code class="option">--with-gnutls</code></span></dt><dd><p>Enable SSL using GnuTLS.</p></dd><dt><span class="term"><code class="option">--with-openssl=<em class="replaceable"><code>DIR</code></em></code></span></dt><dd><p>Enable SSL using OpenSSL. Unlike <span class="productname">FreeTDS</span>, OpenSSL does not use the LGPL. Please read the <a class="ulink" href="http://www.openssl.org/source/license.html" target="_top">OpenSSL license</a> before distributing binaries compiled with this option.</p></dd></dl></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm68724464"></a><span class="command"><strong>Make</strong></span></h4></div></div></div><p>Now you're ready to build. Follow these easy steps.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">< p>Download the tarball and unpack it.</p><p>Alternatively, get the latest build from <span class="productname">git</span> - <a href="#ftn.idm68729712" class="footnote" id="idm68729712"><sup class="footnote">[5]</sup></a> +</p></dd></dl></div><div class="variablelist"><a id="tab.ssl"></a><p class="title"><strong>SSL support</strong></p><dl class="variablelist"><dt><span class="term"><code class="option">--with-gnutls</code></span></dt><dd><p>Enable SSL using GnuTLS.</p></dd><dt><span class="term"><code class="option">--with-openssl=<em class="replaceable"><code>DIR</code></em></code></span></dt><dd><p>Enable SSL using OpenSSL. Unlike <span class="productname">FreeTDS</span>, OpenSSL does not use the LGPL. Please read the <a class="ulink" href="http://www.openssl.org/source/license.html" target="_top">OpenSSL license</a> before distributing binaries compiled with this option.</p></dd></dl></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69076720"></a><span class="command"><strong>Make</strong></span></h4></div></div></div><p>Now you're ready to build. Follow these easy steps.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">< p>Download the tarball and unpack it.</p><p>Alternatively, get the latest build from <span class="productname">git</span> + <a href="#ftn.idm69081968" class="footnote" id="idm69081968"><sup class="footnote">[5]</sup></a> . </p></li><li class="listitem"><p>Change to the <code class="filename">freetds</code> directory. </p></li><li class="listitem"><p>run <span class="command"><strong>./configure</strong></span> with any options you need. </p></li><li class="listitem"><p><span class="command"><strong>make; make install; make clean</strong></span> -</p></li></ol></div><p>You normally need to be root to <span class="command"><strong>make install</strong></span>, unless you used the <code class="option">--prefix</code> option during configuration to install into your own directory.</p><p>With any luck, you've built and installed the <span class="productname">FreeTDS</span> libraries.</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip: Two bits of advice, if you like to keep things tidy and keep track of what you did. "><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../images/tip.gif" /></td><th align="left">Two bits of advice, if you like to keep things tidy and keep track of what you did. </th></tr><tr><td align="left" valign="top"><p>Create a file to hold your configure options called, say, <code class="filename">.build_options</code>.</p><p>Create a build directory for the binaries, and invoke <span class="command"><strong>../configure $(cat .. /.build_options)</strong></span>. </p><p>This approach lets you remove the binaries at any time and rebuild from scratch using the same options.</p></td></tr></table></div></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm68729712" class="footnote"><p><a href="#idm68729712" class="para"><sup class="para">[5] </sup></a><span class="productname">git</span> users will need the GNU autotools: Autoconf, Automake, and libtool.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="packages.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="build.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="osissues.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">What to build: Packages, Tarballs, and the <span class="productname">git</span> repository��</td><td width="20%" a lign="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��OS-specific Issues</td></tr></table></div></body></html> \ No newline at end of file +</p></li></ol></div><p>You normally need to be root to <span class="command"><strong>make install</strong></span>, unless you used the <code class="option">--prefix</code> option during configuration to install into your own directory.</p><p>With any luck, you've built and installed the <span class="productname">FreeTDS</span> libraries.</p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip: Two bits of advice, if you like to keep things tidy and keep track of what you did. "><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../images/tip.gif" /></td><th align="left">Two bits of advice, if you like to keep things tidy and keep track of what you did. </th></tr><tr><td align="left" valign="top"><p>Create a file to hold your configure options called, say, <code class="filename">.build_options</code>.</p><p>Create a build directory for the binaries, and invoke <span class="command"><strong>../configure $(cat .. /.build_options)</strong></span>. </p><p>This approach lets you remove the binaries at any time and rebuild from scratch using the same options.</p></td></tr></table></div></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69081968" class="footnote"><p><a href="#idm69081968" class="para"><sup class="para">[5] </sup></a><span class="productname">git</span> users will need the GNU autotools: Autoconf, Automake, and libtool.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="packages.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="build.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="osissues.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">What to build: Packages, Tarballs, and the <span class="productname">git</span> repository��</td><td width="20%" a lign="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��OS-specific Issues</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/contrib.html new/freetds-1.3.16/doc/userguide/contrib.html --- old/freetds-1.3.15/doc/userguide/contrib.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/contrib.html 2022-12-09 10:01:40.000000000 +0100 @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>Chapter��10.��Helping</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="askingforhelp.html" title="What to include when asking for help" /><link rel="next" href="Light.taper.html" title="Light another's taper" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter��10.��Helping</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="askingforhelp.html">Prev</a>��</td><th width="60%" align="center">��</th><td width="20%" align="ri ght">��<a accesskey="n" href="Light.taper.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="contrib"></a>Chapter��10.��Helping</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="contrib.html#Pickweakspot">Pick a weak spot and fix it.</a></span></dt><dd><dl><dt><span class="sect2"><a href="contrib.html#Sendpatch">Send a patch</a></span></dt><dt><span class="sect2"><a href="contrib.html#Correct">Correct this User Guide</a></span></dt><dt><span class="sect2"><a href="contrib.html#Documentapi">Document an <acronym class="acronym">API</acronym></a></span></dt><dt><span class="sect2"><a href="contrib.html#webmaster">Be the Webmaster</a></span></dt></dl></dd><dt><span class="sect1"><a href="Light.taper.html">Light another's taper</a></span></dt><dt><span class="sect1"><a href="Ambition.html">Ambitious ideas</a></span></dt><dd><dl><dt><span c lass="sect2"><a href="Ambition.html#idm70296816"><code class="literal">libtds2</code></a></span></dt><dt><span class="sect2"><a href="Ambition.html#idm70302320"><code class="literal">libstddb</code></a></span></dt><dt><span class="sect2"><a href="Ambition.html#idm70300400">Server code </a></span></dt></dl></dd><dt><span class="sect1"><a href="Advocacy.html">Advocacy</a></span></dt></dl></div><div class="epigraph"><p>The time you enjoy wasting is not wasted time.</p><div class="attribution"><span>���<span class="attribution">Bertrand Russell</span></span></div></div><p><span class="productname">FreeTDS</span> is a cooperative, volunteer effort. Flame wars on the list are unknown and the signal to noise ratio is pretty high for its venue. Many people have contributed patches, and few have been turned away.</p><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Pickweakspot"></a>Pick a weak spot and fix it.</h2></div></div></div><div class ="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>We don't have enough non-English speakers to test our character set conversion features. Anyone willing to participate in that way would be most welcome.</p></li><li class="listitem"><p>Canonical examples of using the each library would be very helpful to newcomers.</p></li><li class="listitem"><p>An isql Perl and PHP would all make debugging and testing easier for everyone.</p></li></ul></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Sendpatch"></a>Send a patch</h3></div></div></div><p>Good patches are nearly always applied in short order. Patches uploaded to <a class="ulink" href="http://sourceforge.net/tracker/?group_id=33106&atid=407808" target="_top">SourceForge</a> trigger automatic notification to the <span class="productname">FreeTDS</span> mailing list.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id= "Correct"></a>Correct this User Guide</h3></div></div></div><p>Any corrections or suggestions, be they typographical, grammatical, structural, factual, or mineral are most welcome. Please send it to the <a class="ulink" href="mailto:freetds@lists.ibiblio.org" target="_top"><span class="productname">FreeTDS</span> mailing list</a>.</p><p>The User Guide is maintained in <acronym class="acronym">XML</acronym> DocBook format; the file in your distibution is <code class="filename">doc/userguide.xml</code>. It is a flat ASCII file that you can edit with any text editor. You don't have to know <acronym class="acronym">XML</acronym> to correct or add to the User Guide, however. Just open it up, find the place you're interested in, and type away. Do a <span class="command"><strong>diff -u <em class="replaceable"><code>old_version</code></em> <em class="replaceable"><code>your_version</code></em></strong></span> and post your patch to the SourceForge site. Any errors or lackings in yo ur markup will be graciously emended by yours truly.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Documentapi"></a>Document an <acronym class="acronym">API</acronym></h3></div></div></div><p>We have just begun an independent reference manual to <span class="productname">FreeTDS</span>; the main <acronym class="acronym">API</acronym> documents are the work of the server vendors. We're using <a class="ulink" href="http://www.doxygen.org" target="_top">Doxygen</a>, which extracts documentation directly from comments in the source code, and we're maybe 25% done.</p><p>The <acronym class="acronym">TDS</acronym> protocol is partly documented, as are the <acronym class="acronym">API</acronym>s to <code class="filename">libtds</code> and <code class="systemitem">DB-Library</code>, but much remains.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="webmaster"></a>Be the Webmaster</h3></div></div></div><p>The FAQ an d in particular the news don't get updated often enough. If that's your thing, drop a line to the <a class="ulink" href="mailto:freetds@lists.ibiblio.org" target="_top"><span class="productname">FreeTDS</span> mailing list</a>.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="askingforhelp.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="Light.taper.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">What to include when asking for help��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Light another's taper</td></tr></table></div></body></html> \ No newline at end of file +<!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/html; charset=UTF-8" /><title>Chapter��10.��Helping</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="askingforhelp.html" title="What to include when asking for help" /><link rel="next" href="Light.taper.html" title="Light another's taper" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter��10.��Helping</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="askingforhelp.html">Prev</a>��</td><th width="60%" align="center">��</th><td width="20%" align="ri ght">��<a accesskey="n" href="Light.taper.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="contrib"></a>Chapter��10.��Helping</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="contrib.html#Pickweakspot">Pick a weak spot and fix it.</a></span></dt><dd><dl><dt><span class="sect2"><a href="contrib.html#Sendpatch">Send a patch</a></span></dt><dt><span class="sect2"><a href="contrib.html#Correct">Correct this User Guide</a></span></dt><dt><span class="sect2"><a href="contrib.html#Documentapi">Document an <acronym class="acronym">API</acronym></a></span></dt><dt><span class="sect2"><a href="contrib.html#webmaster">Be the Webmaster</a></span></dt></dl></dd><dt><span class="sect1"><a href="Light.taper.html">Light another's taper</a></span></dt><dt><span class="sect1"><a href="Ambition.html">Ambitious ideas</a></span></dt><dd><dl><dt><span c lass="sect2"><a href="Ambition.html#idm70673648"><code class="literal">libtds2</code></a></span></dt><dt><span class="sect2"><a href="Ambition.html#idm70679152"><code class="literal">libstddb</code></a></span></dt><dt><span class="sect2"><a href="Ambition.html#idm70677232">Server code </a></span></dt></dl></dd><dt><span class="sect1"><a href="Advocacy.html">Advocacy</a></span></dt></dl></div><div class="epigraph"><p>The time you enjoy wasting is not wasted time.</p><div class="attribution"><span>���<span class="attribution">Bertrand Russell</span></span></div></div><p><span class="productname">FreeTDS</span> is a cooperative, volunteer effort. Flame wars on the list are unknown and the signal to noise ratio is pretty high for its venue. Many people have contributed patches, and few have been turned away.</p><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Pickweakspot"></a>Pick a weak spot and fix it.</h2></div></div></div><div class ="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>We don't have enough non-English speakers to test our character set conversion features. Anyone willing to participate in that way would be most welcome.</p></li><li class="listitem"><p>Canonical examples of using the each library would be very helpful to newcomers.</p></li><li class="listitem"><p>An isql Perl and PHP would all make debugging and testing easier for everyone.</p></li></ul></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Sendpatch"></a>Send a patch</h3></div></div></div><p>Good patches are nearly always applied in short order. Patches uploaded to <a class="ulink" href="http://sourceforge.net/tracker/?group_id=33106&atid=407808" target="_top">SourceForge</a> trigger automatic notification to the <span class="productname">FreeTDS</span> mailing list.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id= "Correct"></a>Correct this User Guide</h3></div></div></div><p>Any corrections or suggestions, be they typographical, grammatical, structural, factual, or mineral are most welcome. Please send it to the <a class="ulink" href="mailto:freetds@lists.ibiblio.org" target="_top"><span class="productname">FreeTDS</span> mailing list</a>.</p><p>The User Guide is maintained in <acronym class="acronym">XML</acronym> DocBook format; the file in your distibution is <code class="filename">doc/userguide.xml</code>. It is a flat ASCII file that you can edit with any text editor. You don't have to know <acronym class="acronym">XML</acronym> to correct or add to the User Guide, however. Just open it up, find the place you're interested in, and type away. Do a <span class="command"><strong>diff -u <em class="replaceable"><code>old_version</code></em> <em class="replaceable"><code>your_version</code></em></strong></span> and post your patch to the SourceForge site. Any errors or lackings in yo ur markup will be graciously emended by yours truly.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Documentapi"></a>Document an <acronym class="acronym">API</acronym></h3></div></div></div><p>We have just begun an independent reference manual to <span class="productname">FreeTDS</span>; the main <acronym class="acronym">API</acronym> documents are the work of the server vendors. We're using <a class="ulink" href="http://www.doxygen.org" target="_top">Doxygen</a>, which extracts documentation directly from comments in the source code, and we're maybe 25% done.</p><p>The <acronym class="acronym">TDS</acronym> protocol is partly documented, as are the <acronym class="acronym">API</acronym>s to <code class="filename">libtds</code> and <code class="systemitem">DB-Library</code>, but much remains.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="webmaster"></a>Be the Webmaster</h3></div></div></div><p>The FAQ an d in particular the news don't get updated often enough. If that's your thing, drop a line to the <a class="ulink" href="mailto:freetds@lists.ibiblio.org" target="_top"><span class="productname">FreeTDS</span> mailing list</a>.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="askingforhelp.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="Light.taper.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">What to include when asking for help��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Light another's taper</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/ctlib.api.summary.html new/freetds-1.3.16/doc/userguide/ctlib.api.summary.html --- old/freetds-1.3.15/doc/userguide/ctlib.api.summary.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/ctlib.api.summary.html 2022-12-09 10:01:40.000000000 +0100 @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>ct-lib API Implementation Summary</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="programming.html" title="Chapter��11.��Programming" /><link rel="prev" href="dblib.api.summary.html" title="DB-Library API Implementation Summary" /><link rel="next" href="odbc.api.summary.html" title="ODBC API Implementation Summary" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ct-lib API Implementation Summary</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="dblib.api.summary.html">Prev</a>��</td><t h width="60%" align="center">Chapter��11.��Programming</th><td width="20%" align="right">��<a accesskey="n" href="odbc.api.summary.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="ctlib.api.summary"></a>ct-lib API Implementation Summary</h2></div></div></div><p>Sybase ct-lib documentation can be found <a class="ulink" href="http://manuals.sybase.com/onlinebooks/group-cnarc/cng1110e/ctref/@Generic__BookView" target="_top">online</a> - and in <a class="ulink" href="http://download.sybase.com/pdfdocs/cng1000e/ref.pdf" target="_top">PDF</a> form. <a href="#ftn.idm71220080" class="footnote" id="idm71220080"><sup class="footnote">[27]</sup></a></p><div class="table"><a id="ctlib.api"></a><p class="title"><strong>Table��11.2.��<code class="systemitem">CT-Library</code> API Implementation Summary</strong></p><div class="table-contents"><table class="table" summary="CT-Library API Implementation Summary" border="1"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th>Category</th><th>Function</th><th>Status</th><th>Comments</th></tr></thead><tbody><tr><td>(all)</td><td>ct_bind</td><td>OK</td><td>Bind server results to program variables.</td></tr><tr><td>(all)</td><td>ct_br_column</td><td>Retrieve information about a column generated by a browse mode select.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_br_table</td><td>Return information about browse mode tables.</td><td class="auto-ge nerated">��</td></tr><tr><td>(all)</td><td>ct_callback</td><td>OK</td><td>Install or retrieve a Client-Library callback routine.</td></tr><tr><td>(all)</td><td>ct_cancel</td><td>OK</td><td>Cancel a command or the results of a command.</td></tr><tr><td>(all)</td><td>ct_capability</td><td>OK</td><td>Set or retrieve a client/server capability.</td></tr><tr><td>(all)</td><td>ct_close</td><td>OK</td><td>Close a server connection.</td></tr><tr><td>(all)</td><td>ct_cmd_alloc</td><td>OK</td><td>Allocate a CS_COMMAND structure.</td></tr><tr><td>(all)</td><td>ct_cmd_drop</td><td>OK</td><td>Deallocate a CS_COMMAND structure.</td></tr><tr><td>(all)</td><td>ct_cmd_props</td><td>OK</td><td>Set or retrieve command structure properties. For use by applications that resend commands.</td></tr><tr><td>(all)</td><td>ct_command</td><td>OK</td><td>Initiate a language, package, RPC, message, or send-data command.</td></tr><tr><td>(all)</td><td>ct_compute_info</td><td>OK</td><td>Retrieve compute result inf ormation.</td></tr><tr><td>(all)</td><td>ct_con_alloc</td><td>OK</td><td>Allocate a CS_CONNECTION structure.</td></tr><tr><td>(all)</td><td>ct_con_drop</td><td>OK</td><td>Deallocate a CS_CONNECTION structure.</td></tr><tr><td>(all)</td><td>ct_con_props</td><td>OK</td><td>Set or retrieve connection structure properties.</td></tr><tr><td>(all)</td><td>ct_config</td><td>OK</td><td>Set or retrieve context properties.</td></tr><tr><td>(all)</td><td>ct_connect</td><td>OK</td><td>Connect to a server.</td></tr><tr><td>(all)</td><td>ct_cursor</td><td>OK</td><td>Initiate a Client-Library cursor command.</td></tr><tr><td>(all)</td><td>ct_data_info</td><td>OK</td><td>Define or retrieve a data I/O descriptor structure.</td></tr><tr><td>(all)</td><td>ct_debug</td><td>Manage debug library operations.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_describe</td><td>OK</td><td>Return a description of result data.</td></tr><tr><td>(all)</td><td>ct_diag</td><td>OK</td><td>Manage in line error handling.</td></tr><tr><td>(all)</td><td>ct_ds_dropobj</td><td>Release the memory associated with a directory object.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_ds_lookup</td><td>Initiate or cancel a directory lookup operation.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_ds_objinfo</td><td>Retrieve information associated with a directory object.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_dynamic</td><td>OK</td><td>Initiate a dynamic SQL command.</td></tr><tr><td>(all)</td><td>ct_dyndesc</td><td>Perform operations on a dynamic SQL descriptor area.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_dynsqlda</td><td>Operate on a SQLDA structure.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_exit</td><td>OK</td><td>Exit Client-Library.</td></tr><tr><td>(all)</td><td>ct_fetch</td><td>OK</td><td>Fetch result data.</td></tr><tr><td>(all)</td><td>ct_get_data</td><td>OK </td><td>Read a chunk of data from the server.</td></tr><tr><td>(all)</td><td>ct_getformat</td><td>Return the server user-defined format string associated with a result column.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_getloginfo</td><td>Transfer TDS login response information from a CS_CONNECTION structure to a newly allocated CS_LOGINFO structure.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_init</td><td>OK</td><td>Initialize Client-Library for an application context.</td></tr><tr><td>(all)</td><td>ct_keydata</td><td>Specify or extract the contents of a key column.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_labels</td><td>Define a security label or clear security labels for a connection.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_options</td><td>OK</td><td>Set, retrieve, or clear the values of server query-processing options.</td></tr><tr><td>(all)</td><td>ct_param</td><td>OK</td><td >Supply values for a server command's input parameters.</td></tr><tr><td>(all)</td><td>ct_poll</td><td>stub</td><td>Poll connections for asynchronous operation completions and registered procedure notifications.</td></tr><tr><td>(all)</td><td>ct_recvpassthru</td><td>Receive a TDS (Tabular Data Stream) packet from a server.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_remote_pwd</td><td>Define or clear passwords to be used for server-to-server connections.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_res_info</td><td>OK</td><td>Retrieve current result set or command information.</td></tr><tr><td>(all)</td><td>ct_results</td><td>OK</td><td>Set up result data to be processed.</td></tr><tr><td>(all)</td><td>ct_send</td><td>OK</td><td>Send a command to the server.</td></tr><tr><td>(all)</td><td>ct_send_data</td><td>OK</td><td>Send a chunk of text or image data to the server.</td></tr><tr><td>(all)</td><td>ct_sendpassthru</td><td>Send a Tabula r Data Stream (TDS) packet to a server.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_setloginfo</td><td>Transfer TDS login response information from a CS_LOGINFO structure to a CS_CONNECTION structure.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_setparam</td><td>OK</td><td>Specify source variables from which ct_send reads input parameter values for a server command.</td></tr><tr><td>(all)</td><td>ct_wakeup</td><td>Call a connection's completion callback.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>cs_calc</td><td>Perform an arithmetic operation on two operands.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>cs_cmp</td><td>Compare two data values.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>cs_config</td><td>partial</td><td>Set or retrieve CS-Library properties.</td></tr><tr><td>(all)</td><td>cs_conv_mult</td><td>stub</td><td>Retrieve the conversion multiplier for converting cha racter data from one character set to another.</td></tr><tr><td>(all)</td><td>cs_convert</td><td>OK</td><td>Convert a data value from one datatype, locale, or format to another datatype, locale, or format.</td></tr><tr><td>(all)</td><td>cs_ctx_alloc</td><td>OK</td><td>Allocate a CS_CONTEXT structure.</td></tr><tr><td>(all)</td><td>cs_ctx_drop</td><td>OK</td><td>Deallocate a CS_CONTEXT structure.</td></tr><tr><td>(all)</td><td>cs_ctx_global</td><td>OK</td><td>Allocate or return a CS_CONTEXT structure.</td></tr><tr><td>(all)</td><td>cs_diag</td><td>OK</td><td>Manage inline error handling.</td></tr><tr><td>(all)</td><td>cs_dt_crack</td><td>OK</td><td>Convert a machine-readable datetime value into a user-accessible format.</td></tr><tr><td>(all)</td><td>cs_dt_info</td><td>stub</td><td>Set or retrieve language-specific datetime information.</td></tr><tr><td>(all)</td><td>cs_loc_alloc</td><td>OK</td><td>Allocate a CS_LOCALE structure.</td></tr><tr><td>(all)</td><td>cs_loc_drop</td><td>OK< /td><td>Deallocate a CS_LOCALE structure.</td></tr><tr><td>(all)</td><td>cs_locale</td><td>partial</td><td>Load a CS_LOCALE structure with localization values or retrieve the locale name previously used to load a CS_LOCALE structure.</td></tr><tr><td>(all)</td><td>cs_manage_convert</td><td>stub</td><td>Install or retrieve a user-defined character set conversion routine.</td></tr><tr><td>(all)</td><td>cs_objects</td><td>stub</td><td>Save, retrieve, or clear objects and data associated with them.</td></tr><tr><td>(all)</td><td>cs_set_convert</td><td>stub</td><td>Install or retrieve a user-defined conversion routine.</td></tr><tr><td>(all)</td><td>cs_setnull</td><td>stub</td><td>Define a null substitution value to be used when binding or converting NULL data.</td></tr><tr><td>(all)</td><td>cs_strbuild</td><td>OK</td><td>Construct native language message strings.</td></tr><tr><td>(all)</td><td>cs_strcmp</td><td>stub</td><td>Compare two strings using a specified sort order.</td></tr><tr> <td>(all)</td><td>cs_time</td><td>stub</td><td>Retrieve the current date and time.</td></tr><tr><td>(all)</td><td>cs_will_convert</td><td>OK</td><td>Indicate whether a specific datatype conversion is available in the Client/Server libraries.</td></tr><tr><td>(all)</td><td>blk_alloc</td><td>OK</td><td>Allocate a CS_BLKDESC structure.</td></tr><tr><td>(all)</td><td>blk_bind</td><td>OK</td><td>Bind a program variable and a database column.</td></tr><tr><td>(all)</td><td>blk_colval</td><td>stub</td><td>Server-side routine to obtain the column value from a formatted bulk copy row.</td></tr><tr><td>(all)</td><td>blk_default</td><td>stub</td><td>Retrieve a column's default value.</td></tr><tr><td>(all)</td><td>blk_describe</td><td>OK</td><td>Retrieve a description of a database column.</td></tr><tr><td>(all)</td><td>blk_done</td><td>OK</td><td>Mark a complete bulk copy operation or a complete bulk copy batch.</td></tr><tr><td>(all)</td><td>blk_drop</td><td>OK</td><td>Deallocate a CS_BLKDES C structure.</td></tr><tr><td>(all)</td><td>blk_getrow</td><td>stub</td><td>Server-side routine to retrieve and store a formatted bulk copy row.</td></tr><tr><td>(all)</td><td>blk_gettext</td><td>stub</td><td>Server-side routine to retrieve the text, image, sensitivity, or boundary portion of an incoming bulk copy formatted row.</td></tr><tr><td>(all)</td><td>blk_init</td><td>OK</td><td>Initiate a bulk copy operation.</td></tr><tr><td>(all)</td><td>blk_props</td><td>OK</td><td>Set or retrieve bulk descriptor structure properties.</td></tr><tr><td>(all)</td><td>blk_rowalloc</td><td>stub</td><td>Server-side routine to allocate space for a formatted bulk copy row.</td></tr><tr><td>(all)</td><td>blk_rowdrop</td><td>stub</td><td>Server-side routine to free space previously allocated for a formatted bulk copy row.</td></tr><tr><td>(all)</td><td>blk_rowxfer</td><td>OK</td><td>Transfer one or more rows during a bulk copy operation without specifying or receiving a row count.</td></tr><tr><t d>(all)</td><td>blk_rowxfer_mult</td><td>OK</td><td>Transfer one or more rows during a bulk copy operation.</td></tr><tr><td>(all)</td><td>blk_sendrow</td><td>stub</td><td>Server-side routine to send a formatted bulk copy row obtained from blk_getrow.</td></tr><tr><td>(all)</td><td>blk_sendtext</td><td>stub</td><td>Server-side routine to send text, image, sensitivity, or boundary data in a formatted bulk copy row obtained from blk_sendtext.</td></tr><tr><td>(all)</td><td>blk_srvinit</td><td>stub</td><td>Server-side routine to copy descriptions of server table columns to the client, if required.</td></tr><tr><td>(all)</td><td>blk_textxfer</td><td>stub</td><td>Transfer a column's data in chunks during a bulk copy operation.</td></tr></tbody></table></div></div><br class="table-break" /><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm71220080" class="footnote"><p><a href="#idm71220080" class="para"><sup class="para">[27] </sup></a>Li nks such as these are quite perishable. Should you find them broken, please check the <a class="ulink" href="http://www.freetds.org/userguide/ctlib.api.summary.htm" target="_top"><span class="productname">FreeTDS</span> User Guide</a> posted on our website. If it's out of date, please let us know, so we can correct it. Thanks.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dblib.api.summary.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="odbc.api.summary.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><code class="systemitem">DB-Library</code> API Implementation Summary��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��ODBC API Implementation Summary</td></tr></tabl e></div></body></html> \ No newline at end of file + and in <a class="ulink" href="http://download.sybase.com/pdfdocs/cng1000e/ref.pdf" target="_top">PDF</a> form. <a href="#ftn.idm71576432" class="footnote" id="idm71576432"><sup class="footnote">[27]</sup></a></p><div class="table"><a id="ctlib.api"></a><p class="title"><strong>Table��11.2.��<code class="systemitem">CT-Library</code> API Implementation Summary</strong></p><div class="table-contents"><table class="table" summary="CT-Library API Implementation Summary" border="1"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th>Category</th><th>Function</th><th>Status</th><th>Comments</th></tr></thead><tbody><tr><td>(all)</td><td>ct_bind</td><td>OK</td><td>Bind server results to program variables.</td></tr><tr><td>(all)</td><td>ct_br_column</td><td>Retrieve information about a column generated by a browse mode select.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_br_table</td><td>Return information about browse mode tables.</td><td class="auto-ge nerated">��</td></tr><tr><td>(all)</td><td>ct_callback</td><td>OK</td><td>Install or retrieve a Client-Library callback routine.</td></tr><tr><td>(all)</td><td>ct_cancel</td><td>OK</td><td>Cancel a command or the results of a command.</td></tr><tr><td>(all)</td><td>ct_capability</td><td>OK</td><td>Set or retrieve a client/server capability.</td></tr><tr><td>(all)</td><td>ct_close</td><td>OK</td><td>Close a server connection.</td></tr><tr><td>(all)</td><td>ct_cmd_alloc</td><td>OK</td><td>Allocate a CS_COMMAND structure.</td></tr><tr><td>(all)</td><td>ct_cmd_drop</td><td>OK</td><td>Deallocate a CS_COMMAND structure.</td></tr><tr><td>(all)</td><td>ct_cmd_props</td><td>OK</td><td>Set or retrieve command structure properties. For use by applications that resend commands.</td></tr><tr><td>(all)</td><td>ct_command</td><td>OK</td><td>Initiate a language, package, RPC, message, or send-data command.</td></tr><tr><td>(all)</td><td>ct_compute_info</td><td>OK</td><td>Retrieve compute result inf ormation.</td></tr><tr><td>(all)</td><td>ct_con_alloc</td><td>OK</td><td>Allocate a CS_CONNECTION structure.</td></tr><tr><td>(all)</td><td>ct_con_drop</td><td>OK</td><td>Deallocate a CS_CONNECTION structure.</td></tr><tr><td>(all)</td><td>ct_con_props</td><td>OK</td><td>Set or retrieve connection structure properties.</td></tr><tr><td>(all)</td><td>ct_config</td><td>OK</td><td>Set or retrieve context properties.</td></tr><tr><td>(all)</td><td>ct_connect</td><td>OK</td><td>Connect to a server.</td></tr><tr><td>(all)</td><td>ct_cursor</td><td>OK</td><td>Initiate a Client-Library cursor command.</td></tr><tr><td>(all)</td><td>ct_data_info</td><td>OK</td><td>Define or retrieve a data I/O descriptor structure.</td></tr><tr><td>(all)</td><td>ct_debug</td><td>Manage debug library operations.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_describe</td><td>OK</td><td>Return a description of result data.</td></tr><tr><td>(all)</td><td>ct_diag</td><td>OK</td><td>Manage in line error handling.</td></tr><tr><td>(all)</td><td>ct_ds_dropobj</td><td>Release the memory associated with a directory object.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_ds_lookup</td><td>Initiate or cancel a directory lookup operation.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_ds_objinfo</td><td>Retrieve information associated with a directory object.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_dynamic</td><td>OK</td><td>Initiate a dynamic SQL command.</td></tr><tr><td>(all)</td><td>ct_dyndesc</td><td>Perform operations on a dynamic SQL descriptor area.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_dynsqlda</td><td>Operate on a SQLDA structure.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_exit</td><td>OK</td><td>Exit Client-Library.</td></tr><tr><td>(all)</td><td>ct_fetch</td><td>OK</td><td>Fetch result data.</td></tr><tr><td>(all)</td><td>ct_get_data</td><td>OK </td><td>Read a chunk of data from the server.</td></tr><tr><td>(all)</td><td>ct_getformat</td><td>Return the server user-defined format string associated with a result column.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_getloginfo</td><td>Transfer TDS login response information from a CS_CONNECTION structure to a newly allocated CS_LOGINFO structure.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_init</td><td>OK</td><td>Initialize Client-Library for an application context.</td></tr><tr><td>(all)</td><td>ct_keydata</td><td>Specify or extract the contents of a key column.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_labels</td><td>Define a security label or clear security labels for a connection.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_options</td><td>OK</td><td>Set, retrieve, or clear the values of server query-processing options.</td></tr><tr><td>(all)</td><td>ct_param</td><td>OK</td><td >Supply values for a server command's input parameters.</td></tr><tr><td>(all)</td><td>ct_poll</td><td>stub</td><td>Poll connections for asynchronous operation completions and registered procedure notifications.</td></tr><tr><td>(all)</td><td>ct_recvpassthru</td><td>Receive a TDS (Tabular Data Stream) packet from a server.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_remote_pwd</td><td>Define or clear passwords to be used for server-to-server connections.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_res_info</td><td>OK</td><td>Retrieve current result set or command information.</td></tr><tr><td>(all)</td><td>ct_results</td><td>OK</td><td>Set up result data to be processed.</td></tr><tr><td>(all)</td><td>ct_send</td><td>OK</td><td>Send a command to the server.</td></tr><tr><td>(all)</td><td>ct_send_data</td><td>OK</td><td>Send a chunk of text or image data to the server.</td></tr><tr><td>(all)</td><td>ct_sendpassthru</td><td>Send a Tabula r Data Stream (TDS) packet to a server.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_setloginfo</td><td>Transfer TDS login response information from a CS_LOGINFO structure to a CS_CONNECTION structure.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>ct_setparam</td><td>OK</td><td>Specify source variables from which ct_send reads input parameter values for a server command.</td></tr><tr><td>(all)</td><td>ct_wakeup</td><td>Call a connection's completion callback.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>cs_calc</td><td>Perform an arithmetic operation on two operands.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>cs_cmp</td><td>Compare two data values.</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>cs_config</td><td>partial</td><td>Set or retrieve CS-Library properties.</td></tr><tr><td>(all)</td><td>cs_conv_mult</td><td>stub</td><td>Retrieve the conversion multiplier for converting cha racter data from one character set to another.</td></tr><tr><td>(all)</td><td>cs_convert</td><td>OK</td><td>Convert a data value from one datatype, locale, or format to another datatype, locale, or format.</td></tr><tr><td>(all)</td><td>cs_ctx_alloc</td><td>OK</td><td>Allocate a CS_CONTEXT structure.</td></tr><tr><td>(all)</td><td>cs_ctx_drop</td><td>OK</td><td>Deallocate a CS_CONTEXT structure.</td></tr><tr><td>(all)</td><td>cs_ctx_global</td><td>OK</td><td>Allocate or return a CS_CONTEXT structure.</td></tr><tr><td>(all)</td><td>cs_diag</td><td>OK</td><td>Manage inline error handling.</td></tr><tr><td>(all)</td><td>cs_dt_crack</td><td>OK</td><td>Convert a machine-readable datetime value into a user-accessible format.</td></tr><tr><td>(all)</td><td>cs_dt_info</td><td>stub</td><td>Set or retrieve language-specific datetime information.</td></tr><tr><td>(all)</td><td>cs_loc_alloc</td><td>OK</td><td>Allocate a CS_LOCALE structure.</td></tr><tr><td>(all)</td><td>cs_loc_drop</td><td>OK< /td><td>Deallocate a CS_LOCALE structure.</td></tr><tr><td>(all)</td><td>cs_locale</td><td>partial</td><td>Load a CS_LOCALE structure with localization values or retrieve the locale name previously used to load a CS_LOCALE structure.</td></tr><tr><td>(all)</td><td>cs_manage_convert</td><td>stub</td><td>Install or retrieve a user-defined character set conversion routine.</td></tr><tr><td>(all)</td><td>cs_objects</td><td>stub</td><td>Save, retrieve, or clear objects and data associated with them.</td></tr><tr><td>(all)</td><td>cs_set_convert</td><td>stub</td><td>Install or retrieve a user-defined conversion routine.</td></tr><tr><td>(all)</td><td>cs_setnull</td><td>stub</td><td>Define a null substitution value to be used when binding or converting NULL data.</td></tr><tr><td>(all)</td><td>cs_strbuild</td><td>OK</td><td>Construct native language message strings.</td></tr><tr><td>(all)</td><td>cs_strcmp</td><td>stub</td><td>Compare two strings using a specified sort order.</td></tr><tr> <td>(all)</td><td>cs_time</td><td>stub</td><td>Retrieve the current date and time.</td></tr><tr><td>(all)</td><td>cs_will_convert</td><td>OK</td><td>Indicate whether a specific datatype conversion is available in the Client/Server libraries.</td></tr><tr><td>(all)</td><td>blk_alloc</td><td>OK</td><td>Allocate a CS_BLKDESC structure.</td></tr><tr><td>(all)</td><td>blk_bind</td><td>OK</td><td>Bind a program variable and a database column.</td></tr><tr><td>(all)</td><td>blk_colval</td><td>stub</td><td>Server-side routine to obtain the column value from a formatted bulk copy row.</td></tr><tr><td>(all)</td><td>blk_default</td><td>stub</td><td>Retrieve a column's default value.</td></tr><tr><td>(all)</td><td>blk_describe</td><td>OK</td><td>Retrieve a description of a database column.</td></tr><tr><td>(all)</td><td>blk_done</td><td>OK</td><td>Mark a complete bulk copy operation or a complete bulk copy batch.</td></tr><tr><td>(all)</td><td>blk_drop</td><td>OK</td><td>Deallocate a CS_BLKDES C structure.</td></tr><tr><td>(all)</td><td>blk_getrow</td><td>stub</td><td>Server-side routine to retrieve and store a formatted bulk copy row.</td></tr><tr><td>(all)</td><td>blk_gettext</td><td>stub</td><td>Server-side routine to retrieve the text, image, sensitivity, or boundary portion of an incoming bulk copy formatted row.</td></tr><tr><td>(all)</td><td>blk_init</td><td>OK</td><td>Initiate a bulk copy operation.</td></tr><tr><td>(all)</td><td>blk_props</td><td>OK</td><td>Set or retrieve bulk descriptor structure properties.</td></tr><tr><td>(all)</td><td>blk_rowalloc</td><td>stub</td><td>Server-side routine to allocate space for a formatted bulk copy row.</td></tr><tr><td>(all)</td><td>blk_rowdrop</td><td>stub</td><td>Server-side routine to free space previously allocated for a formatted bulk copy row.</td></tr><tr><td>(all)</td><td>blk_rowxfer</td><td>OK</td><td>Transfer one or more rows during a bulk copy operation without specifying or receiving a row count.</td></tr><tr><t d>(all)</td><td>blk_rowxfer_mult</td><td>OK</td><td>Transfer one or more rows during a bulk copy operation.</td></tr><tr><td>(all)</td><td>blk_sendrow</td><td>stub</td><td>Server-side routine to send a formatted bulk copy row obtained from blk_getrow.</td></tr><tr><td>(all)</td><td>blk_sendtext</td><td>stub</td><td>Server-side routine to send text, image, sensitivity, or boundary data in a formatted bulk copy row obtained from blk_sendtext.</td></tr><tr><td>(all)</td><td>blk_srvinit</td><td>stub</td><td>Server-side routine to copy descriptions of server table columns to the client, if required.</td></tr><tr><td>(all)</td><td>blk_textxfer</td><td>stub</td><td>Transfer a column's data in chunks during a bulk copy operation.</td></tr></tbody></table></div></div><br class="table-break" /><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm71576432" class="footnote"><p><a href="#idm71576432" class="para"><sup class="para">[27] </sup></a>Li nks such as these are quite perishable. Should you find them broken, please check the <a class="ulink" href="http://www.freetds.org/userguide/ctlib.api.summary.htm" target="_top"><span class="productname">FreeTDS</span> User Guide</a> posted on our website. If it's out of date, please let us know, so we can correct it. Thanks.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dblib.api.summary.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="odbc.api.summary.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><code class="systemitem">DB-Library</code> API Implementation Summary��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��ODBC API Implementation Summary</td></tr></tabl e></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/dblib.api.summary.html new/freetds-1.3.16/doc/userguide/dblib.api.summary.html --- old/freetds-1.3.15/doc/userguide/dblib.api.summary.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/dblib.api.summary.html 2022-12-09 10:01:40.000000000 +0100 @@ -7,4 +7,4 @@ <a class="ulink" href="http://download.sybase.com/pdfdocs/cng1250j/dblib.pdf" target="_top">downloaded</a> as a PDF file. - <a href="#ftn.idm70340976" class="footnote" id="idm70340976"><sup class="footnote">[26]</sup></a></p><div class="table"><a id="dblib.api"></a><p class="title"><strong>Table��11.1.��<code class="systemitem">DB-Library</code> API Implementation Summary</strong></p><div class="table-contents"><table class="table" summary="DB-Library API Implementation Summary" border="1"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th>Category</th><th>Microsoft name</th><th>Sybase name</th><th>Status</th><th>Comments</th></tr></thead><tbody><tr><td>(none) </td><td>n/a</td><td>db12hour</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbaltbind_ps</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbbind_ps</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbbufsize</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbcharsetconv</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbcoltypeinfo</td><td>OK</td><td>��</td></tr><tr><td>(none) </td> <td>n/a</td><td>dbconvert_ps</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbfreesort</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbfree_xlate</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbgetcharset</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbgetloginfo</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbgetlusername</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbgetnatlang</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>DBIORDESC</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>DBIOWDESC</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbloadsort</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbload_xlate</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbnpcreate</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbnpdefine</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbpoll</td><td>� �</td></tr><tr><td>(none) </td><td>n/a</td><td>DBRBUF</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbreadpage</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbrecftos</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbrecvpassthru</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregdrop</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregexec</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbreghandle</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbreginit</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbreglist</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregnowatch</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregparam</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregwatch</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregwatchlist</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>db rpwclr</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbrpwset</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsafestr</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsechandle</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsendpassthru</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetbusy</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetdefcharset</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetdeflang</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetidle</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetifile</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetinterrupt</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>DBSETLCHARSET</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>DBSETLENCRYPT</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetloginfo</td><td>never</td></tr><tr><td>( none) </td><td>n/a</td><td>dbsetrow</td><td>OK</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetversion</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbspr1row</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbspr1rowlen</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsprhead</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsprline</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbstrcmp</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbstrsort</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbtextsize</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbwritepage</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbxlate</td><td>never</td></tr><tr><td>bcp </td><td>bcp_batch</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_bind</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_colfmt</td><td> (same)</td><td>OK</td></tr><tr><td>bcp </td><td>n/a</td><td>bcp_colfmt_ps</td><td>��</td></tr><tr><td>bcp </td><td>bcp_collen</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_colptr</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_columns</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_control</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_done</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_exec</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>n/a</td><td>bcp_getl</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_init</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_moretext</td><td>(same)</td><td>stub</td></tr><tr><td>bcp </td><td>n/a</td><td>bcp_options</td><td>partial</td></tr><tr><td>bcp </td><td>bcp_readfmt</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_sendrow</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>BCP_SETL </td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_writefmt</td><td>(same)</td><td>��</td></tr><tr><td>browse </td><td>dbcolbrowse</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbcolsource</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbfreequal</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbqual</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtabbrowse</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtabcount</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtabname</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtabsource</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtsnewlen</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtsnewval</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtsput</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbadata</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbad len</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltbind</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltcolid</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltlen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltop</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbalttype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltutype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbanullbind</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbbind</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbbylist</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcancel</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcanquery</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbchange</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbclose</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbclrbuf</td><t d>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbclropt</td><td>(same)</td><td>partial</td></tr><tr><td>core </td><td>dbcmd</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcmdrow</td><td>DBCMDROW</td><td>OK</td></tr><tr><td>core </td><td>dbcolinfo</td><td>n/a</td><td>OK</td></tr><tr><td>core </td><td>dbcollen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcolname</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcoltype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcolutype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbconvert</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcount</td><td>DBCOUNT</td><td>OK</td></tr><tr><td>core </td><td>dbcurcmd</td><td>DBCURCMD</td><td>stub</td></tr><tr><td>core </td><td>dbcurrow</td><td>DBCURROW</td><td>stub</td></tr><tr><td>core </td><td>dbdata</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbdataready</td><td >n/a</td><td>��</td></tr><tr><td>core </td><td>dbdatecrack</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbdatlen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbdead</td><td>DBDEAD</td><td>OK</td></tr><tr><td>core </td><td>dbenlisttrans</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbenlistxatrans</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dberrhandle</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbexit</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbfcmd</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbfirstrow</td><td>DBFIRSTROW</td><td>OK</td></tr><tr><td>core </td><td>dbfreebuf</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgetchar</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgetmaxprocs</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgetoff</td><td>(same)</td><td>never</td></tr><tr><td>core </td><td>dbgetpac ket</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgetrow</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgettime</td><td>DBGETTIME</td><td>OK</td></tr><tr><td>core </td><td>dbgetuserdata</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbinit</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbisavail</td><td>DBISAVAIL</td><td>OK</td></tr><tr><td>core </td><td>dbiscount</td><td>n/a</td><td>OK</td></tr><tr><td>core </td><td>dbisopt</td><td>(same)</td><td>partial</td></tr><tr><td>core </td><td>dblastrow</td><td>DBLASTROW</td><td>OK</td></tr><tr><td>core </td><td>dblogin</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbfreelogin</td><td>dbloginfree</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4add</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4cmp</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4copy</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4d ivide</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4minus</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4mul</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4sub</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4zero</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyadd</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnycmp</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnycopy</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnydec</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnydivide</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnydown</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyinc</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyinit</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnymaxneg</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnymaxpos</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyminus</td><td>OK</t d></tr><tr><td>money</td><td>n/a</td><td>dbmnymul</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyndigit</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyscale</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnysub</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyzero</td><td>OK</td></tr><tr><td>core </td><td>dbmorecmds</td><td>DBMORECMDS</td><td>OK</td></tr><tr><td>core </td><td>dbmsghandle</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbname</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnextrow</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnullbind</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnumalts</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnumcols</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnumcompute</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnumorders</td><td>DBNUMORDERS</td><td>never</td></tr><tr> <td>core </td><td>dbopen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbordercol</td><td>(same)</td><td>never</td></tr><tr><td>core </td><td>dbprhead</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbprocerrhandle</td><td>n/a</td><td>aliases dberrhandle</td></tr><tr><td>core </td><td>dbprocinfo</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbprocmsghandle</td><td>n/a</td><td>aliases dbmsghandle</td></tr><tr><td>core </td><td>dbprrow</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbprtype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbresults</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbrows</td><td>DBROWS</td><td>OK</td></tr><tr><td>core </td><td>dbrowtype</td><td>DBROWTYPE</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>dbservcharset</td><td>OK</td></tr><tr><td>core </td><td>dbserverenum</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbsetavail </td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsetlapp</td><td>DBSETLAPP</td><td>OK</td></tr><tr><td>core </td><td>dbsetlfallback</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbsetlhost</td><td>DBSETLHOST</td><td>OK</td></tr><tr><td>core </td><td>dbsetlnatlang</td><td>DBSETLNATLANG</td><td>OK</td></tr><tr><td>core </td><td>dbsetlogintime</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsetlpacket</td><td>DBSETLPACKET</td><td>OK</td></tr><tr><td>core </td><td>dbsetlpwd</td><td>DBSETLPWD</td><td>OK</td></tr><tr><td>core </td><td>dbsetlsecure</td><td>n/a</td><td>��</td></tr><tr><td>core </td><td>dbsetltime</td><td>n/a</td><td>��</td></tr><tr><td>core </td><td>dbsetluser</td><td>DBSETLUSER</td><td>OK</td></tr><tr><td>core </td><td>dbsetlversion</td><td>n/a</td><td>OK</td></tr><tr><td>core </td><td>dbsetmaxprocs</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsetnull</td><td>(same)</td><td>O K</td></tr><tr><td>core </td><td>dbsetopt</td><td>(same)</td><td>partial</td></tr><tr><td>core </td><td>dbsettime</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsetuserdata</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>dbspid</td><td>OK</td></tr><tr><td>core </td><td>dbsqlexec</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsqlok</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsqlsend</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>dbstrbuild</td><td>OK</td></tr><tr><td>core </td><td>dbstrcpy</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbstrlen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>DBTDS</td><td>OK</td></tr><tr><td>core </td><td>dbuse</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbvarylen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>dbversion</td><td>OK</td></tr><tr><td>co re </td><td>dbwillconvert</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbwinexit (Windows only)</td><td>n/a</td><td>no-op macro</td></tr><tr><td>cursor </td><td>dbcursor</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorbind</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorclose</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorcolinfo</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorfetch</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorfetchex</td><td>n/a</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorinfo</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorinfoex</td><td>n/a</td><td>never</td></tr><tr><td>cursor </td><td>dbcursoropen</td><td>(same)</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdate4cmp</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdate4zero</td><td>never</td></tr><t r><td>datetime </td><td>n/a</td><td>dbdatechar</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdatecmp</td><td>OK</td><td>��</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdatename</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdateorder</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdatepart</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdatezero</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdayname</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbmonthname</td><td>OK</td></tr><tr><td>procedure</td><td>dbhasretstat</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbnumrets</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbretdata</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbretlen</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbretname</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbretstatus</td><td>(same)</td><td> OK</td></tr><tr><td>procedure</td><td>dbrettype</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbrpcexec</td><td>n/a</td><td>��</td></tr><tr><td>procedure</td><td>dbrpcinit</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbrpcparam</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbrpcsend</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbmoretext</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbreadtext</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbtxptr</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbtxtimestamp</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbtxtsnewval</td><td>(same)</td><td>��</td></tr><tr><td>text </td><td>dbtxtsput</td><td>(same)</td><td>��</td></tr><tr><td>text </td><td>dbupdatetext</td><td>n/a</td><td>��</td></tr><tr><td>text </td><td>dbwritetext</td><td>(same)</td><td>OK</td></tr></tbody></table></div></div><br class="table-break" />< div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70340976" class="footnote"><p><a href="#idm70340976" class="para"><sup class="para">[26] </sup></a>Links such as these are quite perishable. Should you find them broken, please check the <a class="ulink" href="http://www.freetds.org/userguide/dblib.api.summary.htm" target="_top"><span class="productname">FreeTDS</span> User Guide</a> posted on our website. If it's out of date, please let us know, so we can correct it. Thanks.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apireference.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="ctlib.api.summary.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">API Reference Manual��</td><td width="20%" align=" center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��ct-lib API Implementation Summary</td></tr></table></div></body></html> \ No newline at end of file + <a href="#ftn.idm70717808" class="footnote" id="idm70717808"><sup class="footnote">[26]</sup></a></p><div class="table"><a id="dblib.api"></a><p class="title"><strong>Table��11.1.��<code class="systemitem">DB-Library</code> API Implementation Summary</strong></p><div class="table-contents"><table class="table" summary="DB-Library API Implementation Summary" border="1"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th>Category</th><th>Microsoft name</th><th>Sybase name</th><th>Status</th><th>Comments</th></tr></thead><tbody><tr><td>(none) </td><td>n/a</td><td>db12hour</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbaltbind_ps</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbbind_ps</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbbufsize</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbcharsetconv</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbcoltypeinfo</td><td>OK</td><td>��</td></tr><tr><td>(none) </td> <td>n/a</td><td>dbconvert_ps</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbfreesort</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbfree_xlate</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbgetcharset</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbgetloginfo</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbgetlusername</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbgetnatlang</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>DBIORDESC</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>DBIOWDESC</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbloadsort</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbload_xlate</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbnpcreate</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbnpdefine</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbpoll</td><td>� �</td></tr><tr><td>(none) </td><td>n/a</td><td>DBRBUF</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbreadpage</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbrecftos</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbrecvpassthru</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregdrop</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregexec</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbreghandle</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbreginit</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbreglist</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregnowatch</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregparam</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregwatch</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbregwatchlist</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>db rpwclr</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbrpwset</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsafestr</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsechandle</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsendpassthru</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetbusy</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetdefcharset</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetdeflang</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetidle</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetifile</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetinterrupt</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>DBSETLCHARSET</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>DBSETLENCRYPT</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetloginfo</td><td>never</td></tr><tr><td>( none) </td><td>n/a</td><td>dbsetrow</td><td>OK</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsetversion</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbspr1row</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbspr1rowlen</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsprhead</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbsprline</td><td>OK</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbstrcmp</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbstrsort</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbtextsize</td><td>��</td></tr><tr><td>(none) </td><td>n/a</td><td>dbwritepage</td><td>never</td></tr><tr><td>(none) </td><td>n/a</td><td>dbxlate</td><td>never</td></tr><tr><td>bcp </td><td>bcp_batch</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_bind</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_colfmt</td><td> (same)</td><td>OK</td></tr><tr><td>bcp </td><td>n/a</td><td>bcp_colfmt_ps</td><td>��</td></tr><tr><td>bcp </td><td>bcp_collen</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_colptr</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_columns</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_control</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_done</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_exec</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>n/a</td><td>bcp_getl</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_init</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_moretext</td><td>(same)</td><td>stub</td></tr><tr><td>bcp </td><td>n/a</td><td>bcp_options</td><td>partial</td></tr><tr><td>bcp </td><td>bcp_readfmt</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_sendrow</td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>BCP_SETL </td><td>(same)</td><td>OK</td></tr><tr><td>bcp </td><td>bcp_writefmt</td><td>(same)</td><td>��</td></tr><tr><td>browse </td><td>dbcolbrowse</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbcolsource</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbfreequal</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbqual</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtabbrowse</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtabcount</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtabname</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtabsource</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtsnewlen</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtsnewval</td><td>n/a</td><td>never</td></tr><tr><td>browse </td><td>dbtsput</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbadata</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbad len</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltbind</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltcolid</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltlen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltop</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbalttype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbaltutype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbanullbind</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbbind</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbbylist</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcancel</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcanquery</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbchange</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbclose</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbclrbuf</td><t d>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbclropt</td><td>(same)</td><td>partial</td></tr><tr><td>core </td><td>dbcmd</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcmdrow</td><td>DBCMDROW</td><td>OK</td></tr><tr><td>core </td><td>dbcolinfo</td><td>n/a</td><td>OK</td></tr><tr><td>core </td><td>dbcollen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcolname</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcoltype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcolutype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbconvert</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbcount</td><td>DBCOUNT</td><td>OK</td></tr><tr><td>core </td><td>dbcurcmd</td><td>DBCURCMD</td><td>stub</td></tr><tr><td>core </td><td>dbcurrow</td><td>DBCURROW</td><td>stub</td></tr><tr><td>core </td><td>dbdata</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbdataready</td><td >n/a</td><td>��</td></tr><tr><td>core </td><td>dbdatecrack</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbdatlen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbdead</td><td>DBDEAD</td><td>OK</td></tr><tr><td>core </td><td>dbenlisttrans</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbenlistxatrans</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dberrhandle</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbexit</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbfcmd</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbfirstrow</td><td>DBFIRSTROW</td><td>OK</td></tr><tr><td>core </td><td>dbfreebuf</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgetchar</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgetmaxprocs</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgetoff</td><td>(same)</td><td>never</td></tr><tr><td>core </td><td>dbgetpac ket</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgetrow</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbgettime</td><td>DBGETTIME</td><td>OK</td></tr><tr><td>core </td><td>dbgetuserdata</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbinit</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbisavail</td><td>DBISAVAIL</td><td>OK</td></tr><tr><td>core </td><td>dbiscount</td><td>n/a</td><td>OK</td></tr><tr><td>core </td><td>dbisopt</td><td>(same)</td><td>partial</td></tr><tr><td>core </td><td>dblastrow</td><td>DBLASTROW</td><td>OK</td></tr><tr><td>core </td><td>dblogin</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbfreelogin</td><td>dbloginfree</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4add</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4cmp</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4copy</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4d ivide</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4minus</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4mul</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4sub</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmny4zero</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyadd</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnycmp</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnycopy</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnydec</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnydivide</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnydown</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyinc</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyinit</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnymaxneg</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnymaxpos</td><td>OK</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyminus</td><td>OK</t d></tr><tr><td>money</td><td>n/a</td><td>dbmnymul</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyndigit</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyscale</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnysub</td><td>stub</td></tr><tr><td>money</td><td>n/a</td><td>dbmnyzero</td><td>OK</td></tr><tr><td>core </td><td>dbmorecmds</td><td>DBMORECMDS</td><td>OK</td></tr><tr><td>core </td><td>dbmsghandle</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbname</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnextrow</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnullbind</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnumalts</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnumcols</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnumcompute</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbnumorders</td><td>DBNUMORDERS</td><td>never</td></tr><tr> <td>core </td><td>dbopen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbordercol</td><td>(same)</td><td>never</td></tr><tr><td>core </td><td>dbprhead</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbprocerrhandle</td><td>n/a</td><td>aliases dberrhandle</td></tr><tr><td>core </td><td>dbprocinfo</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbprocmsghandle</td><td>n/a</td><td>aliases dbmsghandle</td></tr><tr><td>core </td><td>dbprrow</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbprtype</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbresults</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbrows</td><td>DBROWS</td><td>OK</td></tr><tr><td>core </td><td>dbrowtype</td><td>DBROWTYPE</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>dbservcharset</td><td>OK</td></tr><tr><td>core </td><td>dbserverenum</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbsetavail </td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsetlapp</td><td>DBSETLAPP</td><td>OK</td></tr><tr><td>core </td><td>dbsetlfallback</td><td>n/a</td><td>never</td></tr><tr><td>core </td><td>dbsetlhost</td><td>DBSETLHOST</td><td>OK</td></tr><tr><td>core </td><td>dbsetlnatlang</td><td>DBSETLNATLANG</td><td>OK</td></tr><tr><td>core </td><td>dbsetlogintime</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsetlpacket</td><td>DBSETLPACKET</td><td>OK</td></tr><tr><td>core </td><td>dbsetlpwd</td><td>DBSETLPWD</td><td>OK</td></tr><tr><td>core </td><td>dbsetlsecure</td><td>n/a</td><td>��</td></tr><tr><td>core </td><td>dbsetltime</td><td>n/a</td><td>��</td></tr><tr><td>core </td><td>dbsetluser</td><td>DBSETLUSER</td><td>OK</td></tr><tr><td>core </td><td>dbsetlversion</td><td>n/a</td><td>OK</td></tr><tr><td>core </td><td>dbsetmaxprocs</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsetnull</td><td>(same)</td><td>O K</td></tr><tr><td>core </td><td>dbsetopt</td><td>(same)</td><td>partial</td></tr><tr><td>core </td><td>dbsettime</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsetuserdata</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>dbspid</td><td>OK</td></tr><tr><td>core </td><td>dbsqlexec</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsqlok</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbsqlsend</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>dbstrbuild</td><td>OK</td></tr><tr><td>core </td><td>dbstrcpy</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbstrlen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>DBTDS</td><td>OK</td></tr><tr><td>core </td><td>dbuse</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbvarylen</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>n/a</td><td>dbversion</td><td>OK</td></tr><tr><td>co re </td><td>dbwillconvert</td><td>(same)</td><td>OK</td></tr><tr><td>core </td><td>dbwinexit (Windows only)</td><td>n/a</td><td>no-op macro</td></tr><tr><td>cursor </td><td>dbcursor</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorbind</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorclose</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorcolinfo</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorfetch</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorfetchex</td><td>n/a</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorinfo</td><td>(same)</td><td>never</td></tr><tr><td>cursor </td><td>dbcursorinfoex</td><td>n/a</td><td>never</td></tr><tr><td>cursor </td><td>dbcursoropen</td><td>(same)</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdate4cmp</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdate4zero</td><td>never</td></tr><t r><td>datetime </td><td>n/a</td><td>dbdatechar</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdatecmp</td><td>OK</td><td>��</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdatename</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdateorder</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdatepart</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdatezero</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbdayname</td><td>never</td></tr><tr><td>datetime </td><td>n/a</td><td>dbmonthname</td><td>OK</td></tr><tr><td>procedure</td><td>dbhasretstat</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbnumrets</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbretdata</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbretlen</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbretname</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbretstatus</td><td>(same)</td><td> OK</td></tr><tr><td>procedure</td><td>dbrettype</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbrpcexec</td><td>n/a</td><td>��</td></tr><tr><td>procedure</td><td>dbrpcinit</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbrpcparam</td><td>(same)</td><td>OK</td></tr><tr><td>procedure</td><td>dbrpcsend</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbmoretext</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbreadtext</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbtxptr</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbtxtimestamp</td><td>(same)</td><td>OK</td></tr><tr><td>text </td><td>dbtxtsnewval</td><td>(same)</td><td>��</td></tr><tr><td>text </td><td>dbtxtsput</td><td>(same)</td><td>��</td></tr><tr><td>text </td><td>dbupdatetext</td><td>n/a</td><td>��</td></tr><tr><td>text </td><td>dbwritetext</td><td>(same)</td><td>OK</td></tr></tbody></table></div></div><br class="table-break" />< div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70717808" class="footnote"><p><a href="#idm70717808" class="para"><sup class="para">[26] </sup></a>Links such as these are quite perishable. Should you find them broken, please check the <a class="ulink" href="http://www.freetds.org/userguide/dblib.api.summary.htm" target="_top"><span class="productname">FreeTDS</span> User Guide</a> posted on our website. If it's out of date, please let us know, so we can correct it. Thanks.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apireference.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="ctlib.api.summary.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">API Reference Manual��</td><td width="20%" align=" center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��ct-lib API Implementation Summary</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/domains.html new/freetds-1.3.16/doc/userguide/domains.html --- old/freetds-1.3.15/doc/userguide/domains.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/domains.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>Domain Logins</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="configs.html" title="Chapter��5.��Advanced Configurations" /><link rel="prev" href="Localization.html" title="Localization and TDS 7.0" /><link rel="next" href="kerberos.html" title="Kerberos Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Domain Logins</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Localization.html">Prev</a>��</td><th width="60%" align="center">Chapter��5.��Advanced Configurations</th><td width ="20%" align="right">��<a accesskey="n" href="kerberos.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="domains"></a>Domain Logins</h2></div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>Domain logins can be used only with TDS protocol versions 7.0 or above.</p></td></tr></table></div><p>As mentioned in the installation chapter, <span class="productname">Microsoft SQL Server</span> includes the ability to use domain - <a href="#ftn.idm69665520" class="footnote" id="idm69665520"><sup class="footnote">[20]</sup></a> + <a href="#ftn.idm70025968" class="footnote" id="idm70025968"><sup class="footnote">[20]</sup></a> logins instead of standard server logins. Passwords are encrypted on the wire using a challenge-response protocol. <span class="productname">FreeTDS</span> plays nice with such logins. </p><p><span class="productname">FreeTDS</span> supports single sign-on (connecting without prompting for a username & password) or not, depending on how it was configured. For Windows hosts (both 32- and 64-bit), if SSPI is enabled, <span class="productname">FreeTDS</span> will log in using so-called <span class="quote">���<span class="quote">trusted authentication</span>���</span>. For non-Windows hosts, enabling Kerberos provides similar functionality. </p><p>When neither option is enabled, <span class="productname">FreeTDS</span> can <span class="emphasis"><em>still</em></span> log in using the domain account, but the user must supply the username & password.</p><p>To use domain logins without SSPI or Kerberos, use the <code class="literal">'DOMAIN\username'</code> syntax for the use rname and use the domain password.</p><div class="example"><a id="e.g.domainlogin"></a><p class="title"><strong>Example��5.4.��Logging in with a domain login</strong></p><div class="example-contents"><pre class="screen"> <code class="computeroutput">$ </code><strong class="userinput"><code>tsql -S camelot -U 'NOTTINGHAM\lancelot' -P roundtable</code></strong> locale is "C" @@ -8,5 +8,5 @@ Msg 5703, Level 0, State 1, Server CPRO200, Line 0 Changed language setting to middle_english. 1></pre></div></div><br class="example-break" /><p>When <span class="productname">FreeTDS</span> sees the <span class="quote">���<span class="quote"><code class="literal">\</code></span>���</span> character, it automatically chooses a domain login.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="domaindetails"></a>Implementation details</h3></div></div></div><p>Support for domain logins in <span class="productname">FreeTDS</span> is limited to the TCP/IP network protocol stack. <span class="productname">FreeTDS</span> does not currently implement support for Named Pipe-based SQL connections ��� that is, connections transported over the DCE/RPC interface, which uses TCP port 139, 445, or 135 on Win32 machines depending on the type of encapsulation used for DCE/RPC itself. Supporting this would require a fairly extensive DCE/RPC library for Unix. <span class="productname">Samba</span> has one that is licensed under the GPL and therefore not usab le by LGPL-licensed projects such as <span class="productname">FreeTDS</span> .</p><p>For a technical description of the protocol used for domain logins, see - <a class="ulink" href="http://davenport.sourceforge.net/ntlm.html" target="_top">http://davenport.sourceforge.net/ntlm.html</a></p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69665520" class="footnote"><p><a href="#idm69665520" class="para"><sup class="para">[20] </sup></a>The term <em class="firstterm">domain</em> in this context is a Microsoft term. It refers to what's sometimes called an <em class="firstterm">NT domain</em>. It's unrelated to the DNS domain. DNS domains are used for name resolution. NT domains are used for authentication. Authentication is done by the domain controller, often the <em class="firstterm">Primary Domain Controller</em> (PDC).</p><p>The Microsoft SQL Server machine may belong to an NT domain. + <a class="ulink" href="http://davenport.sourceforge.net/ntlm.html" target="_top">http://davenport.sourceforge.net/ntlm.html</a></p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70025968" class="footnote"><p><a href="#idm70025968" class="para"><sup class="para">[20] </sup></a>The term <em class="firstterm">domain</em> in this context is a Microsoft term. It refers to what's sometimes called an <em class="firstterm">NT domain</em>. It's unrelated to the DNS domain. DNS domains are used for name resolution. NT domains are used for authentication. Authentication is done by the domain controller, often the <em class="firstterm">Primary Domain Controller</em> (PDC).</p><p>The Microsoft SQL Server machine may belong to an NT domain. <span class="productname">FreeTDS</span> provides an encrypted password ��� a domain password, known to the domain controller ��� that the server will ask the domain controller to verify.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Localization.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="configs.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="kerberos.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Localization and <acronym class="acronym">TDS</acronym> 7.0��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Kerberos Support</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/dsnless.html new/freetds-1.3.16/doc/userguide/dsnless.html --- old/freetds-1.3.15/doc/userguide/dsnless.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/dsnless.html 2022-12-09 10:01:39.000000000 +0100 @@ -21,7 +21,7 @@ /* * application call */ - const char servername[] = "JDBC"; <a href="#ftn.idm69521008" class="footnote" id="idm69521008"><sup class="footnote">[9]</sup></a> + const char servername[] = "JDBC"; <a href="#ftn.idm69873264" class="footnote" id="idm69873264"><sup class="footnote">[9]</sup></a> sprintf(tmp, "DRIVER=FreeTDS<a href="#ftn.dsnOdbcinst" class="footnote" id="dsnOdbcinst"><sup class="footnote">[10]</sup></a>;SERVERNAME=%s;UID=%s;PWD=%s;DATABASE=%s;", servername, username, password, dbname); res = SQLDriverConnect(Connection, NULL, (SQLCHAR *) tmp, SQL_NTS, @@ -38,7 +38,7 @@ /* * application call */ - const char servername[] = "jdbc.sybase.com"; <a href="#ftn.idm69527280" class="footnote" id="idm69527280"><sup class="footnote">[11]</sup></a> + const char servername[] = "jdbc.sybase.com"; <a href="#ftn.idm69879536" class="footnote" id="idm69879536"><sup class="footnote">[11]</sup></a> sprintf(tmp, "DRIVER=FreeTDS<a href="dsnless.html#ftn.dsnOdbcinst" class="footnoteref"><sup class="footnoteref">[10]</sup></a>;SERVER=%s;UID=%s;PWD=%s;DATABASE=%s;TDS_Version=5.0;Port=4444;", servername, username, password, dbname); res = SQLDriverConnect(Connection, NULL, (SQLCHAR *) tmp, SQL_NTS, @@ -47,4 +47,4 @@ printf("Unable to open data source (ret=%d)\n", res); exit(1); } - </pre></div></div><p><br class="example-break" /></p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69521008" class="footnote"><p><a href="#idm69521008" class="para"><sup class="para">[9] </sup></a>refers to the <code class="literal">[JDBC]</code> entry in <code class="filename">freetds.conf</code>.</p></div><div id="ftn.dsnOdbcinst" class="footnote"><p><a href="#dsnOdbcinst" class="para"><sup class="para">[10] </sup></a>refers to the <code class="literal">[FreeTDS]</code> entry in <code class="filename">odbcinst.ini</code>.</p></div><div id="ftn.idm69527280" class="footnote"><p><a href="#idm69527280" class="para"><sup class="para">[11] </sup></a>refers to the real server name.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="OdbcConnAttr.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="prepodbc.html ">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="odbcinionly.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Connection attributes��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��ODBC-only configuration</td></tr></table></div></body></html> \ No newline at end of file + </pre></div></div><p><br class="example-break" /></p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69873264" class="footnote"><p><a href="#idm69873264" class="para"><sup class="para">[9] </sup></a>refers to the <code class="literal">[JDBC]</code> entry in <code class="filename">freetds.conf</code>.</p></div><div id="ftn.dsnOdbcinst" class="footnote"><p><a href="#dsnOdbcinst" class="para"><sup class="para">[10] </sup></a>refers to the <code class="literal">[FreeTDS]</code> entry in <code class="filename">odbcinst.ini</code>.</p></div><div id="ftn.idm69879536" class="footnote"><p><a href="#idm69879536" class="para"><sup class="para">[11] </sup></a>refers to the real server name.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="OdbcConnAttr.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="prepodbc.html ">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="odbcinionly.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Connection attributes��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��ODBC-only configuration</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/freetdsconf.html new/freetds-1.3.16/doc/userguide/freetdsconf.html --- old/freetds-1.3.15/doc/userguide/freetdsconf.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/freetdsconf.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>The freetds.conf file</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="install.html" title="Chapter��3.��Install FreeTDS" /><link rel="prev" href="name.lookup.html" title="servername Lookup" /><link rel="next" href="locales.html" title="The locales.conf file" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The <code class="filename">freetds.conf</code> file</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="name.lookup.html">Prev</a>��</td><th width="60%" align="center">Chapter��3.��Inst all <span class="productname">FreeTDS</span></th><td width="20%" align="right">��<a accesskey="n" href="locales.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="freetdsconf"></a>The <code class="filename">freetds.conf</code> file</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="freetdsconfpurpose"></a>What it does</h3></div></div></div><p>Just as DNS defines hostnames for network addresses, <code class="filename">freetds.conf</code> uses a <em class="firstterm">servername</em> to define the properties of your server. <a href="#ftn.idm68882416" class="footnote" id="idm68882416"><sup class="footnote">[7]</sup></a> +<!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/html; charset=UTF-8" /><title>The freetds.conf file</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="install.html" title="Chapter��3.��Install FreeTDS" /><link rel="prev" href="name.lookup.html" title="servername Lookup" /><link rel="next" href="locales.html" title="The locales.conf file" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The <code class="filename">freetds.conf</code> file</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="name.lookup.html">Prev</a>��</td><th width="60%" align="center">Chapter��3.��Inst all <span class="productname">FreeTDS</span></th><td width="20%" align="right">��<a accesskey="n" href="locales.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="freetdsconf"></a>The <code class="filename">freetds.conf</code> file</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="freetdsconfpurpose"></a>What it does</h3></div></div></div><p>Just as DNS defines hostnames for network addresses, <code class="filename">freetds.conf</code> uses a <em class="firstterm">servername</em> to define the properties of your server. <a href="#ftn.idm69259248" class="footnote" id="idm69259248"><sup class="footnote">[7]</sup></a> In particular, <span class="productname">FreeTDS</span> needs to know: </p><div class="itemizedlist"><p class="title"><strong>Primary Server Properties</strong></p><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Hostname or IP address of the server </p></li><li class="listitem"><p>Port number or Instance name (not both) @@ -30,7 +30,7 @@ This is the name of the database container in the server you are connecting to.</td></tr><tr><td><code class="literal">initial block size</code></td><td>multiple of 512</td><td>512</td><td>Specifies the maximum size of a protocol block. Don't mess with unless you know what you are doing.</td></tr><tr><td><code class="literal">dump file</code></td><td>any valid file name</td><td>none Overridden by <a class="link" href="logging.html#TDSDUMP">TDSDUMP</a>. </td><td>Specifies the location of a tds dump file and turns on logging</td></tr><tr><td><code class="literal">dump file append</code></td><td>yes/no</td><td>no</td><td>Appends dump file instead of overwriting it. Useful for debugging when many processes are active.</td></tr><tr><td><code class="literal">timeout</code></td><td>0-</td><td>none</td><td>Sets period to wait for response of query before timing out.</td></tr><tr><td><code class="literal">connect timeout</code></td><td>0-</td><td>none</td><td>Sets period to wait for response from connect before timing out.</td></tr><tr><td><code class="literal">emulate little endian</code></td><td>yes/no</td><td>yes</td><td>Forces big endian machines (Sparc, PPC, PARISC, MIPS) to act as little endian to communicate with server. - Ignored, always use little endian at protocol level.</td></tr><tr><td><a id="clientcharset"></a><code class="literal">client charset</code></td><td>any valid iconv character set</td><td>ISO-8859-1<a href="#ftn.idm69016816" class="footnote" id="idm69016816"><sup class="footnote">[a]</sup></a></td><td>Makes <span class="productname">FreeTDS</span> use iconv to convert to and from the specified character set from UCS-2 in <acronym class="acronym">TDS</acronym> 7.0 or above. + Ignored, always use little endian at protocol level.</td></tr><tr><td><a id="clientcharset"></a><code class="literal">client charset</code></td><td>any valid iconv character set</td><td>ISO-8859-1<a href="#ftn.idm69397744" class="footnote" id="idm69397744"><sup class="footnote">[a]</sup></a></td><td>Makes <span class="productname">FreeTDS</span> use iconv to convert to and from the specified character set from UCS-2 in <acronym class="acronym">TDS</acronym> 7.0 or above. <span class="productname">FreeTDS</span> uses iconv to convert all character data, so there's no need to match the server's charset to insert any characters the server supports.</td></tr><tr><td><code class="literal">text size</code></td><td>0 to 4,294,967,295</td><td>4,294,967,295</td><td>default value of TEXTSIZE, in bytes. For <span class="type">text</span> and <span class="type">image</span> datatypes, sets the maximum width of any returned column. Cf. <span class="command"><strong>set TEXTSIZE</strong></span> in the <acronym class="acronym">T-SQL</acronym> documentation for your server. </td></tr><tr><td><code class="literal">debug flags</code></td><td>Any number even in hex or octal notation</td><td>0x4fff</td><td>Sets granularity of logging. A bitmask. See table below for specification.</td></tr><tr><td><code class="literal">encryption</code></td><td>off/request/require</td><td>request (if tds version > 7.1 otherwise off)</td><td>Specify if encryption is desired. Supported for Microsoft servers. <span class="symbol">off</span> disables encryption; <span class="symbol">request</span> means use if available; <span class="symbol">require</span> means create and allow encrypted connections only.</td></tr><tr><td><code class="literal">enable gssapi delegation</code></td><td>on/off</td><td>off</td><td>Enable delegation flag using Kerberos.</td></tr><tr><td><code class="literal">realm</code></td><td>any</td><td>default Kerberos realm</td><td>Specify Kerberos realm.</td></tr><tr><td><code class="literal">SPN</code></td><td>any</td><td>MSSQLSvc/fqdn:port</td><td>Specify Kerberos SPN.</td></tr><tr><td><code class="literal">mutual authentication</code></td><td>on/off</td><td>off</td><td>Enable mutual authentication flag using Kerberos. Always enabled for TDS 7.0 or above.</td></tr><tr><td><code class="literal">use ntlmv2</code></td><td>yes/no</td><td>yes</td><td>Use NTLMv2. An alternative to the <code class="literal">UseNTLMv2</code> option in <code class="filename">odbc.ini</code>. </td></tr><tr><td><code class="literal">use lanman</code></td><td>yes/no</td><td>no</td><td>Use LAN MANAGER for NTLM. This is a very old encryption. Should not be enabled unless you have a really old server.</td></tr><tr><td><code class="literal">use utf-16</code></td><td>yes/no</td><td>no</td><td>Instead of using UCS-2 for database wide character encoding use UTF-16. Newer Windows versions use this encoding instead of UCS-2. This could result in some issues if clients assume that a character is always 2 bytes.</td></tr><tr><td><code class="literal">ca file</code></td><td>any filename or <code class="literal">system</code></td><td>none</td><td>File that hold root certificates (in PEM format) to verify server certificate, u sed during an encrypted connection. If not specify or empty any certificate will be accepted from server. @@ -41,4 +41,4 @@ </td></tr><tr><td><code class="literal">check certificate hostname</code></td><td>yes/no</td><td>yes</td><td>Check is the hostname is valid in the certificate. Only used if <code class="literal">ca file</code> is also specified. </td></tr><tr><td><code class="literal">read-only intent</code></td><td>yes/no</td><td>no</td><td>Tell server we only intent to do read-only queries. This is supported from MSSQL 2012. -</td></tr><tr><td><code class="literal">enable tls v1</code></td><td>yes/no</td><td>yes</td><td>Enable or disable TLS version 1.0. Useful to increase security. Not too recent Windows version (like Windows 2008) does not enable higher versions by default so be aware.</td></tr></tbody><tbody class="footnotes"><tr><td colspan="4"><div id="ftn.idm69016816" class="footnote"><p><a href="#idm69016816" class="para"><sup class="para">[a] </sup></a>Valid for ISO 8859-1 character set. See <a class="link" href="Localization.html" title="Localization and TDS 7.0">Localization and <acronym class="acronym">TDS</acronym> 7.0</a> for more information.</p></div></td></tr></tbody></table></div></div><br class="table-break" /><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69060080"></a>Overrides</h4></div></div></div><p>Many settings in <code class="filename">freetds.conf</code> can be overridden by <a class="link" href="envvar.html" title="Environment variables">envir onment variables</a>.</p><p>The servername can also be decorated adding the port or instance name using <a class="link" href="PortOverride.html" title="Port/instance override syntax">port override syntax</a>.</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69065200"></a>Controlling log details</h4></div></div></div><div class="abstract"><p class="title"><strong>Abstract</strong></p><p>The logging capability has helped solve innumerable cases, some trivial and some very low-level bugs. Sometimes a developer needs very detailed information about one function, whereas someone else may interested only in whether or not a particular function is called, or even want to see only the SQL that was transmitted to the server.</p></div><p>The log's granularity can be controlled with the <code class="literal">debug flags</code> entry. The default value (<code class="literal">4FFF</code> hex) gives a level of detail that is useful for resolving problems v ia the mailing list.</p><div class="table"><a id="tab.freetds.conf.debugflags"></a><p class="title"><strong>Table��3.4.��Valid bitmask values for <code class="literal">debug flags</code> entry in <code class="filename">freetds.conf</code></strong></p><div class="table-contents"><table class="table" summary="Valid bitmask values for debug flags entry in freetds.conf" border="1"><colgroup><col /><col /></colgroup><thead><tr><th>Value</th><th>Meaning</th></tr></thead><tbody><tr><td>0x80</td><td>function trace and info</td></tr><tr><td>0x40</td><td>information level 2</td></tr><tr><td>0x20</td><td>information level 1</td></tr><tr><td>0x10</td><td>network</td></tr><tr><td>0x08</td><td>warning</td></tr><tr><td>0x04</td><td>error</td></tr><tr><td>0x02</td><td>severe error</td></tr><tr><td>0x1000</td><td>show pid</td></tr><tr><td>0x2000</td><td>show time</td></tr><tr><td>0x4000</td><td>show source level info (source file and line)</td></tr><tr><td>0x8000</td><td>thread id (not implemented)< /td></tr></tbody></table></div></div><br class="table-break" /><p>For more about the wonderful world of <span class="productname">FreeTDS</span> logs, see <a class="link" href="logging.html" title="Logging">Logging</a>.</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69089136"></a>Deprecated options</h4></div></div></div><p>The following options have long been deprecated.</p><div class="itemizedlist"><a id="lst.freetds.conf.deprecated"></a><p class="title"><strong>Deprecated <code class="filename">freetds.conf</code> settings</strong></p><ul class="itemizedlist compact" style="list-style-type: disc; "><li class="listitem"><p><span class="symbol">try server login</span></p></li><li class="listitem"><p><span class="symbol">try domain login </span></p></li><li class="listitem"><p><span class="symbol">nt domain </span></p></li><li class="listitem"><p><span class="symbol">cross domain login </span></p></li><li class="listitem"><p><span class="symb ol">debug level </span></p></li></ul></div></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm68882416" class="footnote"><p><a href="#idm68882416" class="para"><sup class="para">[7] </sup></a>In general, the servername is arbitrary and local; it's used only by your client programs to tell <span class="productname">FreeTDS</span> which server to connect to. You can choose any name you like.</p><p><span class="productname">Sybase SQL Anywhere</span> (a/k/a Sybase ASA), however, is fussy. Unless you use the <a class="link" href="freetdsconf.html#asa.database">ASA Database</a> property, you must use the database's name as your servername. Otherwise, the server will refuse your connection.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="name.lookup.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" hre f="install.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="locales.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><em class="replaceable"><code>servername</code></em> Lookup��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��The <code class="filename">locales.conf</code> file</td></tr></table></div></body></html> \ No newline at end of file +</td></tr><tr><td><code class="literal">enable tls v1</code></td><td>yes/no</td><td>yes</td><td>Enable or disable TLS version 1.0. Useful to increase security. Not too recent Windows version (like Windows 2008) does not enable higher versions by default so be aware.</td></tr></tbody><tbody class="footnotes"><tr><td colspan="4"><div id="ftn.idm69397744" class="footnote"><p><a href="#idm69397744" class="para"><sup class="para">[a] </sup></a>Valid for ISO 8859-1 character set. See <a class="link" href="Localization.html" title="Localization and TDS 7.0">Localization and <acronym class="acronym">TDS</acronym> 7.0</a> for more information.</p></div></td></tr></tbody></table></div></div><br class="table-break" /><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69441008"></a>Overrides</h4></div></div></div><p>Many settings in <code class="filename">freetds.conf</code> can be overridden by <a class="link" href="envvar.html" title="Environment variables">envir onment variables</a>.</p><p>The servername can also be decorated adding the port or instance name using <a class="link" href="PortOverride.html" title="Port/instance override syntax">port override syntax</a>.</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69446128"></a>Controlling log details</h4></div></div></div><div class="abstract"><p class="title"><strong>Abstract</strong></p><p>The logging capability has helped solve innumerable cases, some trivial and some very low-level bugs. Sometimes a developer needs very detailed information about one function, whereas someone else may interested only in whether or not a particular function is called, or even want to see only the SQL that was transmitted to the server.</p></div><p>The log's granularity can be controlled with the <code class="literal">debug flags</code> entry. The default value (<code class="literal">4FFF</code> hex) gives a level of detail that is useful for resolving problems v ia the mailing list.</p><div class="table"><a id="tab.freetds.conf.debugflags"></a><p class="title"><strong>Table��3.4.��Valid bitmask values for <code class="literal">debug flags</code> entry in <code class="filename">freetds.conf</code></strong></p><div class="table-contents"><table class="table" summary="Valid bitmask values for debug flags entry in freetds.conf" border="1"><colgroup><col /><col /></colgroup><thead><tr><th>Value</th><th>Meaning</th></tr></thead><tbody><tr><td>0x80</td><td>function trace and info</td></tr><tr><td>0x40</td><td>information level 2</td></tr><tr><td>0x20</td><td>information level 1</td></tr><tr><td>0x10</td><td>network</td></tr><tr><td>0x08</td><td>warning</td></tr><tr><td>0x04</td><td>error</td></tr><tr><td>0x02</td><td>severe error</td></tr><tr><td>0x1000</td><td>show pid</td></tr><tr><td>0x2000</td><td>show time</td></tr><tr><td>0x4000</td><td>show source level info (source file and line)</td></tr><tr><td>0x8000</td><td>thread id (not implemented)< /td></tr></tbody></table></div></div><br class="table-break" /><p>For more about the wonderful world of <span class="productname">FreeTDS</span> logs, see <a class="link" href="logging.html" title="Logging">Logging</a>.</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69470064"></a>Deprecated options</h4></div></div></div><p>The following options have long been deprecated.</p><div class="itemizedlist"><a id="lst.freetds.conf.deprecated"></a><p class="title"><strong>Deprecated <code class="filename">freetds.conf</code> settings</strong></p><ul class="itemizedlist compact" style="list-style-type: disc; "><li class="listitem"><p><span class="symbol">try server login</span></p></li><li class="listitem"><p><span class="symbol">try domain login </span></p></li><li class="listitem"><p><span class="symbol">nt domain </span></p></li><li class="listitem"><p><span class="symbol">cross domain login </span></p></li><li class="listitem"><p><span class="symb ol">debug level </span></p></li></ul></div></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69259248" class="footnote"><p><a href="#idm69259248" class="para"><sup class="para">[7] </sup></a>In general, the servername is arbitrary and local; it's used only by your client programs to tell <span class="productname">FreeTDS</span> which server to connect to. You can choose any name you like.</p><p><span class="productname">Sybase SQL Anywhere</span> (a/k/a Sybase ASA), however, is fussy. Unless you use the <a class="link" href="freetdsconf.html#asa.database">ASA Database</a> property, you must use the database's name as your servername. Otherwise, the server will refuse your connection.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="name.lookup.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" hre f="install.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="locales.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><em class="replaceable"><code>servername</code></em> Lookup��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��The <code class="filename">locales.conf</code> file</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/index.html new/freetds-1.3.16/doc/userguide/index.html --- old/freetds-1.3.15/doc/userguide/index.html 2022-11-22 10:01:43.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/index.html 2022-12-09 10:01:41.000000000 +0100 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>FreeTDS User Guide</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="next" href="about.html" title="About this User Guide" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="productname">FreeTDS</span> User Guide</th></tr><tr><td width="20%" align="left">��</td><th width="60%" align="center">��</th><td width="20%" align="right">��<a accesskey="n" href="about.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="idm68311280"></a><span cla ss="productname">FreeTDS<br /></span> User Guide</h1></div><div><h2 class="subtitle">A Guide to Installing, Configuring, and Running <span class="productname">FreeTDS<br /></span></h2></div><div><div class="author"><h3 class="author"><span class="firstname">Brian</span> <span class="surname">Bruns</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">James</span> <span class="othername">K.</span> <span class="surname">Lowden</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Frediano</span> <span class="surname">Ziglio</span></h3></div></div><div><p class="copyright">Copyright �� 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Brian Bruns and James K. Lowden</p></div><div><p class="copyright">Copyright �� 2015, 2016, 2017, 2018, 2019 Frediano Ziglio</p></div><div><div class="legalnotice"><a id="idm68341872"></a><p>Permission is granted to copy, distribute and/or modify this document +<!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/html; charset=UTF-8" /><title>FreeTDS User Guide</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="next" href="about.html" title="About this User Guide" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="productname">FreeTDS</span> User Guide</th></tr><tr><td width="20%" align="left">��</td><th width="60%" align="center">��</th><td width="20%" align="right">��<a accesskey="n" href="about.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="idm67971312"></a><span cla ss="productname">FreeTDS<br /></span> User Guide</h1></div><div><h2 class="subtitle">A Guide to Installing, Configuring, and Running <span class="productname">FreeTDS<br /></span></h2></div><div><div class="author"><h3 class="author"><span class="firstname">Brian</span> <span class="surname">Bruns</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">James</span> <span class="othername">K.</span> <span class="surname">Lowden</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Frediano</span> <span class="surname">Ziglio</span></h3></div></div><div><p class="copyright">Copyright �� 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Brian Bruns and James K. Lowden</p></div><div><p class="copyright">Copyright �� 2015, 2016, 2017, 2018, 2019 Frediano Ziglio</p></div><div><div class="legalnotice"><a id="idm65032304"></a><p>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no @@ -7,4 +7,4 @@ A copy of the license is included in the section entitled <a class="link" href="gfdl.html" title="Appendix��D.��GNU Free Documentation License">GNU Free Documentation License</a>.</p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="preface"><a href="about.html">About this User Guide</a></span></dt><dt><span class="chapter"><a href="what.html">1. What is <span class="productname">FreeTDS</span>?</a></span></dt><dd><dl><dt><span class="sect1"><a href="what.html#tdsprotocolhist">Background: The <acronym class="acronym">TDS</acronym> Protocol and related <acronym class="acronym">API</acronym>s - </a></span></dt><dt><span class="sect1"><a href="tdshistory.html">History of <acronym class="acronym">TDS</acronym> Versions</a></span></dt><dt><span class="sect1"><a href="FreeTDShistory.html">History of <span class="productname">FreeTDS</span></a></span></dt><dt><span class="sect1"><a href="projects.html">Current Projects, Language Bindings, and Alternatives</a></span></dt><dd><dl><dt><span class="sect2"><a href="projects.html#Current">Current Projects</a></span></dt><dt><span class="sect2"><a href="projects.html#Status">Status</a></span></dt><dt><span class="sect2"><a href="projects.html#Languages">Languages besides C</a></span></dt><dt><span class="sect2"><a href="projects.html#alternatives">Alternatives</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="build.html">2. Build <span class="productname">FreeTDS</span></a></span></dt><dd><dl><dt><span class="sect1"><a href="build.html#gnu">The <acronym class="acronym">GNU</acronym> World</a></span></dt><dt><spa n class="sect1"><a href="packages.html">What to build: Packages, Tarballs, and the <span class="productname">git</span> repository</a></span></dt><dt><span class="sect1"><a href="config.html">How to build: Configure and make</a></span></dt><dd><dl><dt><span class="sect2"><a href="config.html#Experts">For Experts</a></span></dt><dt><span class="sect2"><a href="config.html#Everyone">(<span class="productname">FreeTDS</span> for Dummies?)</a></span></dt></dl></dd><dt><span class="sect1"><a href="osissues.html">OS-specific Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="osissues.html#Windows">Win32 and Win64</a></span></dt><dt><span class="sect2"><a href="osissues.html#VMS">VMS��</a></span></dt><dt><span class="sect2"><a href="osissues.html#osx">OS X��</a></span></dt><dt><span class="sect2"><a href="osissues.html#AIX">AIX��</a></span></dt><dt><span class="sect2"><a href="osissues.html#RPM">GNU/Linux distributions that use RPMs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="install.html">3. Install <span class="productname">FreeTDS</span></a></span></dt><dd><dl><dt><span class="sect1"><a href="install.html#LocalEnvironment">The local environment</a></span></dt><dt><span class="sect1"><a href="ChoosingTdsProtocol.html">Choosing a <acronym class="acronym">TDS</acronym> protocol version</a></span></dt><dd><dl><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm68823408">Choosing protocol version since <span class="productname">FreeTDS</span> 1.1</a></span></dt><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm68828784">Choosing protocol version before <span class="productname">FreeTDS</span> 1.1</a></span></dt><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm68856944">Regarding obsolete versions</a></span></dt></dl></dd><dt><span class="sect1"><a href="name.lookup.html"><em class="replaceable"><code>servername</code></em> Lookup</a></span></dt><dt><span class="sect1"><a href="freetdsconf.html">The < code class="filename">freetds.conf</code> file</a></span></dt><dd><dl><dt><span class="sect2"><a href="freetdsconf.html#freetdsconfpurpose">What it does</a></span></dt><dt><span class="sect2"><a href="freetdsconf.html#freetdsconflocation">Where it goes</a></span></dt><dt><span class="sect2"><a href="freetdsconf.html#freetdsconfformat">What it looks like</a></span></dt></dl></dd><dt><span class="sect1"><a href="locales.html">The <code class="filename">locales.conf</code> file</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#localespurpose">What it does</a></span></dt><dt><span class="sect2"><a href="locales.html#localeslocation">Where it goes</a></span></dt><dt><span class="sect2"><a href="locales.html#localesformat">What it looks like</a></span></dt></dl></dd><dt><span class="sect1"><a href="envvar.html">Environment variables</a></span></dt><dd><dl><dt><span class="sect2"><a href="envvar.html#Whatfor">What they're for</a></span></dt><dt><span class="sect2"><a hre f="envvar.html#Setting">Setting environment variables</a></span></dt><dt><span class="sect2"><a href="envvar.html#Checking">Checking your work</a></span></dt></dl></dd><dt><span class="sect1"><a href="PortOverride.html">Port/instance override syntax</a></span></dt><dt><span class="sect1"><a href="ConfirmInstall.html">Confirm the installation</a></span></dt><dd><dl><dt><span class="sect2"><a href="ConfirmInstall.html#tsql"><span class="application">tsql</span></a></span></dt><dt><span class="sect2"><a href="ConfirmInstall.html#Tests"><span class="application">Unit Tests</span></a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="prepodbc.html">4. Preparing ODBC</a></span></dt><dd><dl><dt><span class="sect1"><a href="prepodbc.html#OdbcBackground">Background and Terminology</a></span></dt><dt><span class="sect1"><a href="OdbcConnAttr.html">Connection attributes</a></span></dt><dt><span class="sect1"><a href="dsnless.html">DSN-less configuration</a></span></dt><dt><span class="sect1"><a href="odbcinionly.html">ODBC-only configuration</a></span></dt><dt><span class="sect1"><a href="odbcombo.html">ODBC-combined configuration</a></span></dt><dt><span class="sect1"><a href="odbcdiagnose.html">Troubleshooting ODBC connections</a></span></dt><dd><dl><dt><span class="sect2"><a href="odbcdiagnose.html#with.iodbc">With iODBC</a></span></dt><dt><span class="sect2"><a href="odbcdiagnose.html#with.unixODBC">With unixODBC</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="configs.html">5. Advanced Configurations</a></span></dt><dd><dl><dt><span class="sect1"><a href="configs.html#emulle">Big Endian Clients with Buggy <span class="productname">Microsoft SQL Server</span>s</a></span></dt><dt><span class="sect1"><a href="Localization.html">Localization and <acronym class="acronym">TDS</acronym> 7.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="Localization.html#localization.servernote">Microsoft Server Note</a></span></dt></dl></dd><d t><span class="sect1"><a href="domains.html">Domain Logins</a></span></dt><dd><dl><dt><span class="sect2"><a href="domains.html#domaindetails">Implementation details</a></span></dt></dl></dd><dt><span class="sect1"><a href="kerberos.html">Kerberos Support</a></span></dt><dt><span class="sect1"><a href="uothread.html">Threading in unixODBC</a></span></dt><dt><span class="sect1"><a href="appendmode.html">Appending Dump Files</a></span></dt><dt><span class="sect1"><a href="tdspool.html">TDS Connection Pooling</a></span></dt><dt><span class="sect1"><a href="stunnel.html">stunnel HOWTO</a></span></dt></dl></dd><dt><span class="chapter"><a href="usefreetds.html">6. Use <span class="productname">FreeTDS</span> </a></span></dt><dd><dl><dt><span class="sect1"><a href="usefreetds.html#utilities"><span class="productname">FreeTDS</span> Utilities</a></span></dt></dl></dd><dt><span class="chapter"><a href="software.html">7. How to get what works with it working</a></span></dt><dd><dl><dt><span class="sect1"><a href="software.html#sqsh"><span class="application">SQSH</span></a></span></dt><dt><span class="sect1"><a href="perl.html">Perl</a></span></dt><dd><dl><dt><span class="sect2"><a href="perl.html#DBD.ODBC">DBD::ODBC</a></span></dt><dt><span class="sect2"><a href="perl.html#DBD.Sybase">DBD::Sybase</a></span></dt><dt><span class="sect2"><a href="perl.html#Sybperl">Sybperl</a></span></dt><dt><span class="sect2"><a href="perl.html#Perlmodules">Building and using the Perl modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="php.html">PHP</a></span></dt><dd><dl><dt><span class="sect2"><a href="php.html#phpDblib"><code class="systemitem">DB-Library</code></a></span></dt><dt><span class="sect2"><a href="php.html#ctlib"><code class="systemitem">CT-Library</code></a></span></dt><dt><span class="sect2"><a href="php.html#ODBC"><code class="systemitem">ODBC</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="Python.html">Python</a></span></dt><dd><dl><dt> <span class="sect2"><a href="Python.html#pymssql">pymssql</a></span></dt><dt><span class="sect2"><a href="Python.html#Sybase.Python.Module">Sybase module</a></span></dt></dl></dd><dt><span class="sect1"><a href="qt.html">Qt</a></span></dt><dt><span class="sect1"><a href="uodbc.html">ODBC on Unix</a></span></dt><dd><dl><dt><span class="sect2"><a href="uodbc.html#uodbc.64">ODBC and 64-bit</a></span></dt><dt><span class="sect2"><a href="uodbc.html#uodbc.wchar">sizeof(SQLWCHAR)</a></span></dt><dt><span class="sect2"><a href="uodbc.html#uodbc.char">Default charset</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="troubleshooting.html">8. Troubleshooting</a></span></dt><dd><dl><dt><span class="sect1"><a href="troubleshooting.html#knownissues">Known Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="troubleshooting.html#known.porting">Porting Issues</a></span></dt><dt><span class="sect2"><a href="troubleshooting.html#Textfields"><span class="type">Text</span > Fields</a></span></dt><dt><span class="sect2"><a href="troubleshooting.html#Endianism">Endianism</a></span></dt><dt><span class="sect2"><a href="troubleshooting.html#Datetime"><span class="type">Datetime</span> and <span class="type">Money</span></a></span></dt><dt><span class="sect2"><a href="troubleshooting.html#IntegratedSecurity">Microsoft's <span class="quote">���<span class="quote">Integrated Security</span>���</span></a></span></dt></dl></dd><dt><span class="sect1"><a href="serverthere.html">Is the server there?</a></span></dt><dd><dl><dt><span class="sect2"><a href="serverthere.html#serverthere.ping">Start with <span class="command"><strong>ping</strong></span></a></span></dt><dt><span class="sect2"><a href="serverthere.html#serverthere.telnet">Test with <span class="command"><strong>telnet</strong></span></a></span></dt><dt><span class="sect2"><a href="serverthere.html#serverthere.tsql">Test with <span class="command"><strong>tsql</strong></span></a></span></dt></dl></dd> <dt><span class="sect1"><a href="logging.html">Logging</a></span></dt><dd><dl><dt><span class="sect2"><a href="logging.html#Environment">Environment Variables that Control Logging</a></span></dt><dt><span class="sect2"><a href="logging.html#Logging.freetds.conf"><code class="filename">freetds.conf</code> variables that Control Logging</a></span></dt><dt><span class="sect2"><a href="logging.html#Logging.odbc">Logging in ODBC land</a></span></dt></dl></dd><dt><span class="sect1"><a href="pagenodata.html">"Page contains no data"</a></span></dt><dt><span class="sect1"><a href="seemtooslow.html">Slow connection or data retrieval</a></span></dt></dl></dd><dt><span class="chapter"><a href="help.html">9. Getting Help</a></span></dt><dd><dl><dt><span class="sect1"><a href="help.html#reconfirm.installation">Reconfirm the installation</a></span></dt><dt><span class="sect1"><a href="IsolateCause.html">Isolate the cause</a></span></dt><dd><dl><dt><span class="sect2"><a href="IsolateCause.html#he lp.otherclient">Try a different client</a></span></dt><dt><span class="sect2"><a href="IsolateCause.html#help.permissions">Check permissions</a></span></dt></dl></dd><dt><span class="sect1"><a href="mailinglist.html">The Mailing List</a></span></dt><dd><dl><dt><span class="sect2"><a href="mailinglist.html#Archive">The Archive</a></span></dt><dt><span class="sect2"><a href="mailinglist.html#Asklist">Ask the list</a></span></dt></dl></dd><dt><span class="sect1"><a href="askingforhelp.html">What to include when asking for help</a></span></dt><dd><dl><dt><span class="sect2"><a href="askingforhelp.html#Waddyagot">Waddya got?</a></span></dt><dt><span class="sect2"><a href="askingforhelp.html#help.log">Attach a logfile</a></span></dt><dt><span class="sect2"><a href="askingforhelp.html#ShowYourWork">Show your work</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="contrib.html">10. Helping</a></span></dt><dd><dl><dt><span class="sect1"><a href="contrib.html#Pickweakspot"> Pick a weak spot and fix it.</a></span></dt><dd><dl><dt><span class="sect2"><a href="contrib.html#Sendpatch">Send a patch</a></span></dt><dt><span class="sect2"><a href="contrib.html#Correct">Correct this User Guide</a></span></dt><dt><span class="sect2"><a href="contrib.html#Documentapi">Document an <acronym class="acronym">API</acronym></a></span></dt><dt><span class="sect2"><a href="contrib.html#webmaster">Be the Webmaster</a></span></dt></dl></dd><dt><span class="sect1"><a href="Light.taper.html">Light another's taper</a></span></dt><dt><span class="sect1"><a href="Ambition.html">Ambitious ideas</a></span></dt><dd><dl><dt><span class="sect2"><a href="Ambition.html#idm70296816"><code class="literal">libtds2</code></a></span></dt><dt><span class="sect2"><a href="Ambition.html#idm70302320"><code class="literal">libstddb</code></a></span></dt><dt><span class="sect2"><a href="Ambition.html#idm70300400">Server code </a></span></dt></dl></dd><dt><span class="sect1"><a href="Advocacy.ht ml">Advocacy</a></span></dt></dl></dd><dt><span class="chapter"><a href="programming.html">11. Programming</a></span></dt><dd><dl><dt><span class="sect1"><a href="programming.html#TDSprotocolref">TDS protocol reference</a></span></dt><dt><span class="sect1"><a href="apireference.html">API Reference Manual</a></span></dt><dt><span class="sect1"><a href="dblib.api.summary.html"><code class="systemitem">DB-Library</code> API Implementation Summary</a></span></dt><dt><span class="sect1"><a href="ctlib.api.summary.html">ct-lib API Implementation Summary</a></span></dt><dt><span class="sect1"><a href="odbc.api.summary.html">ODBC API Implementation Summary</a></span></dt><dt><span class="sect1"><a href="samplecode.html">DB-Library for the Tenderfoot</a></span></dt><dd><dl><dt><span class="sect2"><a href="samplecode.html#samplecode.include">Header files</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.prolog">Prolog</a></span></dt><dt><span class="sect2"><a href="s amplecode.html#samplecode.init">Initialize</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.connect">Connect to the server</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.query">Send a query</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.results">Fetch Results</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.errors">Messages and Errors</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.wrapup">Last Remarks</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="acknowledgments.html">12. Acknowledgments</a></span></dt><dd><dl><dt><span class="sect1"><a href="acknowledgments.html#Codesmyths">Codesmyths</a></span></dt><dt><span class="sect1"><a href="Contributors.html">Contributors</a></span></dt></dl></dd><dt><span class="appendix"><a href="rtl.html">A. On Linkers</a></span></dt><dd><dl><dt><span class="section"><a href="rtl.html#rtl.define.f unction">What is a C function?</a></span></dt><dt><span class="section"><a href="rtl.define.library.html">What is a C library?</a></span></dt><dd><dl><dt><span class="section"><a href="rtl.define.library.html#rtl.define.library.static">Static libraries</a></span></dt><dt><span class="section"><a href="rtl.define.library.html#rtl.define.library.dynamic">Dynamic libraries</a></span></dt></dl></dd><dt><span class="section"><a href="linker.library.check.html">Checking if a Library Provides a Function</a></span></dt><dt><span class="section"><a href="linker.how.html">How Dost Thy Linker Link? </a></span></dt><dd><dl><dt><span class="section"><a href="linker.how.html#idm72188272">Static Linker</a></span></dt><dt><span class="section"><a href="linker.how.html#linker.dynamic">Dynamic Linker</a></span></dt></dl></dd><dt><span class="section"><a href="linker.conclusion.html">Keep in Mind</a></span></dt></dl></dd><dt><span class="appendix"><a href="interfacesfile.html">B. The <code class="file name">interfaces</code> File</a></span></dt><dd><dl><dt><span class="sect1"><a href="interfacesfile.html#interfacesorigin">Where it came from</a></span></dt><dt><span class="sect1"><a href="interfaceslocation.html">Where it goes</a></span></dt><dt><span class="sect1"><a href="interfacespurpose.html">What it does</a></span></dt><dt><span class="sect1"><a href="interfacesformat.html">What it looks like</a></span></dt></dl></dd><dt><span class="appendix"><a href="AboutUnicode.html">C. About Unicode, UCS-2, and UTF-8</a></span></dt><dd><dl><dt><span class="section"><a href="AboutUnicode.html#ascii"><acronym class="acronym">ASCII</acronym>: What everyone knows</a></span></dt><dd><dl><dt><span class="section"><a href="AboutUnicode.html#ASCIICompact">The <acronym class="acronym">ASCII</acronym> Compact</a></span></dt></dl></dd><dt><span class="section"><a href="ISO8859.html">ISO 8859: What everyone would like to forget</a></span></dt><dt><span class="section"><a href="Unicode.html">Unicode : East meets West</a></span></dt><dt><span class="section"><a href="Unicodegoodbad.html">Unicode's Pluses and Minuses</a></span></dt><dt><span class="section"><a href="UnicodeUtf.html">Unicode Transformation Format: UTF-8</a></span></dt><dt><span class="section"><a href="UnicodeFreeTDS.html">Unicode and <span class="productname">FreeTDS</span></a></span></dt><dd><dl><dt><span class="section"><a href="UnicodeFreeTDS.html#moreinfo">For further information</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="gfdl.html">D. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="sect1"><a href="gfdl.html#gfdl-0">PREAMBLE</a></span></dt><dt><span class="sect1"><a href="gfdl-1.html">APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="sect1"><a href="gfdl-2.html">VERBATIM COPYING</a></span></dt><dt><span class="sect1"><a href="gfdl-3.html">COPYING IN QUANTITY</a></span></dt><dt><span class="sect1"><a href="gfdl-4.html">MODIFICATIONS</a></span></dt> <dt><span class="sect1"><a href="gfdl-5.html">COMBINING DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="gfdl-6.html">COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="gfdl-7.html">AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="sect1"><a href="gfdl-8.html">TRANSLATION</a></span></dt><dt><span class="sect1"><a href="gfdl-9.html">TERMINATION</a></span></dt><dt><span class="sect1"><a href="gfdl-10.html">FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="sect1"><a href="gfdl-11.html">How to use this License for your documents</a></span></dt></dl></dd></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>3.1. <a href="ChoosingTdsProtocol.html#tab.Protocol.by.Product">Versions of the <acronym class="acronym">TDS</acronym> Protocol, by Product</a></dt><dt>3.2. <a href="ChoosingTdsProtocol.html#tab.Protocol.by.SQLServerProduct">What Version of the <acronym class="acronym">TDS</acronym> Protocol Should I use with Microsoft SQL Server?</a></dt><dt>3.3. <a href="freetdsconf.html#tab.freetds.conf"><code class="filename">freetds.conf</code> settings</a></dt><dt>3.4. <a href="freetdsconf.html#tab.freetds.conf.debugflags">Valid bitmask values for <code class="literal">debug flags</code> entry in <code class="filename">freetds.conf</code></a></dt><dt>4.1. <a href="OdbcConnAttr.html#tab.Connection.attributes.stringonly">Connection attributes used only in connection strings</a></dt><dt>4.2. <a href="OdbcConnAttr.html#tab.Connection.attributes.freetds.conf">Connection attributes that may appear in <code class="filename">odbc.ini</code></a></dt><dt>5.1. <a href="tdspool.html#tab.pool.conf">pool.conf settings</a></dt><dt>11.1. <a href="dblib.api.summary.html#dblib.api"><code class="systemitem">DB-Library</code> API Implementation Summary</a></dt><dt>11.2. <a href="ctlib.api.summary.html#ctlib.api"><code class="systemitem">CT-Library</code> API Implementation Summary</a></dt><dt>11.3. < a href="odbc.api.summary.html#odbc.api"><code class="systemitem">ODBC</code> API Implementation Summary</a></dt><dt>11.4. <a href="samplecode.html#tab.kinds.of.results">Kinds of Results</a></dt><dt>11.5. <a href="samplecode.html#tab.result.fetching.functions">Result-fetching functions</a></dt><dt>11.6. <a href="samplecode.html#tab.data.fetching.functions">Data-fetching functions</a></dt><dt>11.7. <a href="samplecode.html#tab.putting.it.all.together">Putting it all together </a></dt><dt>B.1. <a href="interfacesformat.html#tab.Services.Line">Services Line</a></dt></dl></div><div class="list-of-examples"><p><strong>List of Examples</strong></p><dl><dt>3.1. <a href="freetdsconf.html#e.g.freetdsconf">A <code class="filename">freetds.conf</code> file example</a></dt><dt>3.2. <a href="ConfirmInstall.html#e.g.tsqlShowsettings">Show compile-time settings with <span class="command">tsql</span></a></dt><dt>3.3. <a href="ConfirmInstall.html#e.g.notfound">Failure to find <em class="replaceable"> <code>servername</code></em> in <code class="filename">freetds.conf</code></a></dt><dt>3.4. <a href="ConfirmInstall.html#e.g.badname">Failure to resolve hostname for <em class="replaceable"><code>servername</code></em></a></dt><dt>3.5. <a href="ConfirmInstall.html#e.g.noconnect">Failing to connect with tsql</a></dt><dt>3.6. <a href="ConfirmInstall.html#e.g.instance.name">Getting instance information with tsql</a></dt><dt>3.7. <a href="ConfirmInstall.html#e.g.bad.tdsver">Using the wrong protocol for the server</a></dt><dt>3.8. <a href="ConfirmInstall.html#e.g.bad.login">Login failure</a></dt><dt>3.9. <a href="ConfirmInstall.html#e.g.tsqlhostname">Connect with <span class="command">tsql</span> using a hostname and port number</a></dt><dt>4.1. <a href="dsnless.html#e.g.SampleDSNless">Sample files for a DSN-less configuration</a></dt><dt>4.2. <a href="dsnless.html#e.g.ConnectDSNless">Connecting with a DSN-less configuration</a></dt><dt>4.3. <a href="dsnless.html#e.g.ConnectDSNlessnoconf ">Connecting with a DSN-less configuration that does not use <code class="filename">freetds.conf</code></a></dt><dt>4.4. <a href="odbcinionly.html#e.g.SampleODBConly">Sample ODBC-only <code class="filename">odbc.ini</code> file</a></dt><dt>4.5. <a href="odbcombo.html#e.g.SampleODBCcombo">Sample ODBC-combined <code class="filename">odbc.ini</code> file</a></dt><dt>4.6. <a href="odbcombo.html#e.g.samplecombofile">Sample ODBC-combined <code class="filename">freetds.conf</code> file</a></dt><dt>4.7. <a href="odbcdiagnose.html#e.g.odbctest.nodm">Compile <code class="filename">odbctest</code> without a driver manager.</a></dt><dt>4.8. <a href="odbcdiagnose.html#e.g.odbcdiagnose.osql">Use <span class="command">osql</span> to test the ODBC setup.</a></dt><dt>5.1. <a href="configs.html#e.g.LittleEndian">Emulate Little Endian <code class="filename">freetds.conf</code> setting</a></dt><dt>5.2. <a href="Localization.html#e.g.GREEK">Configuring for GREEK <code class="filename">freetds.conf</code > setting</a></dt><dt>5.3. <a href="Localization.html#e.g.UTF8">Configuring for <acronym class="acronym">UTF-8</acronym> <code class="filename">freetds.conf</code> setting</a></dt><dt>5.4. <a href="domains.html#e.g.domainlogin">Logging in with a domain login</a></dt><dt>5.5. <a href="uothread.html#odbcinstthread">Sample <code class="filename">odbcinst.ini</code> for threading model</a></dt><dt>5.6. <a href="uothread.html#odbcinithread">Sample <code class="filename">odbc.ini</code> for threading model</a></dt><dt>5.7. <a href="appendmode.html#e.g.DumpAppend">Turning on Dump File Append mode in <code class="filename">freetds.conf</code></a></dt><dt>5.8. <a href="tdspool.html#e.g.pool.conf">pool.conf</a></dt><dt>5.9. <a href="stunnel.html#e.g.Unencrypted">Unencrypted entry in <code class="filename">freetds.conf</code></a></dt><dt>5.10. <a href="stunnel.html#e.g.Encrypted">Encrypted entry in <code class="filename">freetds.conf</code></a></dt><dt>7.1. <a href="software.html#e.g.SQSHmake ">The <span class="application">SQSH</span> Makefile</a></dt><dt>7.2. <a href="perl.html#e.g.DBD.ODBC.build">Building <code class="systemitem">DBD::ODBC</code></a></dt><dt>7.3. <a href="perl.html#e.g.DBD.ODBC.connect">Connect to a server with <code class="systemitem">DBD::ODBC</code></a></dt><dt>7.4. <a href="perl.html#e.g.DBD.Sybase.build">Building <code class="systemitem">DBD::Sybase</code></a></dt><dt>7.5. <a href="perl.html#e.g.DBD.Sybase.Connect">Connect to a server with <code class="systemitem">DBD::Sybase</code></a></dt><dt>7.6. <a href="php.html#e.g.PHP.dblib">PHP and <code class="systemitem">DB-Library</code> for <span class="quote">���<span class="quote">Sybase</span>���</span></a></dt><dt>8.1. <a href="serverthere.html#e.g.troubleshooting.ping">Finding the server's host</a></dt><dt>8.2. <a href="serverthere.html#e.g.troubleshooting.telnet">Finding the server</a></dt><dt>8.3. <a href="serverthere.html#e.g.troubleshooting.tsql.noconf">Connecting to the server, bypassing <co de class="filename">freetds.conf</code></a></dt><dt>8.4. <a href="serverthere.html#e.g.troubleshooting.tsql">Connecting to the server using <code class="filename">freetds.conf</code></a></dt><dt>11.1. <a href="samplecode.html#idm71758320">Building the Sample Code</a></dt><dt>11.2. <a href="samplecode.html#e.g.samplecode.dblib.include">Sample Code: <code class="systemitem">DB-Library</code> header files</a></dt><dt>11.3. <a href="samplecode.html#e.g.samplecode.dblib.prolog">Sample Code: <code class="systemitem">DB-Library</code> prolog</a></dt><dt>11.4. <a href="samplecode.html#e.g.samplecode.dblib.Initialize">Sample Code: <code class="systemitem">DB-Library</code> Initialize</a></dt><dt>11.5. <a href="samplecode.html#e.g.samplecode.dblib.Connect">Sample Code: <code class="systemitem">DB-Library</code> Connect to the server</a></dt><dt>11.6. <a href="samplecode.html#e.g.samplecode.dblib.send">Sample Code: <code class="systemitem">DB-Library</code> Send a query</a></dt><dt>11.7. <a hr ef="samplecode.html#e.g.samplecode.dblib.fetch">Sample Code: <code class="systemitem">DB-Library</code> Fetch Results</a></dt><dt>11.8. <a href="samplecode.html#e.g.samplecode.dblib.errors">Sample Code: <code class="systemitem">DB-Library</code> Error and Message handlers</a></dt><dt>A.1. <a href="linker.how.html#idm72196848">Missing library name</a></dt><dt>A.2. <a href="linker.how.html#idm72229104">Library not found</a></dt><dt>B.1. <a href="interfacesformat.html#e.g.interfacesfile">An <code class="filename">interfaces</code> file example</a></dt><dt>C.1. <a href="UnicodeUtf.html#e.g.HELLO"><span class="quote">���<span class="quote">HELLO</span>���</span> in UCS-2 and UTF-8</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="about.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">� �</td><td width="20%" align="center">��</td><td width="40%" align="right" valign="top">��About this User Guide</td></tr></table></div></body></html> \ No newline at end of file + </a></span></dt><dt><span class="sect1"><a href="tdshistory.html">History of <acronym class="acronym">TDS</acronym> Versions</a></span></dt><dt><span class="sect1"><a href="FreeTDShistory.html">History of <span class="productname">FreeTDS</span></a></span></dt><dt><span class="sect1"><a href="projects.html">Current Projects, Language Bindings, and Alternatives</a></span></dt><dd><dl><dt><span class="sect2"><a href="projects.html#Current">Current Projects</a></span></dt><dt><span class="sect2"><a href="projects.html#Status">Status</a></span></dt><dt><span class="sect2"><a href="projects.html#Languages">Languages besides C</a></span></dt><dt><span class="sect2"><a href="projects.html#alternatives">Alternatives</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="build.html">2. Build <span class="productname">FreeTDS</span></a></span></dt><dd><dl><dt><span class="sect1"><a href="build.html#gnu">The <acronym class="acronym">GNU</acronym> World</a></span></dt><dt><spa n class="sect1"><a href="packages.html">What to build: Packages, Tarballs, and the <span class="productname">git</span> repository</a></span></dt><dt><span class="sect1"><a href="config.html">How to build: Configure and make</a></span></dt><dd><dl><dt><span class="sect2"><a href="config.html#Experts">For Experts</a></span></dt><dt><span class="sect2"><a href="config.html#Everyone">(<span class="productname">FreeTDS</span> for Dummies?)</a></span></dt></dl></dd><dt><span class="sect1"><a href="osissues.html">OS-specific Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="osissues.html#Windows">Win32 and Win64</a></span></dt><dt><span class="sect2"><a href="osissues.html#VMS">VMS��</a></span></dt><dt><span class="sect2"><a href="osissues.html#osx">OS X��</a></span></dt><dt><span class="sect2"><a href="osissues.html#AIX">AIX��</a></span></dt><dt><span class="sect2"><a href="osissues.html#RPM">GNU/Linux distributions that use RPMs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="install.html">3. Install <span class="productname">FreeTDS</span></a></span></dt><dd><dl><dt><span class="sect1"><a href="install.html#LocalEnvironment">The local environment</a></span></dt><dt><span class="sect1"><a href="ChoosingTdsProtocol.html">Choosing a <acronym class="acronym">TDS</acronym> protocol version</a></span></dt><dd><dl><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm69200240">Choosing protocol version since <span class="productname">FreeTDS</span> 1.1</a></span></dt><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm69205616">Choosing protocol version before <span class="productname">FreeTDS</span> 1.1</a></span></dt><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm69233776">Regarding obsolete versions</a></span></dt></dl></dd><dt><span class="sect1"><a href="name.lookup.html"><em class="replaceable"><code>servername</code></em> Lookup</a></span></dt><dt><span class="sect1"><a href="freetdsconf.html">The < code class="filename">freetds.conf</code> file</a></span></dt><dd><dl><dt><span class="sect2"><a href="freetdsconf.html#freetdsconfpurpose">What it does</a></span></dt><dt><span class="sect2"><a href="freetdsconf.html#freetdsconflocation">Where it goes</a></span></dt><dt><span class="sect2"><a href="freetdsconf.html#freetdsconfformat">What it looks like</a></span></dt></dl></dd><dt><span class="sect1"><a href="locales.html">The <code class="filename">locales.conf</code> file</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#localespurpose">What it does</a></span></dt><dt><span class="sect2"><a href="locales.html#localeslocation">Where it goes</a></span></dt><dt><span class="sect2"><a href="locales.html#localesformat">What it looks like</a></span></dt></dl></dd><dt><span class="sect1"><a href="envvar.html">Environment variables</a></span></dt><dd><dl><dt><span class="sect2"><a href="envvar.html#Whatfor">What they're for</a></span></dt><dt><span class="sect2"><a hre f="envvar.html#Setting">Setting environment variables</a></span></dt><dt><span class="sect2"><a href="envvar.html#Checking">Checking your work</a></span></dt></dl></dd><dt><span class="sect1"><a href="PortOverride.html">Port/instance override syntax</a></span></dt><dt><span class="sect1"><a href="ConfirmInstall.html">Confirm the installation</a></span></dt><dd><dl><dt><span class="sect2"><a href="ConfirmInstall.html#tsql"><span class="application">tsql</span></a></span></dt><dt><span class="sect2"><a href="ConfirmInstall.html#Tests"><span class="application">Unit Tests</span></a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="prepodbc.html">4. Preparing ODBC</a></span></dt><dd><dl><dt><span class="sect1"><a href="prepodbc.html#OdbcBackground">Background and Terminology</a></span></dt><dt><span class="sect1"><a href="OdbcConnAttr.html">Connection attributes</a></span></dt><dt><span class="sect1"><a href="dsnless.html">DSN-less configuration</a></span></dt><dt><span class="sect1"><a href="odbcinionly.html">ODBC-only configuration</a></span></dt><dt><span class="sect1"><a href="odbcombo.html">ODBC-combined configuration</a></span></dt><dt><span class="sect1"><a href="odbcdiagnose.html">Troubleshooting ODBC connections</a></span></dt><dd><dl><dt><span class="sect2"><a href="odbcdiagnose.html#with.iodbc">With iODBC</a></span></dt><dt><span class="sect2"><a href="odbcdiagnose.html#with.unixODBC">With unixODBC</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="configs.html">5. Advanced Configurations</a></span></dt><dd><dl><dt><span class="sect1"><a href="configs.html#emulle">Big Endian Clients with Buggy <span class="productname">Microsoft SQL Server</span>s</a></span></dt><dt><span class="sect1"><a href="Localization.html">Localization and <acronym class="acronym">TDS</acronym> 7.0</a></span></dt><dd><dl><dt><span class="sect2"><a href="Localization.html#localization.servernote">Microsoft Server Note</a></span></dt></dl></dd><d t><span class="sect1"><a href="domains.html">Domain Logins</a></span></dt><dd><dl><dt><span class="sect2"><a href="domains.html#domaindetails">Implementation details</a></span></dt></dl></dd><dt><span class="sect1"><a href="kerberos.html">Kerberos Support</a></span></dt><dt><span class="sect1"><a href="uothread.html">Threading in unixODBC</a></span></dt><dt><span class="sect1"><a href="appendmode.html">Appending Dump Files</a></span></dt><dt><span class="sect1"><a href="tdspool.html">TDS Connection Pooling</a></span></dt><dt><span class="sect1"><a href="stunnel.html">stunnel HOWTO</a></span></dt></dl></dd><dt><span class="chapter"><a href="usefreetds.html">6. Use <span class="productname">FreeTDS</span> </a></span></dt><dd><dl><dt><span class="sect1"><a href="usefreetds.html#utilities"><span class="productname">FreeTDS</span> Utilities</a></span></dt></dl></dd><dt><span class="chapter"><a href="software.html">7. How to get what works with it working</a></span></dt><dd><dl><dt><span class="sect1"><a href="software.html#sqsh"><span class="application">SQSH</span></a></span></dt><dt><span class="sect1"><a href="perl.html">Perl</a></span></dt><dd><dl><dt><span class="sect2"><a href="perl.html#DBD.ODBC">DBD::ODBC</a></span></dt><dt><span class="sect2"><a href="perl.html#DBD.Sybase">DBD::Sybase</a></span></dt><dt><span class="sect2"><a href="perl.html#Sybperl">Sybperl</a></span></dt><dt><span class="sect2"><a href="perl.html#Perlmodules">Building and using the Perl modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="php.html">PHP</a></span></dt><dd><dl><dt><span class="sect2"><a href="php.html#phpDblib"><code class="systemitem">DB-Library</code></a></span></dt><dt><span class="sect2"><a href="php.html#ctlib"><code class="systemitem">CT-Library</code></a></span></dt><dt><span class="sect2"><a href="php.html#ODBC"><code class="systemitem">ODBC</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="Python.html">Python</a></span></dt><dd><dl><dt> <span class="sect2"><a href="Python.html#pymssql">pymssql</a></span></dt><dt><span class="sect2"><a href="Python.html#Sybase.Python.Module">Sybase module</a></span></dt></dl></dd><dt><span class="sect1"><a href="qt.html">Qt</a></span></dt><dt><span class="sect1"><a href="uodbc.html">ODBC on Unix</a></span></dt><dd><dl><dt><span class="sect2"><a href="uodbc.html#uodbc.64">ODBC and 64-bit</a></span></dt><dt><span class="sect2"><a href="uodbc.html#uodbc.wchar">sizeof(SQLWCHAR)</a></span></dt><dt><span class="sect2"><a href="uodbc.html#uodbc.char">Default charset</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="troubleshooting.html">8. Troubleshooting</a></span></dt><dd><dl><dt><span class="sect1"><a href="troubleshooting.html#knownissues">Known Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="troubleshooting.html#known.porting">Porting Issues</a></span></dt><dt><span class="sect2"><a href="troubleshooting.html#Textfields"><span class="type">Text</span > Fields</a></span></dt><dt><span class="sect2"><a href="troubleshooting.html#Endianism">Endianism</a></span></dt><dt><span class="sect2"><a href="troubleshooting.html#Datetime"><span class="type">Datetime</span> and <span class="type">Money</span></a></span></dt><dt><span class="sect2"><a href="troubleshooting.html#IntegratedSecurity">Microsoft's <span class="quote">���<span class="quote">Integrated Security</span>���</span></a></span></dt></dl></dd><dt><span class="sect1"><a href="serverthere.html">Is the server there?</a></span></dt><dd><dl><dt><span class="sect2"><a href="serverthere.html#serverthere.ping">Start with <span class="command"><strong>ping</strong></span></a></span></dt><dt><span class="sect2"><a href="serverthere.html#serverthere.telnet">Test with <span class="command"><strong>telnet</strong></span></a></span></dt><dt><span class="sect2"><a href="serverthere.html#serverthere.tsql">Test with <span class="command"><strong>tsql</strong></span></a></span></dt></dl></dd> <dt><span class="sect1"><a href="logging.html">Logging</a></span></dt><dd><dl><dt><span class="sect2"><a href="logging.html#Environment">Environment Variables that Control Logging</a></span></dt><dt><span class="sect2"><a href="logging.html#Logging.freetds.conf"><code class="filename">freetds.conf</code> variables that Control Logging</a></span></dt><dt><span class="sect2"><a href="logging.html#Logging.odbc">Logging in ODBC land</a></span></dt></dl></dd><dt><span class="sect1"><a href="pagenodata.html">"Page contains no data"</a></span></dt><dt><span class="sect1"><a href="seemtooslow.html">Slow connection or data retrieval</a></span></dt></dl></dd><dt><span class="chapter"><a href="help.html">9. Getting Help</a></span></dt><dd><dl><dt><span class="sect1"><a href="help.html#reconfirm.installation">Reconfirm the installation</a></span></dt><dt><span class="sect1"><a href="IsolateCause.html">Isolate the cause</a></span></dt><dd><dl><dt><span class="sect2"><a href="IsolateCause.html#he lp.otherclient">Try a different client</a></span></dt><dt><span class="sect2"><a href="IsolateCause.html#help.permissions">Check permissions</a></span></dt></dl></dd><dt><span class="sect1"><a href="mailinglist.html">The Mailing List</a></span></dt><dd><dl><dt><span class="sect2"><a href="mailinglist.html#Archive">The Archive</a></span></dt><dt><span class="sect2"><a href="mailinglist.html#Asklist">Ask the list</a></span></dt></dl></dd><dt><span class="sect1"><a href="askingforhelp.html">What to include when asking for help</a></span></dt><dd><dl><dt><span class="sect2"><a href="askingforhelp.html#Waddyagot">Waddya got?</a></span></dt><dt><span class="sect2"><a href="askingforhelp.html#help.log">Attach a logfile</a></span></dt><dt><span class="sect2"><a href="askingforhelp.html#ShowYourWork">Show your work</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="contrib.html">10. Helping</a></span></dt><dd><dl><dt><span class="sect1"><a href="contrib.html#Pickweakspot"> Pick a weak spot and fix it.</a></span></dt><dd><dl><dt><span class="sect2"><a href="contrib.html#Sendpatch">Send a patch</a></span></dt><dt><span class="sect2"><a href="contrib.html#Correct">Correct this User Guide</a></span></dt><dt><span class="sect2"><a href="contrib.html#Documentapi">Document an <acronym class="acronym">API</acronym></a></span></dt><dt><span class="sect2"><a href="contrib.html#webmaster">Be the Webmaster</a></span></dt></dl></dd><dt><span class="sect1"><a href="Light.taper.html">Light another's taper</a></span></dt><dt><span class="sect1"><a href="Ambition.html">Ambitious ideas</a></span></dt><dd><dl><dt><span class="sect2"><a href="Ambition.html#idm70673648"><code class="literal">libtds2</code></a></span></dt><dt><span class="sect2"><a href="Ambition.html#idm70679152"><code class="literal">libstddb</code></a></span></dt><dt><span class="sect2"><a href="Ambition.html#idm70677232">Server code </a></span></dt></dl></dd><dt><span class="sect1"><a href="Advocacy.ht ml">Advocacy</a></span></dt></dl></dd><dt><span class="chapter"><a href="programming.html">11. Programming</a></span></dt><dd><dl><dt><span class="sect1"><a href="programming.html#TDSprotocolref">TDS protocol reference</a></span></dt><dt><span class="sect1"><a href="apireference.html">API Reference Manual</a></span></dt><dt><span class="sect1"><a href="dblib.api.summary.html"><code class="systemitem">DB-Library</code> API Implementation Summary</a></span></dt><dt><span class="sect1"><a href="ctlib.api.summary.html">ct-lib API Implementation Summary</a></span></dt><dt><span class="sect1"><a href="odbc.api.summary.html">ODBC API Implementation Summary</a></span></dt><dt><span class="sect1"><a href="samplecode.html">DB-Library for the Tenderfoot</a></span></dt><dd><dl><dt><span class="sect2"><a href="samplecode.html#samplecode.include">Header files</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.prolog">Prolog</a></span></dt><dt><span class="sect2"><a href="s amplecode.html#samplecode.init">Initialize</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.connect">Connect to the server</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.query">Send a query</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.results">Fetch Results</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.errors">Messages and Errors</a></span></dt><dt><span class="sect2"><a href="samplecode.html#samplecode.wrapup">Last Remarks</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="acknowledgments.html">12. Acknowledgments</a></span></dt><dd><dl><dt><span class="sect1"><a href="acknowledgments.html#Codesmyths">Codesmyths</a></span></dt><dt><span class="sect1"><a href="Contributors.html">Contributors</a></span></dt></dl></dd><dt><span class="appendix"><a href="rtl.html">A. On Linkers</a></span></dt><dd><dl><dt><span class="section"><a href="rtl.html#rtl.define.f unction">What is a C function?</a></span></dt><dt><span class="section"><a href="rtl.define.library.html">What is a C library?</a></span></dt><dd><dl><dt><span class="section"><a href="rtl.define.library.html#rtl.define.library.static">Static libraries</a></span></dt><dt><span class="section"><a href="rtl.define.library.html#rtl.define.library.dynamic">Dynamic libraries</a></span></dt></dl></dd><dt><span class="section"><a href="linker.library.check.html">Checking if a Library Provides a Function</a></span></dt><dt><span class="section"><a href="linker.how.html">How Dost Thy Linker Link? </a></span></dt><dd><dl><dt><span class="section"><a href="linker.how.html#idm72540528">Static Linker</a></span></dt><dt><span class="section"><a href="linker.how.html#linker.dynamic">Dynamic Linker</a></span></dt></dl></dd><dt><span class="section"><a href="linker.conclusion.html">Keep in Mind</a></span></dt></dl></dd><dt><span class="appendix"><a href="interfacesfile.html">B. The <code class="file name">interfaces</code> File</a></span></dt><dd><dl><dt><span class="sect1"><a href="interfacesfile.html#interfacesorigin">Where it came from</a></span></dt><dt><span class="sect1"><a href="interfaceslocation.html">Where it goes</a></span></dt><dt><span class="sect1"><a href="interfacespurpose.html">What it does</a></span></dt><dt><span class="sect1"><a href="interfacesformat.html">What it looks like</a></span></dt></dl></dd><dt><span class="appendix"><a href="AboutUnicode.html">C. About Unicode, UCS-2, and UTF-8</a></span></dt><dd><dl><dt><span class="section"><a href="AboutUnicode.html#ascii"><acronym class="acronym">ASCII</acronym>: What everyone knows</a></span></dt><dd><dl><dt><span class="section"><a href="AboutUnicode.html#ASCIICompact">The <acronym class="acronym">ASCII</acronym> Compact</a></span></dt></dl></dd><dt><span class="section"><a href="ISO8859.html">ISO 8859: What everyone would like to forget</a></span></dt><dt><span class="section"><a href="Unicode.html">Unicode : East meets West</a></span></dt><dt><span class="section"><a href="Unicodegoodbad.html">Unicode's Pluses and Minuses</a></span></dt><dt><span class="section"><a href="UnicodeUtf.html">Unicode Transformation Format: UTF-8</a></span></dt><dt><span class="section"><a href="UnicodeFreeTDS.html">Unicode and <span class="productname">FreeTDS</span></a></span></dt><dd><dl><dt><span class="section"><a href="UnicodeFreeTDS.html#moreinfo">For further information</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="gfdl.html">D. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="sect1"><a href="gfdl.html#gfdl-0">PREAMBLE</a></span></dt><dt><span class="sect1"><a href="gfdl-1.html">APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="sect1"><a href="gfdl-2.html">VERBATIM COPYING</a></span></dt><dt><span class="sect1"><a href="gfdl-3.html">COPYING IN QUANTITY</a></span></dt><dt><span class="sect1"><a href="gfdl-4.html">MODIFICATIONS</a></span></dt> <dt><span class="sect1"><a href="gfdl-5.html">COMBINING DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="gfdl-6.html">COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="sect1"><a href="gfdl-7.html">AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="sect1"><a href="gfdl-8.html">TRANSLATION</a></span></dt><dt><span class="sect1"><a href="gfdl-9.html">TERMINATION</a></span></dt><dt><span class="sect1"><a href="gfdl-10.html">FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="sect1"><a href="gfdl-11.html">How to use this License for your documents</a></span></dt></dl></dd></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>3.1. <a href="ChoosingTdsProtocol.html#tab.Protocol.by.Product">Versions of the <acronym class="acronym">TDS</acronym> Protocol, by Product</a></dt><dt>3.2. <a href="ChoosingTdsProtocol.html#tab.Protocol.by.SQLServerProduct">What Version of the <acronym class="acronym">TDS</acronym> Protocol Should I use with Microsoft SQL Server?</a></dt><dt>3.3. <a href="freetdsconf.html#tab.freetds.conf"><code class="filename">freetds.conf</code> settings</a></dt><dt>3.4. <a href="freetdsconf.html#tab.freetds.conf.debugflags">Valid bitmask values for <code class="literal">debug flags</code> entry in <code class="filename">freetds.conf</code></a></dt><dt>4.1. <a href="OdbcConnAttr.html#tab.Connection.attributes.stringonly">Connection attributes used only in connection strings</a></dt><dt>4.2. <a href="OdbcConnAttr.html#tab.Connection.attributes.freetds.conf">Connection attributes that may appear in <code class="filename">odbc.ini</code></a></dt><dt>5.1. <a href="tdspool.html#tab.pool.conf">pool.conf settings</a></dt><dt>11.1. <a href="dblib.api.summary.html#dblib.api"><code class="systemitem">DB-Library</code> API Implementation Summary</a></dt><dt>11.2. <a href="ctlib.api.summary.html#ctlib.api"><code class="systemitem">CT-Library</code> API Implementation Summary</a></dt><dt>11.3. < a href="odbc.api.summary.html#odbc.api"><code class="systemitem">ODBC</code> API Implementation Summary</a></dt><dt>11.4. <a href="samplecode.html#tab.kinds.of.results">Kinds of Results</a></dt><dt>11.5. <a href="samplecode.html#tab.result.fetching.functions">Result-fetching functions</a></dt><dt>11.6. <a href="samplecode.html#tab.data.fetching.functions">Data-fetching functions</a></dt><dt>11.7. <a href="samplecode.html#tab.putting.it.all.together">Putting it all together </a></dt><dt>B.1. <a href="interfacesformat.html#tab.Services.Line">Services Line</a></dt></dl></div><div class="list-of-examples"><p><strong>List of Examples</strong></p><dl><dt>3.1. <a href="freetdsconf.html#e.g.freetdsconf">A <code class="filename">freetds.conf</code> file example</a></dt><dt>3.2. <a href="ConfirmInstall.html#e.g.tsqlShowsettings">Show compile-time settings with <span class="command">tsql</span></a></dt><dt>3.3. <a href="ConfirmInstall.html#e.g.notfound">Failure to find <em class="replaceable"> <code>servername</code></em> in <code class="filename">freetds.conf</code></a></dt><dt>3.4. <a href="ConfirmInstall.html#e.g.badname">Failure to resolve hostname for <em class="replaceable"><code>servername</code></em></a></dt><dt>3.5. <a href="ConfirmInstall.html#e.g.noconnect">Failing to connect with tsql</a></dt><dt>3.6. <a href="ConfirmInstall.html#e.g.instance.name">Getting instance information with tsql</a></dt><dt>3.7. <a href="ConfirmInstall.html#e.g.bad.tdsver">Using the wrong protocol for the server</a></dt><dt>3.8. <a href="ConfirmInstall.html#e.g.bad.login">Login failure</a></dt><dt>3.9. <a href="ConfirmInstall.html#e.g.tsqlhostname">Connect with <span class="command">tsql</span> using a hostname and port number</a></dt><dt>4.1. <a href="dsnless.html#e.g.SampleDSNless">Sample files for a DSN-less configuration</a></dt><dt>4.2. <a href="dsnless.html#e.g.ConnectDSNless">Connecting with a DSN-less configuration</a></dt><dt>4.3. <a href="dsnless.html#e.g.ConnectDSNlessnoconf ">Connecting with a DSN-less configuration that does not use <code class="filename">freetds.conf</code></a></dt><dt>4.4. <a href="odbcinionly.html#e.g.SampleODBConly">Sample ODBC-only <code class="filename">odbc.ini</code> file</a></dt><dt>4.5. <a href="odbcombo.html#e.g.SampleODBCcombo">Sample ODBC-combined <code class="filename">odbc.ini</code> file</a></dt><dt>4.6. <a href="odbcombo.html#e.g.samplecombofile">Sample ODBC-combined <code class="filename">freetds.conf</code> file</a></dt><dt>4.7. <a href="odbcdiagnose.html#e.g.odbctest.nodm">Compile <code class="filename">odbctest</code> without a driver manager.</a></dt><dt>4.8. <a href="odbcdiagnose.html#e.g.odbcdiagnose.osql">Use <span class="command">osql</span> to test the ODBC setup.</a></dt><dt>5.1. <a href="configs.html#e.g.LittleEndian">Emulate Little Endian <code class="filename">freetds.conf</code> setting</a></dt><dt>5.2. <a href="Localization.html#e.g.GREEK">Configuring for GREEK <code class="filename">freetds.conf</code > setting</a></dt><dt>5.3. <a href="Localization.html#e.g.UTF8">Configuring for <acronym class="acronym">UTF-8</acronym> <code class="filename">freetds.conf</code> setting</a></dt><dt>5.4. <a href="domains.html#e.g.domainlogin">Logging in with a domain login</a></dt><dt>5.5. <a href="uothread.html#odbcinstthread">Sample <code class="filename">odbcinst.ini</code> for threading model</a></dt><dt>5.6. <a href="uothread.html#odbcinithread">Sample <code class="filename">odbc.ini</code> for threading model</a></dt><dt>5.7. <a href="appendmode.html#e.g.DumpAppend">Turning on Dump File Append mode in <code class="filename">freetds.conf</code></a></dt><dt>5.8. <a href="tdspool.html#e.g.pool.conf">pool.conf</a></dt><dt>5.9. <a href="stunnel.html#e.g.Unencrypted">Unencrypted entry in <code class="filename">freetds.conf</code></a></dt><dt>5.10. <a href="stunnel.html#e.g.Encrypted">Encrypted entry in <code class="filename">freetds.conf</code></a></dt><dt>7.1. <a href="software.html#e.g.SQSHmake ">The <span class="application">SQSH</span> Makefile</a></dt><dt>7.2. <a href="perl.html#e.g.DBD.ODBC.build">Building <code class="systemitem">DBD::ODBC</code></a></dt><dt>7.3. <a href="perl.html#e.g.DBD.ODBC.connect">Connect to a server with <code class="systemitem">DBD::ODBC</code></a></dt><dt>7.4. <a href="perl.html#e.g.DBD.Sybase.build">Building <code class="systemitem">DBD::Sybase</code></a></dt><dt>7.5. <a href="perl.html#e.g.DBD.Sybase.Connect">Connect to a server with <code class="systemitem">DBD::Sybase</code></a></dt><dt>7.6. <a href="php.html#e.g.PHP.dblib">PHP and <code class="systemitem">DB-Library</code> for <span class="quote">���<span class="quote">Sybase</span>���</span></a></dt><dt>8.1. <a href="serverthere.html#e.g.troubleshooting.ping">Finding the server's host</a></dt><dt>8.2. <a href="serverthere.html#e.g.troubleshooting.telnet">Finding the server</a></dt><dt>8.3. <a href="serverthere.html#e.g.troubleshooting.tsql.noconf">Connecting to the server, bypassing <co de class="filename">freetds.conf</code></a></dt><dt>8.4. <a href="serverthere.html#e.g.troubleshooting.tsql">Connecting to the server using <code class="filename">freetds.conf</code></a></dt><dt>11.1. <a href="samplecode.html#idm72118768">Building the Sample Code</a></dt><dt>11.2. <a href="samplecode.html#e.g.samplecode.dblib.include">Sample Code: <code class="systemitem">DB-Library</code> header files</a></dt><dt>11.3. <a href="samplecode.html#e.g.samplecode.dblib.prolog">Sample Code: <code class="systemitem">DB-Library</code> prolog</a></dt><dt>11.4. <a href="samplecode.html#e.g.samplecode.dblib.Initialize">Sample Code: <code class="systemitem">DB-Library</code> Initialize</a></dt><dt>11.5. <a href="samplecode.html#e.g.samplecode.dblib.Connect">Sample Code: <code class="systemitem">DB-Library</code> Connect to the server</a></dt><dt>11.6. <a href="samplecode.html#e.g.samplecode.dblib.send">Sample Code: <code class="systemitem">DB-Library</code> Send a query</a></dt><dt>11.7. <a hr ef="samplecode.html#e.g.samplecode.dblib.fetch">Sample Code: <code class="systemitem">DB-Library</code> Fetch Results</a></dt><dt>11.8. <a href="samplecode.html#e.g.samplecode.dblib.errors">Sample Code: <code class="systemitem">DB-Library</code> Error and Message handlers</a></dt><dt>A.1. <a href="linker.how.html#idm72549104">Missing library name</a></dt><dt>A.2. <a href="linker.how.html#idm72581360">Library not found</a></dt><dt>B.1. <a href="interfacesformat.html#e.g.interfacesfile">An <code class="filename">interfaces</code> file example</a></dt><dt>C.1. <a href="UnicodeUtf.html#e.g.HELLO"><span class="quote">���<span class="quote">HELLO</span>���</span> in UCS-2 and UTF-8</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="about.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">� �</td><td width="20%" align="center">��</td><td width="40%" align="right" valign="top">��About this User Guide</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/install.html new/freetds-1.3.16/doc/userguide/install.html --- old/freetds-1.3.15/doc/userguide/install.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/install.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>Chapter��3.��Install FreeTDS</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="osissues.html" title="OS-specific Issues" /><link rel="next" href="ChoosingTdsProtocol.html" title="Choosing a TDS protocol version" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter��3.��Install <span class="productname">FreeTDS</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="osissues.html">Prev</a>��</td><th width="60%" align="cen ter">��</th><td width="20%" align="right">��<a accesskey="n" href="ChoosingTdsProtocol.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="install"></a>Chapter��3.��Install <span class="productname">FreeTDS</span></h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="install.html#LocalEnvironment">The local environment</a></span></dt><dt><span class="sect1"><a href="ChoosingTdsProtocol.html">Choosing a <acronym class="acronym">TDS</acronym> protocol version</a></span></dt><dd><dl><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm68823408">Choosing protocol version since <span class="productname">FreeTDS</span> 1.1</a></span></dt><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm68828784">Choosing protocol version before <span class="productname">FreeTDS</span> 1.1</a></span></dt><dt><span class="sect2"><a href="Choosi ngTdsProtocol.html#idm68856944">Regarding obsolete versions</a></span></dt></dl></dd><dt><span class="sect1"><a href="name.lookup.html"><em class="replaceable"><code>servername</code></em> Lookup</a></span></dt><dt><span class="sect1"><a href="freetdsconf.html">The <code class="filename">freetds.conf</code> file</a></span></dt><dd><dl><dt><span class="sect2"><a href="freetdsconf.html#freetdsconfpurpose">What it does</a></span></dt><dt><span class="sect2"><a href="freetdsconf.html#freetdsconflocation">Where it goes</a></span></dt><dt><span class="sect2"><a href="freetdsconf.html#freetdsconfformat">What it looks like</a></span></dt></dl></dd><dt><span class="sect1"><a href="locales.html">The <code class="filename">locales.conf</code> file</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#localespurpose">What it does</a></span></dt><dt><span class="sect2"><a href="locales.html#localeslocation">Where it goes</a></span></dt><dt><span class="sect2"><a href="locales.html #localesformat">What it looks like</a></span></dt></dl></dd><dt><span class="sect1"><a href="envvar.html">Environment variables</a></span></dt><dd><dl><dt><span class="sect2"><a href="envvar.html#Whatfor">What they're for</a></span></dt><dt><span class="sect2"><a href="envvar.html#Setting">Setting environment variables</a></span></dt><dt><span class="sect2"><a href="envvar.html#Checking">Checking your work</a></span></dt></dl></dd><dt><span class="sect1"><a href="PortOverride.html">Port/instance override syntax</a></span></dt><dt><span class="sect1"><a href="ConfirmInstall.html">Confirm the installation</a></span></dt><dd><dl><dt><span class="sect2"><a href="ConfirmInstall.html#tsql"><span class="application">tsql</span></a></span></dt><dt><span class="sect2"><a href="ConfirmInstall.html#Tests"><span class="application">Unit Tests</span></a></span></dt></dl></dd></dl></div><div class="epigraph"><p>If you install it they will stay?</p></div><p></p><div class="note" style="margin-left : 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: Confusing terminology"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">Confusing terminology</th></tr><tr><td align="left" valign="top"><p><span class="quote">���<span class="quote">Configuring</span>���</span> and <span class="quote">���<span class="quote">installing</span>���</span> +<!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/html; charset=UTF-8" /><title>Chapter��3.��Install FreeTDS</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="osissues.html" title="OS-specific Issues" /><link rel="next" href="ChoosingTdsProtocol.html" title="Choosing a TDS protocol version" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter��3.��Install <span class="productname">FreeTDS</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="osissues.html">Prev</a>��</td><th width="60%" align="cen ter">��</th><td width="20%" align="right">��<a accesskey="n" href="ChoosingTdsProtocol.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="install"></a>Chapter��3.��Install <span class="productname">FreeTDS</span></h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="sect1"><a href="install.html#LocalEnvironment">The local environment</a></span></dt><dt><span class="sect1"><a href="ChoosingTdsProtocol.html">Choosing a <acronym class="acronym">TDS</acronym> protocol version</a></span></dt><dd><dl><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm69200240">Choosing protocol version since <span class="productname">FreeTDS</span> 1.1</a></span></dt><dt><span class="sect2"><a href="ChoosingTdsProtocol.html#idm69205616">Choosing protocol version before <span class="productname">FreeTDS</span> 1.1</a></span></dt><dt><span class="sect2"><a href="Choosi ngTdsProtocol.html#idm69233776">Regarding obsolete versions</a></span></dt></dl></dd><dt><span class="sect1"><a href="name.lookup.html"><em class="replaceable"><code>servername</code></em> Lookup</a></span></dt><dt><span class="sect1"><a href="freetdsconf.html">The <code class="filename">freetds.conf</code> file</a></span></dt><dd><dl><dt><span class="sect2"><a href="freetdsconf.html#freetdsconfpurpose">What it does</a></span></dt><dt><span class="sect2"><a href="freetdsconf.html#freetdsconflocation">Where it goes</a></span></dt><dt><span class="sect2"><a href="freetdsconf.html#freetdsconfformat">What it looks like</a></span></dt></dl></dd><dt><span class="sect1"><a href="locales.html">The <code class="filename">locales.conf</code> file</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#localespurpose">What it does</a></span></dt><dt><span class="sect2"><a href="locales.html#localeslocation">Where it goes</a></span></dt><dt><span class="sect2"><a href="locales.html #localesformat">What it looks like</a></span></dt></dl></dd><dt><span class="sect1"><a href="envvar.html">Environment variables</a></span></dt><dd><dl><dt><span class="sect2"><a href="envvar.html#Whatfor">What they're for</a></span></dt><dt><span class="sect2"><a href="envvar.html#Setting">Setting environment variables</a></span></dt><dt><span class="sect2"><a href="envvar.html#Checking">Checking your work</a></span></dt></dl></dd><dt><span class="sect1"><a href="PortOverride.html">Port/instance override syntax</a></span></dt><dt><span class="sect1"><a href="ConfirmInstall.html">Confirm the installation</a></span></dt><dd><dl><dt><span class="sect2"><a href="ConfirmInstall.html#tsql"><span class="application">tsql</span></a></span></dt><dt><span class="sect2"><a href="ConfirmInstall.html#Tests"><span class="application">Unit Tests</span></a></span></dt></dl></dd></dl></div><div class="epigraph"><p>If you install it they will stay?</p></div><p></p><div class="note" style="margin-left : 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: Confusing terminology"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">Confusing terminology</th></tr><tr><td align="left" valign="top"><p><span class="quote">���<span class="quote">Configuring</span>���</span> and <span class="quote">���<span class="quote">installing</span>���</span> don't have absolute, context-free definitions. In some circles, we install a product and then configure it. In the <acronym class="acronym">GNU</acronym> world, we <span class="command"><strong>configure</strong></span> the package (generate the <code class="filename">Makefile</code>s), then we <span class="command"><strong>make install</strong></span> the package. In the case of a library package such as <span class="productname">FreeTDS</span> To <span class="emphasis"><em>install the package</em></span> is to copy the files the application developer will use to their canonical locations: header files to <code class="filename">include</code>, libraries to the <code class="filename">lib</code>, documentation and man pages <code class="filename">share</code>. Install targets were specified during the <span class="phrase">build process</span> as arguments to <span class="command"><strong>configure</strong></span>, covered in the last chapter.</p><p>For lack of a better term, this chapter describes installing the <span class="emphasis"><em>product</em></span>. Put more specifically, once we're done with the package manager, we still have to tell <span class="productname">FreeTDS</span> about your database servers, and we still have to tell your client programs about <span class="productname">FreeTDS</span>.</p></td></tr></table></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="LocalEnvironment"></a>The local environment</h2></div></div></div><p>After <span class="productname">FreeTDS</span> has been built and installed, it still doesn't know where your servers are or what particular version of Sybase or Microsoft software each one is using.</p><p>The purpose of this section is to explain how to describe your servernames to <span class="productname">FreeTDS</span>. <span class="productname">FreeTDS</span> looks up your server's attributes in <code class="filename">freetds.conf</code>. Some of the att ributes can be overridden by environment variables.</p><p>One of the more important (and arcane) settings is the <acronym class="acronym">TDS</acronym> protocol version, described next.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="osissues.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="ChoosingTdsProtocol.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">OS-specific Issues��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Choosing a <acronym class="acronym">TDS</acronym> protocol version</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/kerberos.html new/freetds-1.3.16/doc/userguide/kerberos.html --- old/freetds-1.3.15/doc/userguide/kerberos.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/kerberos.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>Kerberos Support</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="configs.html" title="Chapter��5.��Advanced Configurations" /><link rel="prev" href="domains.html" title="Domain Logins" /><link rel="next" href="uothread.html" title="Threading in unixODBC" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kerberos Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="domains.html">Prev</a>��</td><th width="60%" align="center">Chapter��5.��Advanced Configurations</th><td width="20%" ali gn="right">��<a accesskey="n" href="uothread.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="kerberos"></a>Kerberos Support</h2></div></div></div><p>Perhaps surprisingly, Kerberos can be used to authenticate to Microsoft SQL Servers. -<a href="#ftn.idm69710832" class="footnote" id="idm69710832"><sup class="footnote">[21]</sup></a> +<a href="#ftn.idm70067184" class="footnote" id="idm70067184"><sup class="footnote">[21]</sup></a> This affords single-signon (or, at most, <span class="quote">���<span class="quote">double-signon</span>���</span>) capability in non-Windows environment. </p><p>To take advantage of Kerberos you have to set up your machine with keytab - <a href="#ftn.idm69717488" class="footnote" id="idm69717488"><sup class="footnote">[22]</sup></a> -from your Active Directory. You could use <a class="ulink" href="http://www.samba.org/" target="_top">Samba</a> or configure Kerberos directly (<code class="filename">/etc/krb5.conf</code>). <span class="command"><strong>configure</strong></span> includes options to define the location of your Kerberos installation (cf. <a class="xref" href="config.html#Configure.Options" title="configure options">Options to configure</a>). </p><p>By default UNIX does not initialize a Kerberos ticket with your login account. You must use <span class="command"><strong>kinit</strong></span> to initialize a ticket. You could also configure Kerberos in PAM to initialize a Kerberos ticket at login time.</p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69710832" class="footnote"><p><a href="#idm69710832" class="para"><sup class="para">[21] </sup></a>It works because much of Active Directory is based on Kerberos. <span class="emphasis"><em>From e ach according to his ability; to each according to his needs. </em></span></p></div><div id="ftn.idm69717488" class="footnote"><p><a href="#idm69717488" class="para"><sup class="para">[22] </sup></a>No, the author does not really know what he's talking about.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="domains.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="configs.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="uothread.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Domain Logins��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Threading in unixODBC</td></tr></table></div></body></html> \ No newline at end of file + <a href="#ftn.idm70073840" class="footnote" id="idm70073840"><sup class="footnote">[22]</sup></a> +from your Active Directory. You could use <a class="ulink" href="http://www.samba.org/" target="_top">Samba</a> or configure Kerberos directly (<code class="filename">/etc/krb5.conf</code>). <span class="command"><strong>configure</strong></span> includes options to define the location of your Kerberos installation (cf. <a class="xref" href="config.html#Configure.Options" title="configure options">Options to configure</a>). </p><p>By default UNIX does not initialize a Kerberos ticket with your login account. You must use <span class="command"><strong>kinit</strong></span> to initialize a ticket. You could also configure Kerberos in PAM to initialize a Kerberos ticket at login time.</p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70067184" class="footnote"><p><a href="#idm70067184" class="para"><sup class="para">[21] </sup></a>It works because much of Active Directory is based on Kerberos. <span class="emphasis"><em>From e ach according to his ability; to each according to his needs. </em></span></p></div><div id="ftn.idm70073840" class="footnote"><p><a href="#idm70073840" class="para"><sup class="para">[22] </sup></a>No, the author does not really know what he's talking about.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="domains.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="configs.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="uothread.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Domain Logins��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Threading in unixODBC</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/linker.how.html new/freetds-1.3.16/doc/userguide/linker.how.html --- old/freetds-1.3.15/doc/userguide/linker.how.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/linker.how.html 2022-12-09 10:01:41.000000000 +0100 @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>How Dost Thy Linker Link?</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="rtl.html" title="Appendix��A.��On Linkers" /><link rel="prev" href="linker.library.check.html" title="Checking if a Library Provides a Function" /><link rel="next" href="linker.conclusion.html" title="Keep in Mind" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How Dost Thy Linker Link? </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="linker.library.check.html">Prev</a>��</td><th width="60%" align="center">App endix��A.��On Linkers</th><td width="20%" align="right">��<a accesskey="n" href="linker.conclusion.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="linker.how"></a>How Dost Thy Linker Link? </h2></div></div></div><p>Now at last we come to how the linker performs its magic. Once again the discussion divides between static and dynamic linking. </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm72188272"></a>Static Linker</h3></div></div></div><p>Static linking happens at build time. Object files are collected together; a distinct list of all function names is created, and the linker is tasked with finding a definition for each one. </p><p>Different linkers have different command-line options to support OS-specific features. This document isn't intended to teach how to use any particular linker. Our task here is to understand the principles involved, so that you can apply them to your particular situation. </p><p>The static linker needs three kinds of information: -</p><div class="orderedlist"><p class="title"><strong>Static linker inputs</strong></p><ol class="orderedlist" type="1"><li class="listitem"><p>Object modules to be linked, including libraries </p></li><li class="listitem"><p>Locations of libraries </p></li><li class="listitem"><p>Search order </p></li></ol></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm72192368"></a>Knitting together the object modules</h4></div></div></div><p>The static linker merges your object files into one executable. Your project's object files may refer freely (usually) to each other's functions, and the linker will match them up. It will catenate them together, compute every function's offset from the start of the executable, and replace every function reference with the actual address needed for the executable it's constructing. For library functions, definitions are copied from the library and appended to the output file (executable). The placeholder addresses left by the compiler are similarly replaced by offsets. </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm72199408"></a>Specifying libraries</h4></div></div></div><p></p><p>An application programmer using <span class="productname">FreeTDS</span> will need to mention the name fo the <span class="productname">FreeTDS</span> library being used. Failure to do so will provoke the dread <em class="firstterm">undefined reference</em> linker error: +<!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/html; charset=UTF-8" /><title>How Dost Thy Linker Link?</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="rtl.html" title="Appendix��A.��On Linkers" /><link rel="prev" href="linker.library.check.html" title="Checking if a Library Provides a Function" /><link rel="next" href="linker.conclusion.html" title="Keep in Mind" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How Dost Thy Linker Link? </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="linker.library.check.html">Prev</a>��</td><th width="60%" align="center">App endix��A.��On Linkers</th><td width="20%" align="right">��<a accesskey="n" href="linker.conclusion.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="linker.how"></a>How Dost Thy Linker Link? </h2></div></div></div><p>Now at last we come to how the linker performs its magic. Once again the discussion divides between static and dynamic linking. </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm72540528"></a>Static Linker</h3></div></div></div><p>Static linking happens at build time. Object files are collected together; a distinct list of all function names is created, and the linker is tasked with finding a definition for each one. </p><p>Different linkers have different command-line options to support OS-specific features. This document isn't intended to teach how to use any particular linker. Our task here is to understand the principles involved, so that you can apply them to your particular situation. </p><p>The static linker needs three kinds of information: +</p><div class="orderedlist"><p class="title"><strong>Static linker inputs</strong></p><ol class="orderedlist" type="1"><li class="listitem"><p>Object modules to be linked, including libraries </p></li><li class="listitem"><p>Locations of libraries </p></li><li class="listitem"><p>Search order </p></li></ol></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm72544624"></a>Knitting together the object modules</h4></div></div></div><p>The static linker merges your object files into one executable. Your project's object files may refer freely (usually) to each other's functions, and the linker will match them up. It will catenate them together, compute every function's offset from the start of the executable, and replace every function reference with the actual address needed for the executable it's constructing. For library functions, definitions are copied from the library and appended to the output file (executable). The placeholder addresses left by the compiler are similarly replaced by offsets. </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm72551664"></a>Specifying libraries</h4></div></div></div><p></p><p>An application programmer using <span class="productname">FreeTDS</span> will need to mention the name fo the <span class="productname">FreeTDS</span> library being used. Failure to do so will provoke the dread <em class="firstterm">undefined reference</em> linker error: -</p><div class="example"><a id="idm72196848"></a><p class="title"><strong>Example��A.1.��Missing library name</strong></p><div class="example-contents"><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>gcc -o bsqldb bsqldb.o </code></strong> +</p><div class="example"><a id="idm72549104"></a><p class="title"><strong>Example��A.1.��Missing library name</strong></p><div class="example-contents"><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>gcc -o bsqldb bsqldb.o </code></strong> <code class="computeroutput">bsqldb.o: In function `get_login': ../../../src/apps/bsqldb.c:816: undefined reference to `dblogin' ../../../src/apps/bsqldb.c:823: undefined reference to `dbsetlname' @@ -11,9 +11,9 @@ ../../../src/apps/bsqldb.c:889: undefined reference to `dbsetlname' ���</code> </pre></div></div><p><br class="example-break" /> -</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm72222832"></a>Finding libraries</h4></div></div></div><p>Specifying the library is necessary but may be insufficient. The linker may need to be told where to look for the library. This is often the case for the application programmer using <span class="productname">FreeTDS</span> because the <span class="productname">FreeTDS</span> libraries may be installed in a location not on the linker's default search path. Linkers are usually pretty blunt about missing libraries: +</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm72575088"></a>Finding libraries</h4></div></div></div><p>Specifying the library is necessary but may be insufficient. The linker may need to be told where to look for the library. This is often the case for the application programmer using <span class="productname">FreeTDS</span> because the <span class="productname">FreeTDS</span> libraries may be installed in a location not on the linker's default search path. Linkers are usually pretty blunt about missing libraries: -</p><div class="example"><a id="idm72229104"></a><p class="title"><strong>Example��A.2.��Library not found</strong></p><div class="example-contents"><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>gcc -o bsqldb bsqldb.o -l sybdb</code></strong> +</p><div class="example"><a id="idm72581360"></a><p class="title"><strong>Example��A.2.��Library not found</strong></p><div class="example-contents"><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>gcc -o bsqldb bsqldb.o -l sybdb</code></strong> <code class="computeroutput">ld: cannot find -lsybdb</code> </pre></div></div><p><br class="example-break" /> </p><p><span class="emphasis"><em>Order matters</em></span>. Linkers tend to be fussy about library search order, some more than others. It's good practice to tell the linker to search project libraries first, third-party libraries (e.g. iconv or kerberos) next, and finally system libraries. </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="linker.dynamic"></a>Dynamic Linker</h3></div></div></div><p>The dynamic linker ��� also known as the runtime linker ��� is, like the rest of dynamic linking, more complicated than its static counterpart. Whereas it's impossible even to generate an executable with missing static function references, an executable that uses dynamic libraries depends on the runtime environment to have its references satisfied.</p><p>When a dynamically linked application is launched, the OS invokes the runtime linker to resolve any undefined references. Much as the static linker does, the runtime linker consults a lis t of dynamic libraries along its configured search path. The names of the libraries to search for are embedded in the executable. Sometimes, not always, the search path is found in the executable too. Usually any embedded path can be overridden. </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="linker.dynamic.the.executable"></a>Information in the executable</h4></div></div></div><p>Exactly what information is in the executable and how to display it depends on the format of the executable. Different OSes use different formats and most Unix derivatives actually support at least two. The most commonly encountered format for the <span class="productname">FreeTDS</span> programmer is the ELF format. In the interest of your time and mine, that's the one we'll examine here. </p><p>The GNU bintool utility <span class="command"><strong>readelf</strong></span> displays the information in the executable that is input to the runtime linker: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/linker.library.check.html new/freetds-1.3.16/doc/userguide/linker.library.check.html --- old/freetds-1.3.15/doc/userguide/linker.library.check.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/linker.library.check.html 2022-12-09 10:01:41.000000000 +0100 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>Checking if a Library Provides a Function</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="rtl.html" title="Appendix��A.��On Linkers" /><link rel="prev" href="rtl.define.library.html" title="What is a C library?" /><link rel="next" href="linker.how.html" title="How Dost Thy Linker Link?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Checking if a Library Provides a Function</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="rtl.define.library.html">Prev</a>��</td><th width="60%" align= "center">Appendix��A.��On Linkers</th><td width="20%" align="right">��<a accesskey="n" href="linker.how.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="linker.library.check"></a>Checking if a Library Provides a Function</h2></div></div></div><p>A linker, any linker, knits together object files (some of which may be in libraries) such that every function needed by the program has a definition. If the linker fails to locate a definition for even one function, it will fail and the program will not run. </p><p>Returning to <a class="link" href="rtl.html#bsqldb.unresolved"><code class="filename">bsqldb.o</code></a>, we can use <span class="command"><strong>nm</strong></span> to see which functions are unresolved, and determine whether or not a particular library contains them. We'll ignore the symbols that start with an underscore, marking them per the C standard as being provided by the imp lementation<a href="#ftn.idm72174704" class="footnote" id="idm72174704"><sup class="footnote">[36]</sup></a>, and focus on the last five in this abbreviated list. +<!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/html; charset=UTF-8" /><title>Checking if a Library Provides a Function</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="rtl.html" title="Appendix��A.��On Linkers" /><link rel="prev" href="rtl.define.library.html" title="What is a C library?" /><link rel="next" href="linker.how.html" title="How Dost Thy Linker Link?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Checking if a Library Provides a Function</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="rtl.define.library.html">Prev</a>��</td><th width="60%" align= "center">Appendix��A.��On Linkers</th><td width="20%" align="right">��<a accesskey="n" href="linker.how.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="linker.library.check"></a>Checking if a Library Provides a Function</h2></div></div></div><p>A linker, any linker, knits together object files (some of which may be in libraries) such that every function needed by the program has a definition. If the linker fails to locate a definition for even one function, it will fail and the program will not run. </p><p>Returning to <a class="link" href="rtl.html#bsqldb.unresolved"><code class="filename">bsqldb.o</code></a>, we can use <span class="command"><strong>nm</strong></span> to see which functions are unresolved, and determine whether or not a particular library contains them. We'll ignore the symbols that start with an underscore, marking them per the C standard as being provided by the imp lementation<a href="#ftn.idm72526960" class="footnote" id="idm72526960"><sup class="footnote">[36]</sup></a>, and focus on the last five in this abbreviated list. </p><div class="variablelist"><p class="title"><strong>Some unresolved functions in <code class="filename">bsqldb.o</code></strong></p><dl class="variablelist"><dt><span class="term"><code class="function">asprintf</code>, </span><span class="term"><code class="function">basename</code></span></dt><dd><p>Normally provided by the standard C library, but if not by <span class="productname">FreeTDS</span>'s replacements library: </p><pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nm /usr/lib/libc.a | grep -w T | grep -E 'asprintf|basename' @@ -19,4 +19,4 @@ </p></dd></dl></div><p> Although these examples refer to static libraries, <span class="command"><strong>nm</strong></span> works just as well with dynamic libraries, too. -</p><p>There are other tools besides <span class="command"><strong>nm</strong></span>. Windows��, for instance, has <span class="command"><strong>dumpbin</strong></span>, and the GNU bintools include <span class="command"><strong>objdump</strong></span>. </p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm72174704" class="footnote"><p><a href="#idm72174704" class="para"><sup class="para">[36] </sup></a>Why and how leading underscores enter into this discussion is just one more example of arcane historical practices one needs to know to master the subject. For our purposes, though, it's enough to know that <span class="quote">���<span class="quote">implementation-provided</span>���</span> functions like these ��� functions provided by the C standard library ��� often have an underscored prepended. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> <a accesskey="p" href="rtl.define.library.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="rtl.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="linker.how.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">What is a C library?��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��How Dost Thy Linker Link? </td></tr></table></div></body></html> \ No newline at end of file +</p><p>There are other tools besides <span class="command"><strong>nm</strong></span>. Windows��, for instance, has <span class="command"><strong>dumpbin</strong></span>, and the GNU bintools include <span class="command"><strong>objdump</strong></span>. </p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm72526960" class="footnote"><p><a href="#idm72526960" class="para"><sup class="para">[36] </sup></a>Why and how leading underscores enter into this discussion is just one more example of arcane historical practices one needs to know to master the subject. For our purposes, though, it's enough to know that <span class="quote">���<span class="quote">implementation-provided</span>���</span> functions like these ��� functions provided by the C standard library ��� often have an underscored prepended. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> <a accesskey="p" href="rtl.define.library.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="rtl.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="linker.how.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">What is a C library?��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��How Dost Thy Linker Link? </td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/name.lookup.html new/freetds-1.3.16/doc/userguide/name.lookup.html --- old/freetds-1.3.15/doc/userguide/name.lookup.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/name.lookup.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>servername Lookup</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="install.html" title="Chapter��3.��Install FreeTDS" /><link rel="prev" href="ChoosingTdsProtocol.html" title="Choosing a TDS protocol version" /><link rel="next" href="freetdsconf.html" title="The freetds.conf file" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><em class="replaceable"><code>servername</code></em> Lookup</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ChoosingTdsProtocol.html">Prev</a>��</td><th width= "60%" align="center">Chapter��3.��Install <span class="productname">FreeTDS</span></th><td width="20%" align="right">��<a accesskey="n" href="freetdsconf.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="name.lookup"></a><em class="replaceable"><code>servername</code></em> Lookup</h2></div></div></div><p><span class="productname">FreeTDS</span> converts the servername to an IP address by following the steps below, stopping when it succeeds. </p><div class="orderedlist"><p class="title"><strong>Name lookup sequence - <a href="#ftn.idm68869360" class="footnote" id="idm68869360"><sup class="footnote">[6]</sup></a> + <a href="#ftn.idm69246192" class="footnote" id="idm69246192"><sup class="footnote">[6]</sup></a> </strong></p><ol class="orderedlist" type="1"><li class="listitem"><p>Find <em class="replaceable"><code>servername</code></em> in <code class="filename">freetds.conf</code>. If a section with that name exists, use the hostname, port, and TDS version specified therein.</p></li><li class="listitem"><p>Attempt to convert <em class="replaceable"><code>servername</code></em> to an IP address with <code class="function">inet_addr(3)</code>.</p></li><li class="listitem"><p>Request name-lookup from the operating system via <code class="function">gethostbyname(3)</code> or similar.</p></li></ol></div><p> - If the TDS version and port are not read from <code class="filename">freetds.conf</code>, they are derived from the compiled-in defaults and overridden by applicable environment variables.</p><p>As you can see, if most of your servers use the same TDS version and answer to the default port, then you don't need to list them all in <code class="filename">freetds.conf</code>. You can simply compile in the right defaults ��� or set the <code class="envar">TDSPORT</code> and <code class="envar">TDSVER</code> environment variables ��� and rely on DNS for name resolution.</p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm68869360" class="footnote"><p><a href="#idm68869360" class="para"><sup class="para">[6] </sup></a>This description applies to <code class="systemitem">DB-Library</code> and <code class="systemitem">CT-Library</code>. ODBC lookup is different.</p></div></div></div><div class="navfooter"><hr /><table width="100%" sum mary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ChoosingTdsProtocol.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="install.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="freetdsconf.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Choosing a <acronym class="acronym">TDS</acronym> protocol version��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��The <code class="filename">freetds.conf</code> file</td></tr></table></div></body></html> \ No newline at end of file + If the TDS version and port are not read from <code class="filename">freetds.conf</code>, they are derived from the compiled-in defaults and overridden by applicable environment variables.</p><p>As you can see, if most of your servers use the same TDS version and answer to the default port, then you don't need to list them all in <code class="filename">freetds.conf</code>. You can simply compile in the right defaults ��� or set the <code class="envar">TDSPORT</code> and <code class="envar">TDSVER</code> environment variables ��� and rely on DNS for name resolution.</p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69246192" class="footnote"><p><a href="#idm69246192" class="para"><sup class="para">[6] </sup></a>This description applies to <code class="systemitem">DB-Library</code> and <code class="systemitem">CT-Library</code>. ODBC lookup is different.</p></div></div></div><div class="navfooter"><hr /><table width="100%" sum mary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ChoosingTdsProtocol.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="install.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="freetdsconf.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Choosing a <acronym class="acronym">TDS</acronym> protocol version��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��The <code class="filename">freetds.conf</code> file</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/odbc.api.summary.html new/freetds-1.3.16/doc/userguide/odbc.api.summary.html --- old/freetds-1.3.15/doc/userguide/odbc.api.summary.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/odbc.api.summary.html 2022-12-09 10:01:40.000000000 +0100 @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>ODBC API Implementation Summary</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="programming.html" title="Chapter��11.��Programming" /><link rel="prev" href="ctlib.api.summary.html" title="ct-lib API Implementation Summary" /><link rel="next" href="samplecode.html" title="DB-Library for the Tenderfoot" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ODBC API Implementation Summary</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ctlib.api.summary.html">Prev</a>��</td><th width="60%" al ign="center">Chapter��11.��Programming</th><td width="20%" align="right">��<a accesskey="n" href="samplecode.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="odbc.api.summary"></a>ODBC API Implementation Summary</h2></div></div></div><p>Microsoft's ODBC documentation is - <a class="ulink" href="http://msdn.microsoft.com/en-us/library/ms714177.aspx" target="_top">online</a>.</p><p>The functions are linked to the reference page on Microsoft's website. <a href="#ftn.idm71544816" class="footnote" id="idm71544816"><sup class="footnote">[28]</sup></a></p><div class="table"><a id="odbc.api"></a><p class="title"><strong>Table��11.3.��<code class="systemitem">ODBC</code> API Implementation Summary</strong></p><div class="table-contents"><table class="table" summary="ODBC API Implementation Summary" border="1"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th>Category</th><th>Function</th><th>Status</th><th>Comments</th></tr></thead><tbody><tr><td>(all)</td><td>SQLAllocConnect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLAllocEnv</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLAllocHandle</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLAllocStmt</t d><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLBindCol</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLBindParam</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLBindParameter</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLBrowseConnect</td><td>��</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLCancel</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLCloseCursor</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLColAttribute</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLColAttributes</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLColumnPrivileges</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLColumns</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLConnect</td>< td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLCopyDesc</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLDescribeCol</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLDescribeParam</td><td>unimplemented</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLDisconnect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLDriverConnect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLEndTran</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLError</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLExecDirect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLExecute</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLExtendedFetch</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFetch</td><td>O K</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFetchScroll</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLForeignKeys</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFreeConnect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFreeEnv</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFreeHandle</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFreeStmt</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetConnectAttr</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetConnectOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetCursorName</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetData</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetDescField</td><t d>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetDescRec</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetDiagField</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetDiagRec</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetEnvAttr</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetFunctions</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetInfo</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetStmtAttr</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetStmtOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetTypeInfo</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLMoreResults</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLNativeSql</td><td >partial</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLNumParams</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLNumResultCols</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLParamData</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLParamOptions</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLPrepare</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLPrimaryKeys</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLProcedureColumns</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLProcedures</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLPutData</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLRowCount</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetConnectAttr</td ><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetConnectOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetCursorName</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetDescField</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetDescRec</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetEnvAttr</td><td>partial</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetPos</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetParam</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetScrollOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetStmtAttr</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetStmtOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSp ecialColumns</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLStatistics</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLTablePrivileges</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLTables</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLTransact</td><td>OK</td><td class="auto-generated">��</td></tr></tbody></table></div></div><br class="table-break" /><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm71544816" class="footnote"><p><a href="#idm71544816" class="para"><sup class="para">[28] </sup></a>Links such as these are quite perishable. Should you find them broken, please check the <a class="ulink" href="http://www.freetds.org/userguide/odbc.api.summary.htm" target="_top"><span class="productname">FreeTDS</span> User Guide</a> posted on our website. If it's out of date, please let us know, so we can corre ct it. Thanks.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ctlib.api.summary.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="samplecode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ct-lib API Implementation Summary��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��DB-Library for the Tenderfoot</td></tr></table></div></body></html> \ No newline at end of file + <a class="ulink" href="http://msdn.microsoft.com/en-us/library/ms714177.aspx" target="_top">online</a>.</p><p>The functions are linked to the reference page on Microsoft's website. <a href="#ftn.idm71905264" class="footnote" id="idm71905264"><sup class="footnote">[28]</sup></a></p><div class="table"><a id="odbc.api"></a><p class="title"><strong>Table��11.3.��<code class="systemitem">ODBC</code> API Implementation Summary</strong></p><div class="table-contents"><table class="table" summary="ODBC API Implementation Summary" border="1"><colgroup><col /><col /><col /><col /></colgroup><thead><tr><th>Category</th><th>Function</th><th>Status</th><th>Comments</th></tr></thead><tbody><tr><td>(all)</td><td>SQLAllocConnect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLAllocEnv</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLAllocHandle</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLAllocStmt</t d><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLBindCol</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLBindParam</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLBindParameter</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLBrowseConnect</td><td>��</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLCancel</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLCloseCursor</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLColAttribute</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLColAttributes</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLColumnPrivileges</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLColumns</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLConnect</td>< td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLCopyDesc</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLDescribeCol</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLDescribeParam</td><td>unimplemented</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLDisconnect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLDriverConnect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLEndTran</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLError</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLExecDirect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLExecute</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLExtendedFetch</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFetch</td><td>O K</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFetchScroll</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLForeignKeys</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFreeConnect</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFreeEnv</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFreeHandle</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLFreeStmt</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetConnectAttr</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetConnectOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetCursorName</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetData</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetDescField</td><t d>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetDescRec</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetDiagField</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetDiagRec</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetEnvAttr</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetFunctions</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetInfo</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetStmtAttr</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetStmtOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLGetTypeInfo</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLMoreResults</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLNativeSql</td><td >partial</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLNumParams</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLNumResultCols</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLParamData</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLParamOptions</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLPrepare</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLPrimaryKeys</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLProcedureColumns</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLProcedures</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLPutData</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLRowCount</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetConnectAttr</td ><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetConnectOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetCursorName</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetDescField</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetDescRec</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetEnvAttr</td><td>partial</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetPos</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetParam</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetScrollOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetStmtAttr</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSetStmtOption</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLSp ecialColumns</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLStatistics</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLTablePrivileges</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLTables</td><td>OK</td><td class="auto-generated">��</td></tr><tr><td>(all)</td><td>SQLTransact</td><td>OK</td><td class="auto-generated">��</td></tr></tbody></table></div></div><br class="table-break" /><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm71905264" class="footnote"><p><a href="#idm71905264" class="para"><sup class="para">[28] </sup></a>Links such as these are quite perishable. Should you find them broken, please check the <a class="ulink" href="http://www.freetds.org/userguide/odbc.api.summary.htm" target="_top"><span class="productname">FreeTDS</span> User Guide</a> posted on our website. If it's out of date, please let us know, so we can corre ct it. Thanks.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ctlib.api.summary.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="samplecode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ct-lib API Implementation Summary��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��DB-Library for the Tenderfoot</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/odbcdiagnose.html new/freetds-1.3.16/doc/userguide/odbcdiagnose.html --- old/freetds-1.3.15/doc/userguide/odbcdiagnose.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/odbcdiagnose.html 2022-12-09 10:01:39.000000000 +0100 @@ -5,8 +5,8 @@ doesn't work, turn on logging with <code class="envar">TDSDUMP</code>. The log will tell you what TCP/IP name (and address) <span class="productname">FreeTDS</span> is attempting to connect to, and what version of the TDS protocol it's using.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="with.iodbc"></a>With iODBC</h3></div></div></div><p><code class="systemitem">iODBC</code> comes with a sample command line query program called <span class="command"><strong>odbctest</strong></span>, located in the <code class="filename">iodbc/samples</code> directory. Using this program you can get a listing of DSNs, connect, and issue queries. </p><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Tip"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../images/tip.gif" /></td><th align="left">Tip</th></tr><tr><td align="left" valign="top"><p>For debugging purposes, you may wish to link a program such as <span class="command"><strong>odbctest</strong></span> directly to <span class="productname">FreeTDS</span> instead of to the driver manager. -<a href="#ftn.idm69550704" class="footnote" id="idm69550704"><sup class="footnote">[15]</sup></a> -To do so, compile and install the <code class="systemitem">ODBC</code> driver with <code class="systemitem">iODBC</code> as normal <a href="#ftn.idm69556208" class="footnote" id="idm69556208"><sup class="footnote">[16]</sup></a>, then compile and link the program: +<a href="#ftn.idm69907056" class="footnote" id="idm69907056"><sup class="footnote">[15]</sup></a> +To do so, compile and install the <code class="systemitem">ODBC</code> driver with <code class="systemitem">iODBC</code> as normal <a href="#ftn.idm69912560" class="footnote" id="idm69912560"><sup class="footnote">[16]</sup></a>, then compile and link the program: </p><div class="example"><a id="e.g.odbctest.nodm"></a><p class="title"><strong>Example��4.7.��Compile <code class="filename">odbctest</code> without a driver manager.</strong></p><div class="example-contents"><pre class="screen"> <code class="prompt">$ </code><strong class="userinput"><code>make odbctest.o</code></strong> @@ -65,5 +65,5 @@ | | +---------------------------------------+ SQL></pre></div></div><p><br class="example-break" /></p><p>The reader is here advised that the <span class="command"><strong>isql</strong></span> that comes with many versions of <code class="systemitem">unixODBC</code> will truncate text and surprise in other ways without warning. -If it behaves strangely, try <span class="productname">FreeTDS</span>'s <span class="command"><strong>bsqlodbc</strong></span> before you decide you've found a <span class="productname">FreeTDS</span> bug.</p></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69550704" class="footnote"><p><a href="#idm69550704" class="para"><sup class="para">[15] </sup></a>Why? Once the program is started in the debugger, the driver entry points become viable breakpoints. -Because the DM loads the driver dynamically with <code class="function">dlopen(3)</code>, no driver addresses even <span class="emphasis"><em>exist</em></span> until the runtime linker loads it. </p></div><div id="ftn.idm69556208" class="footnote"><p><a href="#idm69556208" class="para"><sup class="para">[16] </sup></a>When linking directly to <span class="productname">FreeTDS</span> you still need the Driver Manager's header files.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="odbcombo.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="prepodbc.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="configs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ODBC-combined configuration��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapte r��5.��Advanced Configurations</td></tr></table></div></body></html> \ No newline at end of file +If it behaves strangely, try <span class="productname">FreeTDS</span>'s <span class="command"><strong>bsqlodbc</strong></span> before you decide you've found a <span class="productname">FreeTDS</span> bug.</p></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69907056" class="footnote"><p><a href="#idm69907056" class="para"><sup class="para">[15] </sup></a>Why? Once the program is started in the debugger, the driver entry points become viable breakpoints. +Because the DM loads the driver dynamically with <code class="function">dlopen(3)</code>, no driver addresses even <span class="emphasis"><em>exist</em></span> until the runtime linker loads it. </p></div><div id="ftn.idm69912560" class="footnote"><p><a href="#idm69912560" class="para"><sup class="para">[16] </sup></a>When linking directly to <span class="productname">FreeTDS</span> you still need the Driver Manager's header files.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="odbcombo.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="prepodbc.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="configs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ODBC-combined configuration��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapte r��5.��Advanced Configurations</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/odbcinionly.html new/freetds-1.3.16/doc/userguide/odbcinionly.html --- old/freetds-1.3.15/doc/userguide/odbcinionly.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/odbcinionly.html 2022-12-09 10:01:39.000000000 +0100 @@ -2,7 +2,7 @@ <!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/html; charset=UTF-8" /><title>ODBC-only configuration</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="prepodbc.html" title="Chapter��4.��Preparing ODBC" /><link rel="prev" href="dsnless.html" title="DSN-less configuration" /><link rel="next" href="odbcombo.html" title="ODBC-combined configuration" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ODBC-only configuration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="dsnless.html">Prev</a>��</td><th width="60%" align="center">Chapter��4.��Preparing ODBC</th><td wid th="20%" align="right">��<a accesskey="n" href="odbcombo.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="odbcinionly"></a>ODBC-only configuration</h2></div></div></div><p>An ODBC-only configuration relies solely on <code class="filename">odbc.ini</code> for server properties. Other <span class="productname">FreeTDS</span> libraries don't know about <code class="filename">odbc.ini</code>. </p><div class="example"><a id="e.g.SampleODBConly"></a><p class="title"><strong>Example��4.4.��Sample ODBC-only <code class="filename">odbc.ini</code> file</strong></p><div class="example-contents"><pre class="programlisting"> - [ODBC Data Sources]<a href="#ftn.idm69529968" class="footnote" id="idm69529968"><sup class="footnote">[12]</sup></a> + [ODBC Data Sources]<a href="#ftn.idm69882224" class="footnote" id="idm69882224"><sup class="footnote">[12]</sup></a> JDBC = Sybase JDBC Server [JDBC] @@ -16,4 +16,4 @@ [Default] Driver = /usr/local/freetds/lib/libtdsodbc.so - </pre></div></div><p><br class="example-break" /></p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69529968" class="footnote"><p><a href="#idm69529968" class="para"><sup class="para">[12] </sup></a>Several DSNs might be listed here. In this example, we have only one, <span class="quote">���<span class="quote">JDBC</span>���</span>. It matches the <code class="literal">[JDBC]</code> entry later in the file.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dsnless.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="prepodbc.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="odbcombo.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">DSN-less configuration��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="r ight" valign="top">��ODBC-combined configuration</td></tr></table></div></body></html> \ No newline at end of file + </pre></div></div><p><br class="example-break" /></p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69882224" class="footnote"><p><a href="#idm69882224" class="para"><sup class="para">[12] </sup></a>Several DSNs might be listed here. In this example, we have only one, <span class="quote">���<span class="quote">JDBC</span>���</span>. It matches the <code class="literal">[JDBC]</code> entry later in the file.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dsnless.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="prepodbc.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="odbcombo.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">DSN-less configuration��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="r ight" valign="top">��ODBC-combined configuration</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/odbcombo.html new/freetds-1.3.16/doc/userguide/odbcombo.html --- old/freetds-1.3.15/doc/userguide/odbcombo.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/odbcombo.html 2022-12-09 10:01:39.000000000 +0100 @@ -2,14 +2,14 @@ <!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/html; charset=UTF-8" /><title>ODBC-combined configuration</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="prepodbc.html" title="Chapter��4.��Preparing ODBC" /><link rel="prev" href="odbcinionly.html" title="ODBC-only configuration" /><link rel="next" href="odbcdiagnose.html" title="Troubleshooting ODBC connections" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ODBC-combined configuration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="odbcinionly.html">Prev</a>��</td><th width="60%" align="center">Chapter��4.�� Preparing ODBC</th><td width="20%" align="right">��<a accesskey="n" href="odbcdiagnose.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="odbcombo"></a>ODBC-combined configuration</h2></div></div></div><p>Like the DSN-less configuration, ODBC-combined keeps server properties in <code class="filename">freetds.conf</code>. The difference is that your applications can refer to the server by its DSN. To make that possible, the DSN entry in <code class="filename">odbc.ini</code> refers to the servername entry in <code class="filename">freetds.conf</code>. </p><div class="example"><a id="e.g.SampleODBCcombo"></a><p class="title"><strong>Example��4.5.��Sample ODBC-combined <code class="filename">odbc.ini</code> file</strong></p><div class="example-contents"><pre class="programlisting"> - [ODBC Data Sources]<a href="#ftn.idm69536240" class="footnote" id="idm69536240"><sup class="footnote">[13]</sup></a> + [ODBC Data Sources]<a href="#ftn.idm69892592" class="footnote" id="idm69892592"><sup class="footnote">[13]</sup></a> JDBCdsn = Sybase JDBC Server [JDBCdsn] Driver = /usr/local/freetds/lib/libtdsodbc.so Description = Sybase JDBC Server Trace = No - Servername = JDBC<a href="#ftn.idm69534832" class="footnote" id="idm69534832"><sup class="footnote">[14]</sup></a> + Servername = JDBC<a href="#ftn.idm69891184" class="footnote" id="idm69891184"><sup class="footnote">[14]</sup></a> Database = pubs2 [Default] @@ -23,4 +23,4 @@ host = jdbc.sybase.com port = 4444 tds version = 5.0 - </pre></div></div><p><br class="example-break" /></p><p>With this arrangement, an application can connect to the server in two ways, via its DSN (<code class="literal">JDBCdsn</code>), or its servername (<code class="literal">JDBC</code>).</p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69536240" class="footnote"><p><a href="#idm69536240" class="para"><sup class="para">[13] </sup></a>Several DSNs might be listed here. In this example, we have only one, <span class="quote">���<span class="quote">JDBCdsn</span>���</span>. It matches the <code class="literal">[JDBCdsn]</code> entry later in the file.</p></div><div id="ftn.idm69534832" class="footnote"><p><a href="#idm69534832" class="para"><sup class="para">[14] </sup></a>Refers to the <code class="literal">[JDBC]</code> entry in <code class="filename">freetds.conf</code>.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="odbcinionly.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="prepodbc.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="odbcdiagnose.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ODBC-only configuration��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Troubleshooting ODBC connections</td></tr></table></div></body></html> \ No newline at end of file + </pre></div></div><p><br class="example-break" /></p><p>With this arrangement, an application can connect to the server in two ways, via its DSN (<code class="literal">JDBCdsn</code>), or its servername (<code class="literal">JDBC</code>).</p><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm69892592" class="footnote"><p><a href="#idm69892592" class="para"><sup class="para">[13] </sup></a>Several DSNs might be listed here. In this example, we have only one, <span class="quote">���<span class="quote">JDBCdsn</span>���</span>. It matches the <code class="literal">[JDBCdsn]</code> entry later in the file.</p></div><div id="ftn.idm69891184" class="footnote"><p><a href="#idm69891184" class="para"><sup class="para">[14] </sup></a>Refers to the <code class="literal">[JDBC]</code> entry in <code class="filename">freetds.conf</code>.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="odbcinionly.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="prepodbc.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="odbcdiagnose.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ODBC-only configuration��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Troubleshooting ODBC connections</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/osissues.html new/freetds-1.3.16/doc/userguide/osissues.html --- old/freetds-1.3.15/doc/userguide/osissues.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/osissues.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>OS-specific Issues</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="build.html" title="Chapter��2.��Build FreeTDS" /><link rel="prev" href="config.html" title="How to build: Configure and make" /><link rel="next" href="install.html" title="Chapter��3.��Install FreeTDS" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">OS-specific Issues</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="config.html">Prev</a>��</td><th width="60%" align="center">Chapter��2.��Build <span class="productname"> FreeTDS</span></th><td width="20%" align="right">��<a accesskey="n" href="install.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="osissues"></a>OS-specific Issues</h2></div></div></div><div class="sidebar"><div class="titlepage"><div><div><p class="title"><strong></strong></p></div></div></div><p>If you've recently built and installed <span class="productname">FreeTDS</span> and noticed steps peculiar to your OS, we'll happily include your comments here.</p><p>One thing that can be said, if it's not too obvious: check with your vendor or favorite download site. <span class="productname">FreeTDS</span> is routinely rolled up into OS install packages. We know of packages for <span class="productname">Debian</span>, <span class="productname">Red Hat</span>, <span class="productname">FreeBSD</span>, and <span class="productname">NetBSD</span>. The installation through the package management systems in these environments may well reduce your work to simply <span class="command"><strong>make install</strong></span>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Windows"></a>Win32 and Win64</h3></div></div></div><p>Officially <span class="productname">FreeTDS</span> for Windows should be compiled using CMake. CMake is able to create project files for different development systems (like Visual C++). Install CMake on your box and point to the source directory to generate wanted files. Refer to CMake documentation on how to do it (I personally use CMake GUI passing source directory and a newly create build directory). -Once project files are created you can open them with your environment.</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm68745328"></a>Other ways to build under Windows��</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>MingW</p></li></ul></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm68743792"></a>Download Windows�� binaries</h4></div></div></div><p>You can download FreeTDS binaries for Windows from AppVeyor (the hosted CI platform used).</p><p>There is a .zip file available as artifact of every sucessful build. +Once project files are created you can open them with your environment.</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69101680"></a>Other ways to build under Windows��</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>MingW</p></li></ul></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69100144"></a>Download Windows�� binaries</h4></div></div></div><p>You can download FreeTDS binaries for Windows from AppVeyor (the hosted CI platform used).</p><p>There is a .zip file available as artifact of every sucessful build. The list of builds is at <a class="ulink" href="https://ci.appveyor.com/project/FreeTDS/freetds/history" target="_top">https://ci.appveyor.com/project/FreeTDS/freetds/history</a>. @@ -14,7 +14,7 @@ you can use this feature with some installer and register the driver as a standard component.</p><p>Once the ODBC driver is registered in the system you can configure it from Control Panel.</p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="VMS"></a>VMS��</h3></div></div></div><p><span class="productname">FreeTDS</span> will probably build and run on most versions of OpenVMS Alpha 7.0 and later with DEC/Compaq C 6.0 or later. Other prerequisites: - </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="application">gunzip</span></td></tr><tr><td><span class="application">vmstar</span></td></tr><tr><td><span class="application">MMS</span> or <span class="application">MMK</span></td></tr></table><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm68759152"></a>Build Instructions</h4></div></div></div><p>Decompress and unpack the source archive using gunzip and vmstar. If + </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="application">gunzip</span></td></tr><tr><td><span class="application">vmstar</span></td></tr><tr><td><span class="application">MMS</span> or <span class="application">MMK</span></td></tr></table><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="idm69115504"></a>Build Instructions</h4></div></div></div><p>Decompress and unpack the source archive using gunzip and vmstar. If you are untarring on an ODS-5 disk, you should use the <em class="parameter"><code>/ODS2</code></em> or <em class="parameter"><code>-o</code></em> option to create universally VMS-friendly filenames; otherwise the build will fail to locate some files.</p><p>Set default to the top-level source directory and run the configuration script:</p><pre class="screen"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/projects.html new/freetds-1.3.16/doc/userguide/projects.html --- old/freetds-1.3.15/doc/userguide/projects.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/projects.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>Current Projects, Language Bindings, and Alternatives</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="what.html" title="Chapter��1.��What is FreeTDS?" /><link rel="prev" href="FreeTDShistory.html" title="History of FreeTDS" /><link rel="next" href="build.html" title="Chapter��2.��Build FreeTDS" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Current Projects, Language Bindings, and Alternatives</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="FreeTDShistory.html">Prev</a>��</td><th wi dth="60%" align="center">Chapter��1.��What is <span class="productname">FreeTDS</span>?</th><td width="20%" align="right">��<a accesskey="n" href="build.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="projects"></a>Current Projects, Language Bindings, and Alternatives</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Current"></a>Current Projects</h3></div></div></div><p><span class="productname">FreeTDS</span> consists of some C libraries.</p><p>The <span class="productname">FreeTDS</span> libraries support three separate <acronym class="acronym">API</acronym>s: <code class="systemitem">DB-Library</code>, <code class="systemitem">CT-Library</code>, and <code class="systemitem">ODBC</code>. Underlying these three is libtds, which handles the low-level details of the <acronym class="acronym">TDS</acronym> protocol, such as sending, receiving, and datatype conversion. This document and the <a class="ulink" href="http://www.freetds.org/" target="_top">FreeTDS</a> website are dedicated to these libraries. -</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Status"></a>Status</h3></div></div></div><p>The libraries are portable, mature, and stable. They're expected to compile readily and normally do not crash or corrupt data. Extensive logging aids in diagnosing problems. While they do not include every feature provided by the vendors' libraries, they do faithfully implement a useful ��� and widely used ��� subset of their <acronym class="acronym">API</acronym>s.</p><p>The <code class="systemitem">DB-Library</code> and <code class="systemitem">CT-Library</code> <acronym class="acronym">API</acronym>s have been usable for several years. They have been successfully substituted for Sybase's own libraries in a variety of venues, including <span class="productname">Perl</span> and <span class="productname">PHP</span>.</p><p>The <code class="systemitem">ODBC</code> driver should be fully ODBC 3.5 compliant.</p><p>Basic <a class="link" href="apireferen ce.html" title="API Reference Manual">API coverage</a> information for all libraries may be found in this manual. It is maintained in <code class="filename">doc/api_status.txt</code>, included in the source distribution.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>For Microsoft servers, <span class="productname">FreeTDS</span> now offers the best <code class="systemitem">DB-Library</code> for any OS on the planet (including Windows!) thanks not only to the hard work of its contributors, but also to Microsoft's<a href="#ftn.idm68491376" class="footnote" id="idm68491376"><sup class="footnote">[3]</sup></a> strategy. It is the only Win64 implementation of <code class="systemitem">DB-Library</code>, and the only Win32 implementation to support modern versions of the protocol. (SQL Server 2008 still accepts the TDS 4.2 connections that Microsoft's old library uses, but rejects BCP uploads with a spurious permission-denied message.) </p></td></tr></table></div><p>In addition to the core <code class="systemitem">DB-Library</code> <acronym class="acronym">API</acronym>, <span class="productname">FreeTDS</span> includes a full implementation of <code class="systemitem">DB-Library</code>'s <acronym class="acronym">bcp</acronym> functions, as well as <span class="command"><strong>freebcp</strong></span>, a replacement for Sybase's <span class="application">bcp</span> utility.</p><p>How big is it? <span class="productname">FreeTDS</span> has over 100,000 lines of C code, maintained by a handful of developers. Patches arrive irregularly, varying in size from one-liners to thousand-line monsters. Almost all are applied or used in some way. The mailing list has some 700 or so subscribers at this writing. Safe to say, <span class="pr oductname">FreeTDS</span>'s success so far lies somewhere between the Beetle and the Edsel.</p><p>Who uses it? Oh, pretty much everyone. <span class="productname">FreeTDS</span> users number in the tens of thousands. It's used by large corporations, by the U.S. federal government (e.g. <a class="ulink" href="http://www.ncbi.nlm.nih.gov/books/bv.fcgi?rid=toolkit.chapter.ch_dbapi" target="_top">Database Access Library</a> at the National Center for Biotechnology Information) and, judging by the mailing list, by many webservers running Apache and PHP. Sybase recommends <span class="productname">FreeTDS</span> for their EAServer product. Microsoft recommends <span class="productname">FreeTDS</span> to their customers who want access to Microsoft SQL Server from non-Win32 clients. So do we.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Languages"></a>Languages besides C</h3></div></div></div><p>You may be wondering how these libraries fit wit h Perl, PHP, TCL, Python, or other popular scripting languages. Most of these languages have bindings to Sybase that use either the <code class="systemitem">DB-Library</code> or <code class="systemitem">CT-Library</code> <acronym class="acronym">API</acronym>, for which <span class="productname">FreeTDS</span> is intended as a drop-in replacement. For instance, Michael Peppler's <code class="systemitem">DBD::Sybase</code> works very well using <span class="productname">FreeTDS</span> to access Sybase or Microsoft <span class="productname">SQL Server</span>s. <span class="productname">PHP</span> has options for <code class="filename">sybase</code> (<code class="systemitem">DB-Library</code>) and <code class="filename">sybase-ct</code> (<code class="systemitem">CT-Library</code>) <acronym class="acronym">API</acronym>s.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="alternatives"></a>Alternatives</h3></div></div></div><div class="variablelist" ><a id="tab.alternatives"></a><p class="title"><strong>Should <span class="productname">FreeTDS</span> not suit your needs, some alternatives</strong></p><dl class="variablelist"><dt><span class="term">jTDS</span></dt><dd><p>If Java is your game, we refer you to the +</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Status"></a>Status</h3></div></div></div><p>The libraries are portable, mature, and stable. They're expected to compile readily and normally do not crash or corrupt data. Extensive logging aids in diagnosing problems. While they do not include every feature provided by the vendors' libraries, they do faithfully implement a useful ��� and widely used ��� subset of their <acronym class="acronym">API</acronym>s.</p><p>The <code class="systemitem">DB-Library</code> and <code class="systemitem">CT-Library</code> <acronym class="acronym">API</acronym>s have been usable for several years. They have been successfully substituted for Sybase's own libraries in a variety of venues, including <span class="productname">Perl</span> and <span class="productname">PHP</span>.</p><p>The <code class="systemitem">ODBC</code> driver should be fully ODBC 3.5 compliant.</p><p>Basic <a class="link" href="apireferen ce.html" title="API Reference Manual">API coverage</a> information for all libraries may be found in this manual. It is maintained in <code class="filename">doc/api_status.txt</code>, included in the source distribution.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>For Microsoft servers, <span class="productname">FreeTDS</span> now offers the best <code class="systemitem">DB-Library</code> for any OS on the planet (including Windows!) thanks not only to the hard work of its contributors, but also to Microsoft's<a href="#ftn.idm68868208" class="footnote" id="idm68868208"><sup class="footnote">[3]</sup></a> strategy. It is the only Win64 implementation of <code class="systemitem">DB-Library</code>, and the only Win32 implementation to support modern versions of the protocol. (SQL Server 2008 still accepts the TDS 4.2 connections that Microsoft's old library uses, but rejects BCP uploads with a spurious permission-denied message.) </p></td></tr></table></div><p>In addition to the core <code class="systemitem">DB-Library</code> <acronym class="acronym">API</acronym>, <span class="productname">FreeTDS</span> includes a full implementation of <code class="systemitem">DB-Library</code>'s <acronym class="acronym">bcp</acronym> functions, as well as <span class="command"><strong>freebcp</strong></span>, a replacement for Sybase's <span class="application">bcp</span> utility.</p><p>How big is it? <span class="productname">FreeTDS</span> has over 100,000 lines of C code, maintained by a handful of developers. Patches arrive irregularly, varying in size from one-liners to thousand-line monsters. Almost all are applied or used in some way. The mailing list has some 700 or so subscribers at this writing. Safe to say, <span class="pr oductname">FreeTDS</span>'s success so far lies somewhere between the Beetle and the Edsel.</p><p>Who uses it? Oh, pretty much everyone. <span class="productname">FreeTDS</span> users number in the tens of thousands. It's used by large corporations, by the U.S. federal government (e.g. <a class="ulink" href="http://www.ncbi.nlm.nih.gov/books/bv.fcgi?rid=toolkit.chapter.ch_dbapi" target="_top">Database Access Library</a> at the National Center for Biotechnology Information) and, judging by the mailing list, by many webservers running Apache and PHP. Sybase recommends <span class="productname">FreeTDS</span> for their EAServer product. Microsoft recommends <span class="productname">FreeTDS</span> to their customers who want access to Microsoft SQL Server from non-Win32 clients. So do we.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Languages"></a>Languages besides C</h3></div></div></div><p>You may be wondering how these libraries fit wit h Perl, PHP, TCL, Python, or other popular scripting languages. Most of these languages have bindings to Sybase that use either the <code class="systemitem">DB-Library</code> or <code class="systemitem">CT-Library</code> <acronym class="acronym">API</acronym>, for which <span class="productname">FreeTDS</span> is intended as a drop-in replacement. For instance, Michael Peppler's <code class="systemitem">DBD::Sybase</code> works very well using <span class="productname">FreeTDS</span> to access Sybase or Microsoft <span class="productname">SQL Server</span>s. <span class="productname">PHP</span> has options for <code class="filename">sybase</code> (<code class="systemitem">DB-Library</code>) and <code class="filename">sybase-ct</code> (<code class="systemitem">CT-Library</code>) <acronym class="acronym">API</acronym>s.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="alternatives"></a>Alternatives</h3></div></div></div><div class="variablelist" ><a id="tab.alternatives"></a><p class="title"><strong>Should <span class="productname">FreeTDS</span> not suit your needs, some alternatives</strong></p><dl class="variablelist"><dt><span class="term">jTDS</span></dt><dd><p>If Java is your game, we refer you to the <a class="ulink" href="http://sourceforge.net/projects/jtds/" target="_top">jTDS</a> project on SourceForge. It is a fork of the <span class="productname">FreeTDS/JDBC</span> project, by Craig Spannring, and is a free, native 100% Java implementation of a Type 4 <acronym class="acronym">JDBC</acronym> driver.</p></dd><dt><span class="term">Sybase OpenClient</span></dt><dd><p>In the time since <span class="productname">FreeTDS</span> was started, Sybase (as well as most major <acronym class="acronym">DBMS</acronym> vendors) has released its database for the Intel <span class="productname"><acronym class="acronym">GNU</acronym>/Linux</span> platform. The good: it is a solid product and supports <acronym class="acronym">TDS</acronym> 4.2 and <acronym class="acronym">TDS</acronym> 5.0. The bad: it doesn't support <acronym class="acronym">TDS 7.0</acronym> or Linux/*BSD on non-Intel platforms. The ugly: Microsoft broke date handling for big endian Sybase clients.</p><p>Depending on platform, it may cost something.</p></dd><dt><span class="term"><code class="systemitem">ODBC</code> bridge products</span>< /dt><dd><p>They use the <code class="systemitem">ODBC</code> driver on the NT box where your <span class="productname">SQL Server</span> runs so you'll never have trouble with new protocols and the like. On the downside, they can be costly and may be inefficient. We know of <span class="productname">EasySoft ODBC-ODBC Bridge</span> from <a class="ulink" href="http://www.easysoft.com" target="_top">EasySoft</a>, <span class="productname">Universal Data Access Driver</span> from <a class="ulink" href="http://www.openlinksw.com" target="_top">OpenLink Software</a>, <span class="productname">SequeLink</span> from <a class="ulink" href="http://www.merant.com/" target="_top">Merant</a>, and - <span class="application"><code class="systemitem">ODBC</code> Router</span> from <a class="ulink" href="http://www.augsoft.com/" target="_top">August Software</a> Corporation.</p></dd><dt><span class="term">Inline <code class="systemitem">ODBC</code> driver</span></dt><dd><p>Based on <code class="systemitem">libtds</code>, this is a native <code class="systemitem">ODBC</code> driver for i386 *nix. It is free in price, but comes only as a binary at the present time.</p></dd><dt><span class="term">DBD::Proxy</span></dt><dd><p>We have no direct experience with this Perl-only option. It has the same caveats as an <code class="systemitem">ODBC</code> bridge except it's free.</p></dd></dl></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm68491376" class="footnote"><p><a href="#idm68491376" class="para"><sup class="para">[3] </sup></a>Microsoft ceased enhancing <code class="systemitem">DB-Library</code> in 2001, advisi ng customers to <span class="quote">���<span class="quote">avoid using <code class="systemitem">DB-Library</code></span>���</span>. For Microsoft's unmaintained product, that's good advice. But if the <code class="systemitem">DB-Library</code> specification meets your needs, <span class="productname">FreeTDS</span> permits you to keep using it with little loss (and some gain) of functionality. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="FreeTDShistory.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="what.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="build.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">History of <span class="productname">FreeTDS</span>��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��2.��Build <span class="productname">FreeTDS</span></td></tr></table></div></body></html> \ No newline at end of file + <span class="application"><code class="systemitem">ODBC</code> Router</span> from <a class="ulink" href="http://www.augsoft.com/" target="_top">August Software</a> Corporation.</p></dd><dt><span class="term">Inline <code class="systemitem">ODBC</code> driver</span></dt><dd><p>Based on <code class="systemitem">libtds</code>, this is a native <code class="systemitem">ODBC</code> driver for i386 *nix. It is free in price, but comes only as a binary at the present time.</p></dd><dt><span class="term">DBD::Proxy</span></dt><dd><p>We have no direct experience with this Perl-only option. It has the same caveats as an <code class="systemitem">ODBC</code> bridge except it's free.</p></dd></dl></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm68868208" class="footnote"><p><a href="#idm68868208" class="para"><sup class="para">[3] </sup></a>Microsoft ceased enhancing <code class="systemitem">DB-Library</code> in 2001, advisi ng customers to <span class="quote">���<span class="quote">avoid using <code class="systemitem">DB-Library</code></span>���</span>. For Microsoft's unmaintained product, that's good advice. But if the <code class="systemitem">DB-Library</code> specification meets your needs, <span class="productname">FreeTDS</span> permits you to keep using it with little loss (and some gain) of functionality. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="FreeTDShistory.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="what.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="build.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">History of <span class="productname">FreeTDS</span>��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��2.��Build <span class="productname">FreeTDS</span></td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/rtl.define.library.html new/freetds-1.3.16/doc/userguide/rtl.define.library.html --- old/freetds-1.3.15/doc/userguide/rtl.define.library.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/rtl.define.library.html 2022-12-09 10:01:41.000000000 +0100 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>What is a C library?</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="rtl.html" title="Appendix��A.��On Linkers" /><link rel="prev" href="rtl.html" title="Appendix��A.��On Linkers" /><link rel="next" href="linker.library.check.html" title="Checking if a Library Provides a Function" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">What is a C library?</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="rtl.html">Prev</a>��</td><th width="60%" align="center">Appendix��A.��On Linkers</th><td width="20%" align="right">��<a accesskey="n" href="linker.library.check.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="rtl.define.library"></a>What is a C library?</h2></div></div></div><p>A C library is a set of named functions, for example <code class="literal">dbinit()</code> or <code class="literal">SQLConnect()</code>. Or, for that matter, <code class="literal">fopen(3)</code><a href="#ftn.idm72132848" class="footnote" id="idm72132848"><sup class="footnote">[34]</sup></a>. </p><p>Libraries come in two flavors: <em class="firstterm">static</em> and <em class="firstterm">dynamic</em>. </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="rtl.define.library.static"></a>Static libraries</h3></div></div></div><p>Static libraries (also known as <em class="firstterm">archives</em>) have been around as long as C itself. Like a <code class="literal">.zip</code > file, they're just a bag of object files ��� containing functions, of course ��� with a table of contents in front giving the address of each name<a href="#ftn.idm72136688" class="footnote" id="idm72136688"><sup class="footnote">[35]</sup></a>. Static libraries are created from object files using a <em class="firstterm">librarian</em> utility of some kind. One such programs is <span class="command"><strong>ar</strong></span>, for <span class="emphasis"><em>archive</em></span>. </p><p>Static libraries are part of the build environment. Functions in static libraries are joined to a program's main module by a <em class="firstterm">static linker</em> at build time to produce an executable program. The executable incorporates the libraries' object code into its own body, making it completely self-sufficient. </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="rtl.define.library.dynamic"></a>Dynamic libraries</h3></div></div></div><p>Dynamic li braries are the new kid on the block, as these things go, arriving on the Unix scene circa 1985. Like a static library, a dynamic library is a collection of functions with a table of contents. They are referenced at build time to give the executatble information about how they will eventually be used, but they aren't <span class="emphasis"><em>used</em></span> until run time. </p><p>Dynamic libraries are part of the run-time environment. When a program is run, the run-time linker finds the dynamic libraries needed by the program, finds the addresses of the required functions, and assembles a runable image in memory. Missing libraries and/or missing functions ��� or the wrong versions of them ��� can lead to head-scratching and other amusing behavior. </p><p>In Windows�� dynamic libraries are called <em class="firstterm">dynamic link libraries</em> (DLLs). In Unix they're normally called <em class="firstterm">shared objects</em>. But they're roughly the same thing. </p><d iv class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: What about .h files?"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">What about <code class="literal">.h</code> files?</th></tr><tr><td align="left" valign="top"><p>C header files include <em class="firstterm">functional prototypes</em>, declarations (not <span class="emphasis"><em>definitions)</em></span> of functions. Functional prototypes describe to the compiler each function's parameters, allowing the compiler to confirm that the function is being called correctly. </p><p>Most of the functions declared in header files are implemented in libraries. However, there's <span class="emphasis"><em>no mechanical or automatic relationship</em></span> between the functional prototypes in the header files and their implementation in a library. The <code class="literal">.h</code> file is maintained by hand, by t he programmer, and is used to generate a library. The header file and associated library are distributed and installed together (one hopes), but correct installation and subsequent use by the compiler & linker require human beings to keep track of the pair. Failure to do so leads to <span class="quote">���<span class="quote">interesting</span>���</span> development and even run-time problems, especially with libraries whose functions' parameters change from version to version. </p><p>For example, imagine a function <code class="literal">f(int g)</code> defined in library <code class="filename">libf.so</code> and declared in <code class="filename">f.h</code>. In a later version of <code class="filename">libf.so</code>, the function's parameter is changed to use a pointer, <code class="literal">f(int *p)</code>, and <code class="filename">f.h</code> is likewise updated. Possible errors that cannot be prevented by the linker include: +<!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/html; charset=UTF-8" /><title>What is a C library?</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="rtl.html" title="Appendix��A.��On Linkers" /><link rel="prev" href="rtl.html" title="Appendix��A.��On Linkers" /><link rel="next" href="linker.library.check.html" title="Checking if a Library Provides a Function" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">What is a C library?</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="rtl.html">Prev</a>��</td><th width="60%" align="center">Appendix��A.��On Linkers</th><td width="20%" align="right">��<a accesskey="n" href="linker.library.check.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="rtl.define.library"></a>What is a C library?</h2></div></div></div><p>A C library is a set of named functions, for example <code class="literal">dbinit()</code> or <code class="literal">SQLConnect()</code>. Or, for that matter, <code class="literal">fopen(3)</code><a href="#ftn.idm72485104" class="footnote" id="idm72485104"><sup class="footnote">[34]</sup></a>. </p><p>Libraries come in two flavors: <em class="firstterm">static</em> and <em class="firstterm">dynamic</em>. </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="rtl.define.library.static"></a>Static libraries</h3></div></div></div><p>Static libraries (also known as <em class="firstterm">archives</em>) have been around as long as C itself. Like a <code class="literal">.zip</code > file, they're just a bag of object files ��� containing functions, of course ��� with a table of contents in front giving the address of each name<a href="#ftn.idm72501232" class="footnote" id="idm72501232"><sup class="footnote">[35]</sup></a>. Static libraries are created from object files using a <em class="firstterm">librarian</em> utility of some kind. One such programs is <span class="command"><strong>ar</strong></span>, for <span class="emphasis"><em>archive</em></span>. </p><p>Static libraries are part of the build environment. Functions in static libraries are joined to a program's main module by a <em class="firstterm">static linker</em> at build time to produce an executable program. The executable incorporates the libraries' object code into its own body, making it completely self-sufficient. </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="rtl.define.library.dynamic"></a>Dynamic libraries</h3></div></div></div><p>Dynamic li braries are the new kid on the block, as these things go, arriving on the Unix scene circa 1985. Like a static library, a dynamic library is a collection of functions with a table of contents. They are referenced at build time to give the executatble information about how they will eventually be used, but they aren't <span class="emphasis"><em>used</em></span> until run time. </p><p>Dynamic libraries are part of the run-time environment. When a program is run, the run-time linker finds the dynamic libraries needed by the program, finds the addresses of the required functions, and assembles a runable image in memory. Missing libraries and/or missing functions ��� or the wrong versions of them ��� can lead to head-scratching and other amusing behavior. </p><p>In Windows�� dynamic libraries are called <em class="firstterm">dynamic link libraries</em> (DLLs). In Unix they're normally called <em class="firstterm">shared objects</em>. But they're roughly the same thing. </p><d iv class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: What about .h files?"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">What about <code class="literal">.h</code> files?</th></tr><tr><td align="left" valign="top"><p>C header files include <em class="firstterm">functional prototypes</em>, declarations (not <span class="emphasis"><em>definitions)</em></span> of functions. Functional prototypes describe to the compiler each function's parameters, allowing the compiler to confirm that the function is being called correctly. </p><p>Most of the functions declared in header files are implemented in libraries. However, there's <span class="emphasis"><em>no mechanical or automatic relationship</em></span> between the functional prototypes in the header files and their implementation in a library. The <code class="literal">.h</code> file is maintained by hand, by t he programmer, and is used to generate a library. The header file and associated library are distributed and installed together (one hopes), but correct installation and subsequent use by the compiler & linker require human beings to keep track of the pair. Failure to do so leads to <span class="quote">���<span class="quote">interesting</span>���</span> development and even run-time problems, especially with libraries whose functions' parameters change from version to version. </p><p>For example, imagine a function <code class="literal">f(int g)</code> defined in library <code class="filename">libf.so</code> and declared in <code class="filename">f.h</code>. In a later version of <code class="filename">libf.so</code>, the function's parameter is changed to use a pointer, <code class="literal">f(int *p)</code>, and <code class="filename">f.h</code> is likewise updated. Possible errors that cannot be prevented by the linker include: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>An old program could use the new library. Probably the integer it passes will be interpreted as an out-of-bounds address, resulting in a segmentation violation. </p></li><li class="listitem"><p>A new program could use the old library, passing an address that the library interprets as an integer. Hillarity ensues. </p></li><li class="listitem"><p>Existing source code could be compiled using the old header file but linked to the new library. If you've never done that, give it time. </p></li></ol></div><p> -These errors are possible because C functions are identified to the linker <span class="emphasis"><em>by name only</em></span>. On the upside, that makes the tools simple and easy to implement and, by the same token, simplifies the use of C libraries by other languages. The downside is that the work of ensuring that the right libraries are used becomes an administrative task instead of a technical one. </p></td></tr></table></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm72132848" class="footnote"><p><a href="#idm72132848" class="para"><sup class="para">[34] </sup></a>The Unix convention is to put in parentheses behind the name the section of the manual in which the function is documented. <span class="productname">FreeTDS</span> functions don't get numbers because they're not in the manual. Yet. </p></div><div id="ftn.idm72136688" class="footnote"><p><a href="#idm72136688" class="para"><sup class="para">[35] </ sup></a>Or, depending on how you look at it, the name of each address.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="rtl.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="rtl.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="linker.library.check.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix��A.��On Linkers��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Checking if a Library Provides a Function</td></tr></table></div></body></html> \ No newline at end of file +These errors are possible because C functions are identified to the linker <span class="emphasis"><em>by name only</em></span>. On the upside, that makes the tools simple and easy to implement and, by the same token, simplifies the use of C libraries by other languages. The downside is that the work of ensuring that the right libraries are used becomes an administrative task instead of a technical one. </p></td></tr></table></div></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm72485104" class="footnote"><p><a href="#idm72485104" class="para"><sup class="para">[34] </sup></a>The Unix convention is to put in parentheses behind the name the section of the manual in which the function is documented. <span class="productname">FreeTDS</span> functions don't get numbers because they're not in the manual. Yet. </p></div><div id="ftn.idm72501232" class="footnote"><p><a href="#idm72501232" class="para"><sup class="para">[35] </ sup></a>Or, depending on how you look at it, the name of each address.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="rtl.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="rtl.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="linker.library.check.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix��A.��On Linkers��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Checking if a Library Provides a Function</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/rtl.html new/freetds-1.3.16/doc/userguide/rtl.html --- old/freetds-1.3.15/doc/userguide/rtl.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/rtl.html 2022-12-09 10:01:41.000000000 +0100 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>Appendix��A.��On Linkers</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="Contributors.html" title="Contributors" /><link rel="next" href="rtl.define.library.html" title="What is a C library?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix��A.��On Linkers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Contributors.html">Prev</a>��</td><th width="60%" align="center">��</th><td width="20%" align="right">��<a acce sskey="n" href="rtl.define.library.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="rtl"></a>Appendix��A.��On Linkers</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="rtl.html#rtl.define.function">What is a C function?</a></span></dt><dt><span class="section"><a href="rtl.define.library.html">What is a C library?</a></span></dt><dd><dl><dt><span class="section"><a href="rtl.define.library.html#rtl.define.library.static">Static libraries</a></span></dt><dt><span class="section"><a href="rtl.define.library.html#rtl.define.library.dynamic">Dynamic libraries</a></span></dt></dl></dd><dt><span class="section"><a href="linker.library.check.html">Checking if a Library Provides a Function</a></span></dt><dt><span class="section"><a href="linker.how.html">How Dost Thy Linker Link? </a></span></dt><dd><dl><dt><span class="section"><a href ="linker.how.html#idm72188272">Static Linker</a></span></dt><dt><span class="section"><a href="linker.how.html#linker.dynamic">Dynamic Linker</a></span></dt></dl></dd><dt><span class="section"><a href="linker.conclusion.html">Keep in Mind</a></span></dt></dl></div><div class="abstract"><p class="title"><strong>Abstract</strong></p><p><span class="productname">FreeTDS</span> is a library, obviously, its functions invoked by an application. How the application finds the library can be mysterious. In the interest of making <span class="productname">FreeTDS</span> easier to use, this appendix discusses how it all works. </p><p>This appendix focusses on <span class="emphasis"><em>using</em></span> <span class="productname">FreeTDS</span> in your application. It isn't intended to help in building <span class="productname">FreeTDS</span>, although the background information it provides might be useful. </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="rtl.define.function"></a>What is a C function?</h2></div></div></div><p>A C function is a named bit of code.</p><p>A C compiler recognizes function names in source code by parsing the C language. When it encounters a function name, it looks for a <span class="emphasis"><em>definition</em></span> for the function ��� i.e. actual code implementing it ��� in the current file. If it finds one, it creates machine instructions to push any parameters on the stack, jump to the named address, and clear the stack after the functions returns. If it doesn't find one, it shrugs<a href="#ftn.idm72116720" class="footnote" id="idm72116720"><sup class="footnote">[33]</sup></a> and adds that name to the list of names to be <em class="firstterm">resolved</em> later. We'll get to what that means in a minute. </p><p>The compiler's job ends where the linker's begins. +<!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/html; charset=UTF-8" /><title>Appendix��A.��On Linkers</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="index.html" title="FreeTDS User Guide" /><link rel="prev" href="Contributors.html" title="Contributors" /><link rel="next" href="rtl.define.library.html" title="What is a C library?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix��A.��On Linkers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Contributors.html">Prev</a>��</td><th width="60%" align="center">��</th><td width="20%" align="right">��<a acce sskey="n" href="rtl.define.library.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="rtl"></a>Appendix��A.��On Linkers</h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="rtl.html#rtl.define.function">What is a C function?</a></span></dt><dt><span class="section"><a href="rtl.define.library.html">What is a C library?</a></span></dt><dd><dl><dt><span class="section"><a href="rtl.define.library.html#rtl.define.library.static">Static libraries</a></span></dt><dt><span class="section"><a href="rtl.define.library.html#rtl.define.library.dynamic">Dynamic libraries</a></span></dt></dl></dd><dt><span class="section"><a href="linker.library.check.html">Checking if a Library Provides a Function</a></span></dt><dt><span class="section"><a href="linker.how.html">How Dost Thy Linker Link? </a></span></dt><dd><dl><dt><span class="section"><a href ="linker.how.html#idm72540528">Static Linker</a></span></dt><dt><span class="section"><a href="linker.how.html#linker.dynamic">Dynamic Linker</a></span></dt></dl></dd><dt><span class="section"><a href="linker.conclusion.html">Keep in Mind</a></span></dt></dl></div><div class="abstract"><p class="title"><strong>Abstract</strong></p><p><span class="productname">FreeTDS</span> is a library, obviously, its functions invoked by an application. How the application finds the library can be mysterious. In the interest of making <span class="productname">FreeTDS</span> easier to use, this appendix discusses how it all works. </p><p>This appendix focusses on <span class="emphasis"><em>using</em></span> <span class="productname">FreeTDS</span> in your application. It isn't intended to help in building <span class="productname">FreeTDS</span>, although the background information it provides might be useful. </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="rtl.define.function"></a>What is a C function?</h2></div></div></div><p>A C function is a named bit of code.</p><p>A C compiler recognizes function names in source code by parsing the C language. When it encounters a function name, it looks for a <span class="emphasis"><em>definition</em></span> for the function ��� i.e. actual code implementing it ��� in the current file. If it finds one, it creates machine instructions to push any parameters on the stack, jump to the named address, and clear the stack after the functions returns. If it doesn't find one, it shrugs<a href="#ftn.idm72464880" class="footnote" id="idm72464880"><sup class="footnote">[33]</sup></a> and adds that name to the list of names to be <em class="firstterm">resolved</em> later. We'll get to what that means in a minute. </p><p>The compiler's job ends where the linker's begins. </p><div class="itemizedlist"><p class="title"><strong>Compiler's job</strong></p><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Convert source code into object code </p></li><li class="listitem"><p>Put in jumps to defined functions </p></li><li class="listitem"><p>Create a list of defined functions, and their addresses </p></li><li class="listitem"><p>Create a list of undefined functions </p></li></ul></div><p> The <span class="command"><strong>nm</strong></span> utility displays function names. Here are the ones defined by <code class="filename">bsqldb.c</code> (in <code class="filename">bsqsldb.o</code>): @@ -40,4 +40,4 @@ U dbaltlen</code></pre><p> Two things to note. First, the functions defined by <code class="filename">bsqldb.o</code> have addresses, and undefined functions don't. Second, <span class="emphasis"><em>only the name</em></span> identifies the function. It's been that way since about 1978, and it's one reason C libraries are so useful: to find a function, the tool need only <em class="firstterm">resolve the name</em>, i.e. convert the name into an address. The caller (the programmer, really) has to know the function's inputs and semantics (how it behaves), but the tool's job is bone simple. Which turns out to be quite handy. - </p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm72116720" class="footnote"><p><a href="#idm72116720" class="para"><sup class="para">[33] </sup></a>You have to watch carefully. Modern compilers shrug quickly. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Contributors.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="rtl.define.library.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Contributors��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��What is a C library?</td></tr></table></div></body></html> \ No newline at end of file + </p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm72464880" class="footnote"><p><a href="#idm72464880" class="para"><sup class="para">[33] </sup></a>You have to watch carefully. Modern compilers shrug quickly. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Contributors.html">Prev</a>��</td><td width="20%" align="center">��</td><td width="40%" align="right">��<a accesskey="n" href="rtl.define.library.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Contributors��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��What is a C library?</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/samplecode.html new/freetds-1.3.16/doc/userguide/samplecode.html --- old/freetds-1.3.15/doc/userguide/samplecode.html 2022-11-22 10:01:42.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/samplecode.html 2022-12-09 10:01:41.000000000 +0100 @@ -5,7 +5,7 @@ </p><div class="itemizedlist"><p class="title"><strong>Files Required to Build the Sample Code</strong></p><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="filename">sybfront.h</code></p></li><li class="listitem"><p><code class="filename">sybdb.h </code></p></li><li class="listitem"><p><code class="filename">libsybdb.a</code> or <code class="filename">libsybdb.so</code></p></li></ul></div><p> Your library's extension may vary according to your operating system.</p><p>The source code may be built with commands similar to these. The precise options and paths depend on your particular system. The commands below work with the GNU compiler and linker on an ELF system with dynamic linking, common on Linux and BSD systems. - </p><div class="example"><a id="idm71758320"></a><p class="title"><strong>Example��11.1.��Building the Sample Code</strong></p><div class="example-contents"><pre class="screen"> + </p><div class="example"><a id="idm72118768"></a><p class="title"><strong>Example��11.1.��Building the Sample Code</strong></p><div class="example-contents"><pre class="screen"> <code class="prompt">$ </code><strong class="userinput"><code>../doc/grep_sample_code ../doc/userguide.xml > sample.c</code></strong> <code class="prompt">$ </code><strong class="userinput"><code>cc -I /usr/local/include -Wl,-L/usr/local/lib -Wl,-R/usr/local/lib sample.c -lsybdb -o sample</code></strong></pre></div></div><p><br class="example-break" /> where <code class="filename">/usr/local/include</code> and <code class="filename">/usr/local/lib</code> are respectively the locations of your header files and libraries.</p><p>We now proceed to the code proper.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="samplecode.include"></a>Header files</h3></div></div></div><div class="abstract"><p class="title"><strong>Abstract</strong></p><p>We need two header files to use <code class="systemitem">DB-Library</code>. We need a few others to deal with I/O in C, as you know. Also declare the error and message handler functions, more about which later.</p></div><div class="example"><a id="e.g.samplecode.dblib.include"></a><p class="title"><strong>Example��11.2.��Sample Code: <code class="systemitem">DB-Library</code> header files</strong></p><div class="example-contents"><pre class="programlisting"> @@ -135,7 +135,7 @@ <span class="symbol">NO_MORE_ROWS</span>, <span class="symbol">BUF_FULL</span>, or <span class="symbol">FAIL</span>. - </td><td align="left">Places fetched data into bound columns, if any. </td></tr></tbody></table></div></div><p><br class="table-break" /></p><h4><a id="samplecode.results.binding"></a>Binding</h4><p>Each time <span class="symbol">dbresults()</span> returns <span class="symbol">SUCCEED</span>, there is something to retrieve. <code class="systemitem">DB-Library</code> has different functions to deal with the different kinds of results. The functions are of two kinds: those that convert the data into a form desired by the application, known as <em class="firstterm">binding</em>, and those that return the data in <span class="quote">���<span class="quote">native</span>���</span> form.</p><p>To understand binding, it may be easiest to examine two primitive functions, <code class="function">dbdata()</code> and <code class="function">dbconvert()</code>. <code class="function">dbdata()</code> returns a pointer to the column's data. The data to which it points are in <span clas s="quote">���<span class="quote">native</span>���</span> form, 4 bytes for an <span class="symbol">INT</span>, 8 bytes for a <span class="symbol">DATETIME</span> and so on. <code class="function">dbconvert()</code> converts between datatypes; you can hand it an integer and get back a character array (or a <span class="symbol">C double</span>. You might think of <code class="function">dbconvert()</code> as <code class="function">atoi(3)</code> on steroids). <code class="function">dbbind()</code> combines these two functions. The application indicates in what form it would like to use each column, and the library converts them on the fly as each row is read.</p><p>To <span class="emphasis"><em>bind a column</em></span> is to provide a buffer to <code class="systemitem">DB-Library</code> for it to fill, and indicate which datatype the buffer is meant to hold. <a href="#ftn.idm71893104" class="footnote" id="idm71893104"><sup class="footnote">[29]</sup></a></p><p>It may be well to p ause here to observe the three ways a datatype is described in a <code class="systemitem">DB-Library</code> program. + </td><td align="left">Places fetched data into bound columns, if any. </td></tr></tbody></table></div></div><p><br class="table-break" /></p><h4><a id="samplecode.results.binding"></a>Binding</h4><p>Each time <span class="symbol">dbresults()</span> returns <span class="symbol">SUCCEED</span>, there is something to retrieve. <code class="systemitem">DB-Library</code> has different functions to deal with the different kinds of results. The functions are of two kinds: those that convert the data into a form desired by the application, known as <em class="firstterm">binding</em>, and those that return the data in <span class="quote">���<span class="quote">native</span>���</span> form.</p><p>To understand binding, it may be easiest to examine two primitive functions, <code class="function">dbdata()</code> and <code class="function">dbconvert()</code>. <code class="function">dbdata()</code> returns a pointer to the column's data. The data to which it points are in <span clas s="quote">���<span class="quote">native</span>���</span> form, 4 bytes for an <span class="symbol">INT</span>, 8 bytes for a <span class="symbol">DATETIME</span> and so on. <code class="function">dbconvert()</code> converts between datatypes; you can hand it an integer and get back a character array (or a <span class="symbol">C double</span>. You might think of <code class="function">dbconvert()</code> as <code class="function">atoi(3)</code> on steroids). <code class="function">dbbind()</code> combines these two functions. The application indicates in what form it would like to use each column, and the library converts them on the fly as each row is read.</p><p>To <span class="emphasis"><em>bind a column</em></span> is to provide a buffer to <code class="systemitem">DB-Library</code> for it to fill, and indicate which datatype the buffer is meant to hold. <a href="#ftn.idm72249456" class="footnote" id="idm72249456"><sup class="footnote">[29]</sup></a></p><p>It may be well to p ause here to observe the three ways a datatype is described in a <code class="systemitem">DB-Library</code> program. </p><div class="variablelist"><a id="list.datatypes"></a><p class="title"><strong><code class="systemitem">DB-Library</code> Datatype Descriptors</strong></p><dl class="variablelist"><dt><span class="term">Sever Datatype</span></dt><dd><p>Describes the data as an abstract type, not representing any particular kind of storage. <span class="symbol">SYBREAL</span>, for example, doesn't imply any particular arrangement of bits; it just means <span class="quote">���<span class="quote">a floating-point datatype corresponding to the <span class="symbol">T-SQL REAL</span> type on the server.</span>���</span> These all begin with <span class="symbol">SYB</span>, e.g. <span class="symbol">SYBINT4</span>.</p></dd><dt><span class="term">Program Variable Datatype</span></dt><dd><p>Defines a <span class="symbol">C</span> variable in a machine-independent way. Because a <span class="symbol">C</span> defines its <span class="symbol">int</span> type according the CPU architecture, it may have 2, 4, 8, or some other number of bytes. A <span class="symbol">DBINT</span> on the other hand, is guaranteed to be 4 bytes and, as such, assuredly will hold any value returned by the server from a <span class="symbol">T-SQL INT</span> column. These all begin with <span class="symbol">DB</span>, e.g. <span class="symbol">DBREAL</span>.</p></dd><dt><span class="term">Bind Type</span></dt><dd><p>Prescribes a conversion operation. Indicates to <code class="function">dbbind()</code> the <span class="emphasis"><em>Program Variable Datatype</em></span> defined by the target buffer. Sybase and Microsoft call this the <span class="quote">���<span class="quote">vartype</span>���</span>. These all <span class="emphasis"><em>end</em></span> with <span class="symbol">BIND</span>, e.g. <span class="symbol">STRINGBIND</span>.</p></dd></dl></div><p>Typically it's convenient to have <code class="systemitem">DB-Library</code> convert the data into the desired form. The function that does that is <code class="function">dbind()</code>. So: after fetching the metadata, and before fetching the data, we usually prepare the bound columns.</p><h4><a id="samplecode.results.fetching.data"></a>Fetching Data</h4><p> </p><div class="table"><a id="tab.data.fetching.functions"></a><p class="title"><strong>Table��11.6.��Data-fetching functions</strong></p><div class="table-contents"><table class="table" summary="Data-fetching functions" border="1"><colgroup><col align="left" class="type" /><col align="left" class="reg" /><col align="left" class="comp" /><col align="left" class="ret" /><col align="left" class="out" /></colgroup><thead><tr><th align="left">Type</th><th align="left">Regular rows</th><th align="left">Compute rows</th><th align="left">Return status</th><th align="left"><span class="symbol">OUTPUT</span> parameters</th></tr></thead><tbody><tr><td align="left">Meta </td><td align="left"><code class="function">dbnumcols()</code> </td><td align="left"> <code class="function">d bnumcompute()</code>, <code class="function">dbnumalts()</code>, <code class="function">dbaltop()</code>, @@ -266,7 +266,7 @@ exit(0); } </pre></div></div><p><br class="example-break" /> - </p><div class="calloutlist"><a id="co.fetching"></a><p class="title"><strong>Data-fetching Notes</strong></p><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbresults"><span><img src="images/callouts/1.png" alt="1" border="0" /></span></a> </p></td><td valign="top" align="left"><p>As soon as <code class="function">dbresults()</code> reports <span class="symbol">SUCCESS</span>, the row's metadata are available.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.c"><span><img src="images/callouts/2.png" alt="2" border="0" /></span></a> </p></td><td valign="top" align="left"><p><code class="systemitem">DB-Library</code> columns start with 1.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbcollen"><span><img src="images/callouts/3.png" alt="3" border="0" /></span></a> </p></td><td valign="top" align="left"><p><code class="function" >dbcollen()</code> returns the sizeof the native data (e.g. 4 bytes for a T-SQL <span class="symbol">INT</span>). We'll use <code class="function">dbbind()</code> to convert everything to strings. If the column is <span class="symbol">[VAR]CHAR</span>, we want the column's defined size, otherwise we want its maximum size when represented as a string.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbbind"><span><img src="images/callouts/4.png" alt="4" border="0" /></span></a> </p></td><td valign="top" align="left"><p><span class="symbol">NTBSTRINGBIND</span> null-terminates the character array for us. <span class="quote">���<span class="quote">NTB</span>���</span> might perhaps stand for <span class="quote">���<span class="quote">null terminating byte</span>���</span>.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbnullbind"><span><img src="images/callouts/5.png" alt="5" border="0" /></span></a > </p></td><td valign="top" align="left"><p>A zero-length string is not a NULL! <code class="function">dbnullbind()</code> arranges for the passed buffer to be set to -1 whenever that column is NULL for a particular row.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbnextrow"><span><img src="images/callouts/6.png" alt="6" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Each time <code class="function">dbnextrow()</code> returns <span class="symbol">REG_ROW</span>, it has filled the bound buffers with the converted values for the row.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.computeid"><span><img src="images/callouts/7.png" alt="7" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Computed rows are left as an exercise to the reader.</p></td></tr></table></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="samplecode.err ors"></a>Messages and Errors</h3></div></div></div><div class="abstract"><p class="title"><strong>Abstract</strong></p><p>Errors may originate on the server or in the library itself. The former are known as <em class="firstterm">messages</em> (because they are: they arrive as messages from the server); the latter are termed <em class="firstterm">errors</em>. Their handling is a little intimidating. It requires writing and installing a callback function (whose parameters are predefined by <code class="systemitem">DB-Library</code>), and thinking about how to handle different types of errors.</p></div><div class="variablelist"><p class="title"><strong>Kinds of Errors</strong></p><dl class="variablelist"><dt><span class="term">Messages</span></dt><dd><p><span class="emphasis"><em>Messages</em></span> arise because the server has something to say. <a href="#ftn.idm72020080" class="footnote" id="idm72020080"><sup class="footnote">[30]</sup></a>. They usually describe some problem en countered executing the SQL. Perhaps the SQL refers to a nonexistent object or attempted to violate a constraint. But they can also be benign, indicating for instance merely that the default database has changed.</p></dd><dt><span class="term">Errors</span></dt><dd><p><span class="emphasis"><em>Errors</em></span> arise either because the application has misused <code class="systemitem">DB-Library</code> in some way ��� say, passed a NULL <span class="symbol">DBPROCESS</span> pointer or tried to issue a query while results were pending ��� or because some trouble cropped up in communicating with the server (couldn't find it, say, or didn't hear back from it).</p></dd></dl></div><p>Why these two require distinct handling is lost in the mists of time. But it does help to keep them distinct in your mind, especially while reading the documentation.</p><p>To have <code class="systemitem">DB-Library</code> use your handler, pass its name to the appropriate <code class="function">dberrha ndle()</code> or <code class="function">dbmsghandle()</code> function immediately after calling <code class="function">dbinit()</code>.</p><div class="example"><a id="e.g.samplecode.dblib.errors"></a><p class="title"><strong>Example��11.8.��Sample Code: <code class="systemitem">DB-Library</code> Error and Message handlers</strong></p><div class="example-contents"><pre class="programlisting"> + </p><div class="calloutlist"><a id="co.fetching"></a><p class="title"><strong>Data-fetching Notes</strong></p><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbresults"><span><img src="images/callouts/1.png" alt="1" border="0" /></span></a> </p></td><td valign="top" align="left"><p>As soon as <code class="function">dbresults()</code> reports <span class="symbol">SUCCESS</span>, the row's metadata are available.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.c"><span><img src="images/callouts/2.png" alt="2" border="0" /></span></a> </p></td><td valign="top" align="left"><p><code class="systemitem">DB-Library</code> columns start with 1.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbcollen"><span><img src="images/callouts/3.png" alt="3" border="0" /></span></a> </p></td><td valign="top" align="left"><p><code class="function" >dbcollen()</code> returns the sizeof the native data (e.g. 4 bytes for a T-SQL <span class="symbol">INT</span>). We'll use <code class="function">dbbind()</code> to convert everything to strings. If the column is <span class="symbol">[VAR]CHAR</span>, we want the column's defined size, otherwise we want its maximum size when represented as a string.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbbind"><span><img src="images/callouts/4.png" alt="4" border="0" /></span></a> </p></td><td valign="top" align="left"><p><span class="symbol">NTBSTRINGBIND</span> null-terminates the character array for us. <span class="quote">���<span class="quote">NTB</span>���</span> might perhaps stand for <span class="quote">���<span class="quote">null terminating byte</span>���</span>.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbnullbind"><span><img src="images/callouts/5.png" alt="5" border="0" /></span></a > </p></td><td valign="top" align="left"><p>A zero-length string is not a NULL! <code class="function">dbnullbind()</code> arranges for the passed buffer to be set to -1 whenever that column is NULL for a particular row.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.dbnextrow"><span><img src="images/callouts/6.png" alt="6" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Each time <code class="function">dbnextrow()</code> returns <span class="symbol">REG_ROW</span>, it has filled the bound buffers with the converted values for the row.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.results.computeid"><span><img src="images/callouts/7.png" alt="7" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Computed rows are left as an exercise to the reader.</p></td></tr></table></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="samplecode.err ors"></a>Messages and Errors</h3></div></div></div><div class="abstract"><p class="title"><strong>Abstract</strong></p><p>Errors may originate on the server or in the library itself. The former are known as <em class="firstterm">messages</em> (because they are: they arrive as messages from the server); the latter are termed <em class="firstterm">errors</em>. Their handling is a little intimidating. It requires writing and installing a callback function (whose parameters are predefined by <code class="systemitem">DB-Library</code>), and thinking about how to handle different types of errors.</p></div><div class="variablelist"><p class="title"><strong>Kinds of Errors</strong></p><dl class="variablelist"><dt><span class="term">Messages</span></dt><dd><p><span class="emphasis"><em>Messages</em></span> arise because the server has something to say. <a href="#ftn.idm72388720" class="footnote" id="idm72388720"><sup class="footnote">[30]</sup></a>. They usually describe some problem en countered executing the SQL. Perhaps the SQL refers to a nonexistent object or attempted to violate a constraint. But they can also be benign, indicating for instance merely that the default database has changed.</p></dd><dt><span class="term">Errors</span></dt><dd><p><span class="emphasis"><em>Errors</em></span> arise either because the application has misused <code class="systemitem">DB-Library</code> in some way ��� say, passed a NULL <span class="symbol">DBPROCESS</span> pointer or tried to issue a query while results were pending ��� or because some trouble cropped up in communicating with the server (couldn't find it, say, or didn't hear back from it).</p></dd></dl></div><p>Why these two require distinct handling is lost in the mists of time. But it does help to keep them distinct in your mind, especially while reading the documentation.</p><p>To have <code class="systemitem">DB-Library</code> use your handler, pass its name to the appropriate <code class="function">dberrha ndle()</code> or <code class="function">dbmsghandle()</code> function immediately after calling <code class="function">dbinit()</code>.</p><div class="example"><a id="e.g.samplecode.dblib.errors"></a><p class="title"><strong>Example��11.8.��Sample Code: <code class="systemitem">DB-Library</code> Error and Message handlers</strong></p><div class="example-contents"><pre class="programlisting"> int msg_handler(DBPROCESS *dbproc, DBINT msgno, int msgstate, int severity, char *msgtext, char *srvname, char *procname, int line) @@ -317,7 +317,7 @@ } </pre></div></div><p><br class="example-break" /> </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>Handlers are always called before the function that engendered them returns control to the application.</p></td></tr></table></div><p> - </p><div class="calloutlist"><p class="title"><strong>Error Handling Notes</strong></p><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.msghandler.args"><span><img src="images/callouts/1.png" alt="1" border="0" /></span></a> </p></td><td valign="top" align="left"><p>When first writing a handler, pay careful attention to the precise type of each parameter. Only by carefully matching them will you convince a modern <span class="symbol">C</span> compiler that the address of your function is of the type accepted by <code class="function">dbmsghandle()</code>. <a href="#ftn.idm72055152" class="footnote" id="idm72055152"><sup class="footnote">[31]</sup></a></p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.msghandler.suppress"><span><img src="images/callouts/2.png" alt="2" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Some messages don't convey much, as thou gh the server gets lonely sometimes. You're not obliged to print every one.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.msghandler.severity"><span><img src="images/callouts/3.png" alt="3" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Severities are defined in the <span class="emphasis"><em>server</em></span> documentation, and can be set by the <span class="symbol">T-SQL RAISERROR</span> statement.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.msghandler.return"><span><img src="images/callouts/4.png" alt="4" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Message handlers <span class="emphasis"><em>always and only ever</em></span> return zero.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.errhandler.args"><span><img src="images/callouts/5.png" alt="5" border="0" /></span></a> </p></td><td valign="top" align="left" ><p>When first writing the handler, pay careful attention to the precise type of each parameter. Only by carefully matching them will you convince a modern <span class="symbol">C</span> compiler that the address of your function is of the type accepted by <code class="function">dberrhandle()</code>. <a href="#ftn.idm72058224" class="footnote" id="idm72058224"><sup class="footnote">[32]</sup></a></p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.errhandler.msgs"><span><img src="images/callouts/6.png" alt="6" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Some messages are so severe they provoke <code class="systemitem">DB-Library</code> into calling the error handler, too! If you have both installed ��� and of course you do, right? ��� then you can skip those lacking an error number.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.errhandler.return"><span><img src="images/callouts/7. png" alt="7" border="0" /></span></a> </p></td><td valign="top" align="left"><p>While <span class="symbol">INT_CANCEL</span> is the most common return code, it's not the only one. For one thing, the error handler's return code can control how long <code class="systemitem">DB-Library</code> keeps retrying timeout errors. See the documentation for details.</p></td></tr></table></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>No matter what the error handler says or does, it can't remedy the error. It's <span class="emphasis"><em>still</em></span> an error and usually the best that can happen is that the function will return <span class="symbol">FAIL</span>. The exception is timeout conditions, when the handler can stave off failure by requesting retri es.</p></td></tr></table></div><p>You may be asking yourself, <span class="quote">���<span class="quote">OK, fine, I can print the error message. But what if I want to communicate something back to the line in my program where the error occurred? How to do that?</span>���</span> First of all, remember the calling function ��� that's your application ��� will learn of an error from the return code. If it needs more detail, though, there are two ways to pass it. + </p><div class="calloutlist"><p class="title"><strong>Error Handling Notes</strong></p><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.msghandler.args"><span><img src="images/callouts/1.png" alt="1" border="0" /></span></a> </p></td><td valign="top" align="left"><p>When first writing a handler, pay careful attention to the precise type of each parameter. Only by carefully matching them will you convince a modern <span class="symbol">C</span> compiler that the address of your function is of the type accepted by <code class="function">dbmsghandle()</code>. <a href="#ftn.idm72411504" class="footnote" id="idm72411504"><sup class="footnote">[31]</sup></a></p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.msghandler.suppress"><span><img src="images/callouts/2.png" alt="2" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Some messages don't convey much, as thou gh the server gets lonely sometimes. You're not obliged to print every one.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.msghandler.severity"><span><img src="images/callouts/3.png" alt="3" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Severities are defined in the <span class="emphasis"><em>server</em></span> documentation, and can be set by the <span class="symbol">T-SQL RAISERROR</span> statement.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.msghandler.return"><span><img src="images/callouts/4.png" alt="4" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Message handlers <span class="emphasis"><em>always and only ever</em></span> return zero.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.errhandler.args"><span><img src="images/callouts/5.png" alt="5" border="0" /></span></a> </p></td><td valign="top" align="left" ><p>When first writing the handler, pay careful attention to the precise type of each parameter. Only by carefully matching them will you convince a modern <span class="symbol">C</span> compiler that the address of your function is of the type accepted by <code class="function">dberrhandle()</code>. <a href="#ftn.idm72414576" class="footnote" id="idm72414576"><sup class="footnote">[32]</sup></a></p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.errhandler.msgs"><span><img src="images/callouts/6.png" alt="6" border="0" /></span></a> </p></td><td valign="top" align="left"><p>Some messages are so severe they provoke <code class="systemitem">DB-Library</code> into calling the error handler, too! If you have both installed ��� and of course you do, right? ��� then you can skip those lacking an error number.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a href="#samplecode.errors.errhandler.return"><span><img src="images/callouts/7. png" alt="7" border="0" /></span></a> </p></td><td valign="top" align="left"><p>While <span class="symbol">INT_CANCEL</span> is the most common return code, it's not the only one. For one thing, the error handler's return code can control how long <code class="systemitem">DB-Library</code> keeps retrying timeout errors. See the documentation for details.</p></td></tr></table></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.gif" /></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>No matter what the error handler says or does, it can't remedy the error. It's <span class="emphasis"><em>still</em></span> an error and usually the best that can happen is that the function will return <span class="symbol">FAIL</span>. The exception is timeout conditions, when the handler can stave off failure by requesting retri es.</p></td></tr></table></div><p>You may be asking yourself, <span class="quote">���<span class="quote">OK, fine, I can print the error message. But what if I want to communicate something back to the line in my program where the error occurred? How to do that?</span>���</span> First of all, remember the calling function ��� that's your application ��� will learn of an error from the return code. If it needs more detail, though, there are two ways to pass it. </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Set a global variable.</p></li><li class="listitem"><p>Use <code class="function">setuserdata()</code> and <code class="function">getuserdata()</code>.</p></li></ol></div><p> @@ -327,4 +327,4 @@ There are things it doesn't do, in the name of simplicity. </p><div class="itemizedlist"><p class="title"><strong> Sample Code nonfeatures</strong></p><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>No BCP (bulk copy) mode</p></li><li class="listitem"><p>No RPC (remote procedure call) mode, preventing it from retrieving output parameters.</p></li></ul></div><p> - Your humble author hopes you found it worthwhile. Happy Hacking.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm71893104" class="footnote"><p><a href="#idm71893104" class="para"><sup class="para">[29] </sup></a>This is the sort of thing <span class="symbol">C++</span>'s type system does so much better</p></div><div id="ftn.idm72020080" class="footnote"><p><a href="#idm72020080" class="para"><sup class="para">[30] </sup></a>Just one more way in which databases differ from files.</p></div><div id="ftn.idm72055152" class="footnote"><p><a href="#idm72055152" class="para"><sup class="para">[31] </sup></a>Back in K&R days, that wasn't such a problem. But there were other problems, some much worse.</p></div><div id="ftn.idm72058224" class="footnote"><p><a href="#idm72058224" class="para"><sup class="para">[32] </sup></a>If that advice sounds familiar, it's because it bears repeating.</p></div></div></div><div cla ss="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="odbc.api.summary.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="acknowledgments.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ODBC API Implementation Summary��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��12.��Acknowledgments</td></tr></table></div></body></html> \ No newline at end of file + Your humble author hopes you found it worthwhile. Happy Hacking.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm72249456" class="footnote"><p><a href="#idm72249456" class="para"><sup class="para">[29] </sup></a>This is the sort of thing <span class="symbol">C++</span>'s type system does so much better</p></div><div id="ftn.idm72388720" class="footnote"><p><a href="#idm72388720" class="para"><sup class="para">[30] </sup></a>Just one more way in which databases differ from files.</p></div><div id="ftn.idm72411504" class="footnote"><p><a href="#idm72411504" class="para"><sup class="para">[31] </sup></a>Back in K&R days, that wasn't such a problem. But there were other problems, some much worse.</p></div><div id="ftn.idm72414576" class="footnote"><p><a href="#idm72414576" class="para"><sup class="para">[32] </sup></a>If that advice sounds familiar, it's because it bears repeating.</p></div></div></div><div cla ss="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="odbc.api.summary.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="programming.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="acknowledgments.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">ODBC API Implementation Summary��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��12.��Acknowledgments</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/serverthere.html new/freetds-1.3.16/doc/userguide/serverthere.html --- old/freetds-1.3.15/doc/userguide/serverthere.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/serverthere.html 2022-12-09 10:01:40.000000000 +0100 @@ -12,7 +12,7 @@ Connected to myhost. Escape character is '^]'. </code></pre></div></div><p><br class="example-break" /> If you get output as above, the servername is listening. If you get a 'Connection Refused' message, you're talking to the wrong host, wrong port, or the servername is down. - <a href="#ftn.idm70116976" class="footnote" id="idm70116976"><sup class="footnote">[24]</sup></a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="serverthere.tsql"></a>Test with <span class="command"><strong>tsql</strong></span></h3></div></div></div><p><span class="command"><strong>tsql</strong></span> can be run in two ways, one which uses <code class="filename">freetds.conf</code> and one which connects directly using the host and port. First attempt a connection using host and port. + <a href="#ftn.idm70493808" class="footnote" id="idm70493808"><sup class="footnote">[24]</sup></a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="serverthere.tsql"></a>Test with <span class="command"><strong>tsql</strong></span></h3></div></div></div><p><span class="command"><strong>tsql</strong></span> can be run in two ways, one which uses <code class="filename">freetds.conf</code> and one which connects directly using the host and port. First attempt a connection using host and port. </p><div class="example"><a id="e.g.troubleshooting.tsql.noconf"></a><p class="title"><strong>Example��8.3.��Connecting to the server, bypassing <code class="filename">freetds.conf</code></strong></p><div class="example-contents"><pre class="screen"> <code class="prompt">$ </code><strong class="userinput"><code>cd src/apps</code></strong> <code class="prompt">$ </code><strong class="userinput"><code>TDSVER=auto ./tsql -H <em class="replaceable"><code>myhost</code></em> -p <em class="replaceable"><code>1433</code></em> -U <em class="replaceable"><code>user</code></em></code></strong></pre></div></div><p><br class="example-break" /> @@ -25,5 +25,5 @@ This applies only to Microsoft <span class="productname">SQL Server</span> and you'll need to have your DBA verify that <span class="quote">���<span class="quote">server logins</span>���</span> are allowed, or use a <a class="link" href="domains.html" title="Domain Logins">domain login</a>.</p><p>Finally, if you received a prompt, then try <span class="command"><strong>tsql</strong></span> using the servername. </p><div class="example"><a id="e.g.troubleshooting.tsql"></a><p class="title"><strong>Example��8.4.��Connecting to the server using <code class="filename">freetds.conf</code></strong></p><div class="example-contents"><pre class="screen"> <code class="prompt">$ </code><strong class="userinput"><code>./tsql -S <em class="replaceable"><code>myserver</code></em> -U <em class="replaceable"><code>user</code></em></code></strong></pre></div></div><p><br class="example-break" /> - If this fails, <span class="productname">FreeTDS</span> is either not finding your <code class="filename">freetds.conf</code> file, finding the wrong one, or there is an error in the file.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70116976" class="footnote"><p><a href="#idm70116976" class="para"><sup class="para">[24] </sup></a>To exit <span class="command"><strong>telnet</strong></span>: When connected, telnet's command mode may be entered by typing the telnet <em class="firstterm">escape character</em> (initially <span class="keysym">Ctrl</span>-<span class="keysym">]</span>, as above). Once in command mode, <span class="command"><strong>telnet</strong></span> may be exited with the command <span class="command"><strong>quit</strong></span>. + If this fails, <span class="productname">FreeTDS</span> is either not finding your <code class="filename">freetds.conf</code> file, finding the wrong one, or there is an error in the file.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70493808" class="footnote"><p><a href="#idm70493808" class="para"><sup class="para">[24] </sup></a>To exit <span class="command"><strong>telnet</strong></span>: When connected, telnet's command mode may be entered by typing the telnet <em class="firstterm">escape character</em> (initially <span class="keysym">Ctrl</span>-<span class="keysym">]</span>, as above). Once in command mode, <span class="command"><strong>telnet</strong></span> may be exited with the command <span class="command"><strong>quit</strong></span>. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="troubleshooting.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="troubleshooting.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="logging.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter��8.��Troubleshooting��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Logging</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/tdshistory.html new/freetds-1.3.16/doc/userguide/tdshistory.html --- old/freetds-1.3.15/doc/userguide/tdshistory.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/tdshistory.html 2022-12-09 10:01:39.000000000 +0100 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!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/html; charset=UTF-8" /><title>History of TDS Versions</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="what.html" title="Chapter��1.��What is FreeTDS?" /><link rel="prev" href="what.html" title="Chapter��1.��What is FreeTDS?" /><link rel="next" href="FreeTDShistory.html" title="History of FreeTDS" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">History of <acronym class="acronym">TDS</acronym> Versions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="what.html">Prev</a>��</td><th width="60%" align="center">Chapter� �1.��What is <span class="productname">FreeTDS</span>?</th><td width="20%" align="right">��<a accesskey="n" href="FreeTDShistory.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tdshistory"></a>History of <acronym class="acronym">TDS</acronym> Versions</h2></div></div></div><p>At first, there was One Version of <acronym class="acronym">TDS</acronym> common to both vendors but, in keeping with the broad history of private ventures, they soon diverged. Each vendor has subsequently brought out different versions, and neither supports the other's flavor. That is to say, each vendor's client libraries use the latest version of <acronym class="acronym">TDS</acronym> offered by that vendor. You can't reliably use Microsoft's libraries to connect to Sybase, or Sybase's libraries to connect to Microsoft. In some cases you'll get a connection, but pretty soon you'll bump into some incompatibility.</p ><div class="variablelist"><a id="tab.tds.protocol.versions"></a><p class="title"><strong>Versions of the <acronym class="acronym">TDS</acronym> protocol</strong></p><dl class="variablelist"><dt><span class="term"><acronym class="acronym">TDS 4.2</acronym> Sybase and Microsoft</span></dt><dd><p>The version in use at the time of the Sybase/Microsoft split.</p></dd><dt><span class="term"><acronym class="acronym">TDS 5.0</acronym> Sybase</span></dt><dd><p>Introduced for Sybase. Because TDS 5.0 includes negotiated capabilities through which protocol features can be expanded, we are unlikely to see a new <acronym class="acronym">TDS</acronym> version from Sybase.</p></dd><dt><span class="term"><acronym class="acronym">TDS 7.0</acronym> Microsoft</span></dt><dd><p>Introduced for <span class="productname">SQL Server 7.0</span>. Includes support for the extended datatypes in <span class="productname">SQL Server 7.0</span> (such as <span class="structname">char</span>/<span class="structname">varchar</span> fields of more than 255 characters). It also includes support for Unicode.</p></dd><dt><span class="term">TDS 7.1 Microsoft, </span><span class="term"><span class="emphasis"><em>was</em></span> 8.0 - <a href="#ftn.idm68456560" class="footnote" id="idm68456560"><sup class="footnote">[2]</sup></a> - </span></dt><dd><p>Introduced for <span class="productname">SQL Server 2000</span>. Includes support for big integer (64-bit <span class="structname">int</span>) and <span class="quote">���<span class="quote">variant</span>���</span> datatypes.</p></dd><dt><span class="term">TDS 7.2 Microsoft, </span><span class="term"><span class="emphasis"><em>was</em></span> 9.0</span></dt><dd><p>Introduced for <span class="productname">SQL Server 2005</span>. Includes support for varchar(max), varbinary(max), xml datatypes and MARS.</p></dd><dt><span class="term">TDS 7.3 Microsoft</span></dt><dd><p>Introduced for <span class="productname">SQL Server 2008</span>. Includes support for extended date/time, table as parameters.</p></dd><dt><span class="term">TDS 7.4 Microsoft</span></dt><dd><p>Introduced for <span class="productname">SQL Server 2012</span>. Includes support for session recovery.</p></dd></dl></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left : 0" /><div id="ftn.idm68456560" class="footnote"><p><a href="#idm68456560" class="para"><sup class="para">[2] </sup></a>Earlier <span class="productname">FreeTDS</span> documentation referred to versions 7, 8 and 9. Microsoft subsequently published a protocol specification document denoting 7.1 and 7.2, and one finds scattered references using that scheme elsewhere, too. For that reason, <span class="productname">FreeTDS</span> switched to Microsoft's nomenclature. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="what.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="what.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="FreeTDShistory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter��1.��What is <span class="productname">FreeTDS</span>?��</td><td width="20%" align="center"><a accesskey="h" href="ind ex.html">Home</a></td><td width="40%" align="right" valign="top">��History of <span class="productname">FreeTDS</span></td></tr></table></div></body></html> \ No newline at end of file + <a href="#ftn.idm68833392" class="footnote" id="idm68833392"><sup class="footnote">[2]</sup></a> + </span></dt><dd><p>Introduced for <span class="productname">SQL Server 2000</span>. Includes support for big integer (64-bit <span class="structname">int</span>) and <span class="quote">���<span class="quote">variant</span>���</span> datatypes.</p></dd><dt><span class="term">TDS 7.2 Microsoft, </span><span class="term"><span class="emphasis"><em>was</em></span> 9.0</span></dt><dd><p>Introduced for <span class="productname">SQL Server 2005</span>. Includes support for varchar(max), varbinary(max), xml datatypes and MARS.</p></dd><dt><span class="term">TDS 7.3 Microsoft</span></dt><dd><p>Introduced for <span class="productname">SQL Server 2008</span>. Includes support for extended date/time, table as parameters.</p></dd><dt><span class="term">TDS 7.4 Microsoft</span></dt><dd><p>Introduced for <span class="productname">SQL Server 2012</span>. Includes support for session recovery.</p></dd></dl></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left : 0" /><div id="ftn.idm68833392" class="footnote"><p><a href="#idm68833392" class="para"><sup class="para">[2] </sup></a>Earlier <span class="productname">FreeTDS</span> documentation referred to versions 7, 8 and 9. Microsoft subsequently published a protocol specification document denoting 7.1 and 7.2, and one finds scattered references using that scheme elsewhere, too. For that reason, <span class="productname">FreeTDS</span> switched to Microsoft's nomenclature. </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="what.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="what.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="FreeTDShistory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter��1.��What is <span class="productname">FreeTDS</span>?��</td><td width="20%" align="center"><a accesskey="h" href="ind ex.html">Home</a></td><td width="40%" align="right" valign="top">��History of <span class="productname">FreeTDS</span></td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide/uodbc.html new/freetds-1.3.16/doc/userguide/uodbc.html --- old/freetds-1.3.15/doc/userguide/uodbc.html 2022-11-22 10:01:41.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide/uodbc.html 2022-12-09 10:01:40.000000000 +0100 @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!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/html; charset=UTF-8" /><title>ODBC on Unix</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="software.html" title="Chapter��7.��How to get what works with it working" /><link rel="prev" href="qt.html" title="Qt" /><link rel="next" href="troubleshooting.html" title="Chapter��8.��Troubleshooting" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ODBC on Unix</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="qt.html">Prev</a>��</td><th width="60%" align="center">Chapter��7.��How to get what works with it working</th><td w idth="20%" align="right">��<a accesskey="n" href="troubleshooting.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="uodbc"></a>ODBC on Unix</h2></div></div></div><p><code class="systemitem">ODBC</code> has some issues on Unix, mainly due to lack of clean specifications.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="uodbc.64"></a>ODBC and 64-bit</h3></div></div></div><p>ODBC was originally specified as 32-bit<a href="#ftn.idm70029296" class="footnote" id="idm70029296"><sup class="footnote">[23]</sup></a>. +<!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/html; charset=UTF-8" /><title>ODBC on Unix</title><link rel="stylesheet" type="text/css" href="userguide.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="home" href="index.html" title="FreeTDS User Guide" /><link rel="up" href="software.html" title="Chapter��7.��How to get what works with it working" /><link rel="prev" href="qt.html" title="Qt" /><link rel="next" href="troubleshooting.html" title="Chapter��8.��Troubleshooting" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">ODBC on Unix</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="qt.html">Prev</a>��</td><th width="60%" align="center">Chapter��7.��How to get what works with it working</th><td w idth="20%" align="right">��<a accesskey="n" href="troubleshooting.html">Next</a></td></tr></table><hr /></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="uodbc"></a>ODBC on Unix</h2></div></div></div><p><code class="systemitem">ODBC</code> has some issues on Unix, mainly due to lack of clean specifications.</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="uodbc.64"></a>ODBC and 64-bit</h3></div></div></div><p>ODBC was originally specified as 32-bit<a href="#ftn.idm70402032" class="footnote" id="idm70402032"><sup class="footnote">[23]</sup></a>. Its evolution to 64-bit took place in the absence of a good specification which led to conflicting declarations and associated problems. For instance, some parameters are defined as SQLINTEGER but are used for pointer offsets. But SQLINTEGER was (and remains) 32-bit, while pointer offsets must be 64-bit. Also row numbers and some other formerly 32-bit quantities are now 64-bit.</p><p>If you use <code class="systemitem">unixODBC</code> Frediano would recommend at least version 2.2.14. Earlier versions have issues if used on 64-bit environments.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="uodbc.wchar"></a>sizeof(SQLWCHAR)</h3></div></div></div><p>Under Windows <code class="literal">sizeof(wchar_t) == sizeof(SQLWCHAR) == 2</code> but on many Unix systems you have <code class="literal">sizeof(wchar_t) == 4</code>. And some DMs decided to keep <code class="literal">sizeof(SQLWCHAR) == 2</code> (including <code class="systemitem">unixODBC</code>) while in other DM <code class="literal">sizeof(SQLWCHAR) == sizeof(wchar_t) == 4</code> (namely <code class="systemitem">iODBC</code>). This leads to incompatible ABIs between applications and drivers. -If you compile the <span class="productname">FreeTDS</span> ODBC driver using <code class="systemitem">iODBC</code> take care to ensure all drivers are compiled with the same header files.</p><p>Alternatively, compile <span class="productname">FreeTDS</span> with both includes and rename the library to use two ABIs (for instance having a <code class="filename">libtdsiodbc.so</code> and a <code class="filename">libtdsuodbc.so</code>).</p><p>At the time of writing <span class="productname">Ubuntu</span> compiled Qt using <code class="systemitem">iODBC</code> but most packages use <code class="systemitem">unixODBC</code>. If you plan to use Qt with the <span class="productname">FreeTDS</span> <code class="systemitem">ODBC</code> driver, you should have an <code class="systemitem">iODBC</code>-compatible driver. Also be aware that the QODBC Qt driver has problems with <code class="systemitem">iODBC</code> and <code class="literal">SQLWCHAR</code> (see <a class="link" href="qt.html" titl e="Qt">Qt</a>). Due to these problems Frediano suggests not using this configuration (Qt database) on <span class="productname">Ubuntu</span> at this time.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="uodbc.char"></a>Default charset</h3></div></div></div><p>Character encoding is yet another trap. ODBC makes no provision for specifying client character encoding. By default many DM converting from multi-byte to wide characters assume the client uses ISO 8859-1. Even the <span class="productname">FreeTDS</span> driver assumes ISO 8859-1 by default. Also some DM have problems converting multi-byte encodings (like UTF-8), by assuming a byte can be converted to a single wide character (and vice versa). That creates problems if you use multi-byte encoding for <span class="productname">FreeTDS</span> driver.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70029296" class="footnote"><p>< a href="#idm70029296" class="para"><sup class="para">[23] </sup></a>In fact, the earliest versions were 16-bit.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="qt.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="software.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="troubleshooting.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Qt��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��8.��Troubleshooting</td></tr></table></div></body></html> \ No newline at end of file +If you compile the <span class="productname">FreeTDS</span> ODBC driver using <code class="systemitem">iODBC</code> take care to ensure all drivers are compiled with the same header files.</p><p>Alternatively, compile <span class="productname">FreeTDS</span> with both includes and rename the library to use two ABIs (for instance having a <code class="filename">libtdsiodbc.so</code> and a <code class="filename">libtdsuodbc.so</code>).</p><p>At the time of writing <span class="productname">Ubuntu</span> compiled Qt using <code class="systemitem">iODBC</code> but most packages use <code class="systemitem">unixODBC</code>. If you plan to use Qt with the <span class="productname">FreeTDS</span> <code class="systemitem">ODBC</code> driver, you should have an <code class="systemitem">iODBC</code>-compatible driver. Also be aware that the QODBC Qt driver has problems with <code class="systemitem">iODBC</code> and <code class="literal">SQLWCHAR</code> (see <a class="link" href="qt.html" titl e="Qt">Qt</a>). Due to these problems Frediano suggests not using this configuration (Qt database) on <span class="productname">Ubuntu</span> at this time.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="uodbc.char"></a>Default charset</h3></div></div></div><p>Character encoding is yet another trap. ODBC makes no provision for specifying client character encoding. By default many DM converting from multi-byte to wide characters assume the client uses ISO 8859-1. Even the <span class="productname">FreeTDS</span> driver assumes ISO 8859-1 by default. Also some DM have problems converting multi-byte encodings (like UTF-8), by assuming a byte can be converted to a single wide character (and vice versa). That creates problems if you use multi-byte encoding for <span class="productname">FreeTDS</span> driver.</p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.idm70402032" class="footnote"><p>< a href="#idm70402032" class="para"><sup class="para">[23] </sup></a>In fact, the earliest versions were 16-bit.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="qt.html">Prev</a>��</td><td width="20%" align="center"><a accesskey="u" href="software.html">Up</a></td><td width="40%" align="right">��<a accesskey="n" href="troubleshooting.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Qt��</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">��Chapter��8.��Troubleshooting</td></tr></table></div></body></html> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/doc/userguide_desc.xml new/freetds-1.3.16/doc/userguide_desc.xml --- old/freetds-1.3.15/doc/userguide_desc.xml 2022-11-22 10:00:53.000000000 +0100 +++ new/freetds-1.3.16/doc/userguide_desc.xml 2022-12-09 10:00:49.000000000 +0100 @@ -1,3 +1,3 @@ <!-- Autogenerated --> -<!ENTITY ug.date "Date: 2022-11-21 11:05:07 +0000"> -<!ENTITY ug.id "Git Id: a35a4ec8131da6c4b459051083ba69c820824b4b"> \ No newline at end of file +<!ENTITY ug.date "Date: 2022-12-08 07:20:01 +0000"> +<!ENTITY ug.id "Git Id: f535ce2a8458007cbd4ae4f1cfd44c475f46a2ed"> \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/freetds.spec new/freetds-1.3.16/freetds.spec --- old/freetds-1.3.15/freetds.spec 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/freetds.spec 2022-12-09 10:01:31.000000000 +0100 @@ -1,5 +1,5 @@ %define name freetds -%define version 1.3.15 +%define version 1.3.16 # compute some additional dependency from vendor name # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/include/freetds/encodings.h new/freetds-1.3.16/include/freetds/encodings.h --- old/freetds-1.3.15/include/freetds/encodings.h 2022-11-22 10:01:37.000000000 +0100 +++ new/freetds-1.3.16/include/freetds/encodings.h 2022-12-09 10:01:36.000000000 +0100 @@ -1,5 +1,5 @@ /* - * This file produced from ./encodings.pl on Tue Nov 22 09:01:35 2022 + * This file produced from ./encodings.pl on Fri Dec 9 09:01:33 2022 */ #ifdef TDS_ICONV_ENCODING_TABLES diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/include/freetds/version.h new/freetds-1.3.16/include/freetds/version.h --- old/freetds-1.3.15/include/freetds/version.h 2022-11-22 10:01:32.000000000 +0100 +++ new/freetds-1.3.16/include/freetds/version.h 2022-12-09 10:01:30.000000000 +0100 @@ -22,11 +22,11 @@ /* $Id: 9640daf619734147e3b5ff6a1dad56ad305ffa51 $ */ -#define TDS_VERSION_NO "freetds v1.3.15" +#define TDS_VERSION_NO "freetds v1.3.16" #define TDS_VERSION_MAJOR 1 #define TDS_VERSION_MINOR 3 -#define TDS_VERSION_SUBVERSION 15 -#define TDS_VERSION_BUILD_NUMBER 692 +#define TDS_VERSION_SUBVERSION 16 +#define TDS_VERSION_BUILD_NUMBER 709 #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/src/odbc/version.rc new/freetds-1.3.16/src/odbc/version.rc --- old/freetds-1.3.15/src/odbc/version.rc 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/src/odbc/version.rc 2022-12-09 10:01:31.000000000 +0100 @@ -6,8 +6,8 @@ // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,3,15,692 - PRODUCTVERSION 1,3,15,692 + FILEVERSION 1,3,16,709 + PRODUCTVERSION 1,3,16,709 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -25,14 +25,14 @@ VALUE "Comments", "\0" VALUE "CompanyName", "FreeTDS.org\0" VALUE "FileDescription", "FreeTDS\0" - VALUE "FileVersion", "1, 3, 15, 692\0" + VALUE "FileVersion", "1, 3, 16, 709\0" VALUE "InternalName", "FreeTDS\0" VALUE "LegalCopyright", "Copyright � 2004-2015 under terms of GNU LGPL\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "FreeTDS.dll\0" VALUE "PrivateBuild", "\0" VALUE "ProductName", "FreeTDS ODBC Driver\0" - VALUE "ProductVersion", "1, 3, 15, 692\0" + VALUE "ProductVersion", "1, 3, 16, 709\0" VALUE "SpecialBuild", "\0" END END diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/src/tds/net.c new/freetds-1.3.16/src/tds/net.c --- old/freetds-1.3.15/src/tds/net.c 2021-06-04 14:12:41.000000000 +0200 +++ new/freetds-1.3.16/src/tds/net.c 2022-12-09 10:00:01.000000000 +0100 @@ -566,7 +566,6 @@ } #else tds_disconnect(tds); - tds_ssl_deinit(tds->conn); if (!TDS_IS_SOCKET_INVALID(tds_get_s(tds)) && CLOSESOCKET(tds_get_s(tds)) == -1) tdserror(tds_get_ctx(tds), tds, TDSECLOS, sock_errno); tds_set_s(tds, INVALID_SOCKET); @@ -582,7 +581,6 @@ unsigned n = 0; #endif - tds_ssl_deinit(conn); if (!TDS_IS_SOCKET_INVALID(conn->s)) { /* TODO check error ?? how to return it ?? */ CLOSESOCKET(conn->s); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/freetds-1.3.15/win32/freetds.nsh new/freetds-1.3.16/win32/freetds.nsh --- old/freetds-1.3.15/win32/freetds.nsh 2022-11-22 10:01:33.000000000 +0100 +++ new/freetds-1.3.16/win32/freetds.nsh 2022-12-09 10:01:31.000000000 +0100 @@ -1 +1 @@ -!define PRODUCT_VERSION "1.3.15" +!define PRODUCT_VERSION "1.3.16"