? cdr_tds.patch Index: Makefile =================================================================== RCS file: /usr/cvsroot/asterisk/cdr/Makefile,v retrieving revision 1.25 diff -u -r1.25 Makefile --- Makefile 25 Jul 2004 14:56:34 -0000 1.25 +++ Makefile 13 Aug 2004 16:16:54 -0000 @@ -31,8 +31,54 @@ # # FreeTDS stuff... # -MODS+=$(shell if [ -f "/usr/include/tds.h" ]; then echo "cdr_tds.so"; fi) -MODS+=$(shell if [ -f "/usr/local/include/tds.h" ]; then echo "cdr_tds.so"; fi) +MODS+=$(shell \ +for d in /usr/local /usr; \ +do \ + if test -f "$$d/include/tds.h" -a -e "$$d/lib/libtds.so" -a -f "$$d/include/tdsver.h"; \ + then \ + echo "cdr_tds.so"; \ + break; \ + elif test -f "$$d/include/freetds/tds.h" -a -e "$$d/lib/libtds.so" -a -f "$d/include/freetds/tdsver.h"; \ + then \ + echo "cdr_tds.so"; \ + break; \ + fi; \ +done; \ +) + +CFLAGS+=$(shell \ +freetdsdir=""; \ +freetdsincdir=""; \ +freetdsvercheck=""; \ +for d in /usr/local /usr; \ +do \ + if test -f "$$d/include/tds.h" -a -e "$$d/lib/libtds.so" -a -f "$$d/include/tdsver.h"; \ + then \ + freetdsdir="$$d"; \ + freetdsincdir="$$d/include"; \ + break; \ + elif test -f "$$d/include/freetds/tds.h" -a -e "$$d/lib/libtds.so" -a -f "$d/include/freetds/tdsver.h"; \ + then \ + freetdsdir="$$d"; \ + freetdsincdir="$$d/include/freetds"; \ + break; \ + fi; \ +done; \ +if test "x$$freetdsdir" != "x"; \ +then \ + freetdsvercheck="`grep '^\#define TDS_VERSION_NO ' $$freetdsincdir/tdsver.h|sed 's|^.*"\(.*v\)\(.*\)"|\2|'`"; \ + if test "x$$freetdsvercheck" != "x"; \ + then \ + freetdsmajor="`echo $$freetdsvercheck|sed 's|^\([0-9]\).[0-9]\{2\}.*|\1|'`"; \ + freetdsminor="`echo $$freetdsvercheck|sed 's|^[0-9].\([0-9]\{2\}\).*|\1|'`"; \ + freetdsmacro="`echo $$freetdsvercheck|sed 's|^[0-9].[0-9]\{2\}.\(.*\)|\1|'`"; \ + if test "$$freetdsmajor" -eq 0 && test "$$freetdsminor" -lt 62; \ + then \ + echo "-DTDS_PRE_0_62"; \ + fi; \ + fi; \ +fi; \ +) # # PGSQL stuff... Autoconf anyone?? Index: cdr_tds.c =================================================================== RCS file: /usr/cvsroot/asterisk/cdr/cdr_tds.c,v retrieving revision 1.3 diff -u -r1.3 cdr_tds.c --- cdr_tds.c 1 Aug 2004 03:53:34 -0000 1.3 +++ cdr_tds.c 13 Aug 2004 16:16:54 -0000 @@ -75,6 +75,9 @@ char sqlcmd[2048], start[80], answer[80], end[80]; char *accountcode, *src, *dst, *dcontext, *clid, *channel, *dstchannel, *lastapp, *lastdata, *uniqueid; int res = 0; +#ifdef TDS_PRE_0_62 + TDS_INT result_type; +#endif ast_mutex_lock(&tds_lock); @@ -156,7 +159,11 @@ uniqueid ); +#ifdef TDS_PRE_0_62 + if ((tds_submit_query(tds, sqlcmd) != TDS_SUCCEED) || (tds_process_simple_query(tds, &result_type) != TDS_SUCCEED || result_type != TDS_CMD_SUCCEED)) +#else if ((tds_submit_query(tds, sqlcmd) != TDS_SUCCEED) || (tds_process_simple_query(tds) != TDS_SUCCEED)) +#endif { ast_log(LOG_ERROR, "Failed to insert record into database.\n"); @@ -375,6 +382,9 @@ struct ast_variable *var; char query[1024], *ptr = NULL; char *hostname = NULL, *dbname = NULL, *dbuser = NULL, *password = NULL, *charset = NULL, *language = NULL; +#ifdef TDS_PRE_0_62 + TDS_INT result_type; +#endif cfg = ast_load(config); if (!cfg) @@ -462,7 +472,9 @@ tds_set_passwd(login, password); tds_set_app(login, "TSQL"); tds_set_library(login, "TDS-Library"); +#ifndef TDS_PRE_0_62 tds_set_client_charset(login, charset); +#endif tds_set_language(login, language); tds_set_packet(login, 512); tds_set_version(login, 7, 0); @@ -483,7 +495,11 @@ { memset(query, 0, sizeof(query)); sprintf(query, "USE %s", dbname); +#ifdef TDS_PRE_0_62 + if ((tds_submit_query(tds, query) != TDS_SUCCEED) || (tds_process_simple_query(tds, &result_type) != TDS_SUCCEED || result_type != TDS_CMD_SUCCEED)) +#else if ((tds_submit_query(tds, query) != TDS_SUCCEED) || (tds_process_simple_query(tds) != TDS_SUCCEED)) +#endif { ast_log(LOG_ERROR, "Could not change database (%s)\n", dbname); res = -1;