cvs: php4 /ext/mssql config.m4 php_mssql.c php_mssql.h

From: Date: Mon, 16 Dec 2002 22:26:50 +0000
Subject: cvs: php4 /ext/mssql config.m4 php_mssql.c php_mssql.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-17252@lists.php.net to get a copy of this message
fmk Mon Dec 16 17:26:50 2002 EDT Added files: /php4/ext/mssql config.m4 Modified files: /php4/ext/mssql php_mssql.c php_mssql.h Log: Allow the native MSSQL extension to be compiled with FreeTDS on *nix platforms. This will make the whole MSSAL API available on these platforms. @Allow compilation of mssql extension on *nix. Index: php4/ext/mssql/php_mssql.c diff -u php4/ext/mssql/php_mssql.c:1.90 php4/ext/mssql/php_mssql.c:1.91 --- php4/ext/mssql/php_mssql.c:1.90 Tue Dec 3 14:19:15 2002 +++ php4/ext/mssql/php_mssql.c Mon Dec 16 17:26:49 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mssql.c,v 1.90 2002/12/03 19:19:15 fmk Exp $ */ +/* $Id: php_mssql.c,v 1.91 2002/12/16 22:26:49 fmk Exp $ */ #ifdef COMPILE_DL_MSSQL #define HAVE_MSSQL 1 @@ -442,24 +442,30 @@ RETURN_FALSE; } - dbprocerrhandle(mssql.login, (DBERRHANDLE_PROC) php_mssql_error_handler); - dbprocmsghandle(mssql.login, (DBMSGHANDLE_PROC) php_mssql_message_handler); + DBERRHANDLE(mssql.login, (EHANDLEFUNC) php_mssql_error_handler); + DBMSGHANDLE(mssql.login, (MHANDLEFUNC) php_mssql_message_handler); +#ifndef HAVE_FREETDS if (MS_SQL_G(secure_connection) == 1){ DBSETLSECURE(mssql.login); } else { +#endif if (user) { DBSETLUSER(mssql.login,user); } if (passwd) { DBSETLPWD(mssql.login,passwd); } +#ifndef HAVE_FREETDS } +#endif DBSETLAPP(mssql.login,MS_SQL_G(appname)); mssql.valid = 1; +#ifndef HAVE_FREETDS DBSETLVERSION(mssql.login, DBVER60); +#endif /* DBSETLTIME(mssql.login, TIMEOUT_INFINITE); */ if (!MS_SQL_G(allow_persistent)) { @@ -492,7 +498,7 @@ RETURN_FALSE; } - if (dbsetopt(mssql.link, DBBUFFER, "2")==FAIL) { + if (DBSETOPT(mssql.link, DBBUFFER, "2")==FAIL) { efree(hashed_details); dbfreelogin(mssql.login); dbclose(mssql.link); @@ -501,7 +507,7 @@ if (MS_SQL_G(textlimit) != -1) { sprintf(buffer, "%li", MS_SQL_G(textlimit)); - if (dbsetopt(mssql.link, DBTEXTLIMIT, buffer)==FAIL) { + if (DBSETOPT(mssql.link, DBTEXTLIMIT, buffer)==FAIL) { efree(hashed_details); dbfreelogin(mssql.login); RETURN_FALSE; @@ -554,7 +560,7 @@ #if BROKEN_MSSQL_PCONNECTS log_error("PHP/MS SQL: Reconnect successful!",php_rqst->server); #endif - if (dbsetopt(mssql_ptr->link, DBBUFFER, "2")==FAIL) { + if (DBSETOPT(mssql_ptr->link, DBBUFFER, "2")==FAIL) { #if BROKEN_MSSQL_PCONNECTS log_error("PHP/MS SQL: Unable to set required options",php_rqst->server); #endif @@ -605,7 +611,7 @@ RETURN_FALSE; } - if (dbsetopt(mssql.link, DBBUFFER,"2")==FAIL) { + if (DBSETOPT(mssql.link, DBBUFFER,"2")==FAIL) { efree(hashed_details); dbfreelogin(mssql.login); dbclose(mssql.link); @@ -614,7 +620,7 @@ if (MS_SQL_G(textlimit) != -1) { sprintf(buffer, "%li", MS_SQL_G(textlimit)); - if (dbsetopt(mssql.link, DBTEXTLIMIT, buffer)==FAIL) { + if (DBSETOPT(mssql.link, DBTEXTLIMIT, buffer)==FAIL) { efree(hashed_details); dbfreelogin(mssql.login); RETURN_FALSE; @@ -1108,7 +1114,11 @@ * 1) Being able to fire up another query without explicitly reading all rows * 2) Having numrows accessible */ +#ifdef HAVE_FREETDS + if ((num_fields = dbnumcols(mssql_ptr->link)) <= 0) { +#else if ((num_fields = dbnumcols(mssql_ptr->link)) <= 0 && !dbdataready(mssql_ptr->link)) { +#endif RETURN_TRUE; } @@ -1172,8 +1182,10 @@ } ZEND_FETCH_RESOURCE(result, mssql_result *, mssql_result_index, -1, "MS SQL-result", le_result); +#ifndef HAVE_FREETDS if (dbdataready(result->mssql_ptr->link)) dbresults(result->mssql_ptr->link); +#endif zend_list_delete(Z_LVAL_PP(mssql_result_index)); RETURN_TRUE; } @@ -1996,7 +2008,7 @@ /* no call to dbrpcparam if RETVAL */ if ( strcmp("RETVAL",Z_STRVAL_PP(param_name))!=0 ) { - if (dbrpcparam(mssql_ptr->link, Z_STRVAL_PP(param_name), (BYTE)status, type, maxlen, datalen, (LPCBYTE)value)==FAIL) { + if (dbrpcparam(mssql_ptr->link, Z_STRVAL_PP(param_name), (BYTE)status, type, maxlen, datalen, (LPBYTE)value)==FAIL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to set parameter"); RETURN_FALSE; } Index: php4/ext/mssql/php_mssql.h diff -u php4/ext/mssql/php_mssql.h:1.24 php4/ext/mssql/php_mssql.h:1.25 --- php4/ext/mssql/php_mssql.h:1.24 Tue Dec 3 13:57:04 2002 +++ php4/ext/mssql/php_mssql.h Mon Dec 16 17:26:49 2002 @@ -17,13 +17,14 @@ */ -/* $Id: php_mssql.h,v 1.24 2002/12/03 18:57:04 fmk Exp $ */ +/* $Id: php_mssql.h,v 1.25 2002/12/16 22:26:49 fmk Exp $ */ #ifndef PHP_MSSQL_H #define PHP_MSSQL_H #if HAVE_MSSQL +#define MSDBLIB #ifdef PHP_WIN32 #define PHP_MSSQL_API __declspec(dllexport) #else @@ -35,14 +36,52 @@ #include "sqlfront.h" #include "sqldb.h" +#if HAVE_FREETDS +#define SQLTEXT SYBTEXT +#define SQLCHAR SYBCHAR +#define SQLVARCHAR SYBVARCHAR +#define SQLINT1 SYBINT1 +#define SQLINT2 SYBINT2 +#define SQLINT4 SYBINT4 +#define SQLINTN SYBINTN +#define SQLBIT SYBBIT +#define SQLFLT4 SYBREAL +#define SQLFLT8 SYBFLT8 +#define SQLFLTN SYBFLTN +#define SQLDECIMAL SYBDECIMAL +#define SQLNUMERIC SYBNUMERIC +#define SQLDATETIME SYBDATETIME +#define SQLDATETIM4 SYBDATETIME4 +#define SQLDATETIMN SYBDATETIMN +#define SQLMONEY SYBMONEY +#define SQLMONEY4 SYBMONEY4 +#define SQLMONEYN SYBMONEYN +#define SQLIMAGE SYBIMAGE +#define SQLBINARY SYBBINARY +#define SQLVARBINARY SYBVARBINARY +#define DBERRHANDLE(a, b) dberrhandle(b) +#define DBMSGHANDLE(a, b) dbmsghandle(b) +#define DBSETOPT(a, b, c) dbsetopt(a, b, c, -1) +#define NO_MORE_RPC_RESULTS 3 +#define dbfreelogin dbloginfree +#define dbrpcexec dbrpcsend +typedef unsigned char *LPBYTE; +#else +#define DBERRHANDLE(a, b) dbprocerrhandle(a, b) +#define DBMSGHANDLE(a, b) dbprocerrhandle(a, b) +#define EHANDLEFUNC DBERRHANDLE_PROC +#define MHANDLEFUNC DBMSGHANDLE_PROC +#define DBSETOPT(a, b, c) dbsetopt(a, b, c) +#endif + #define coltype(j) dbcoltype(mssql_ptr->link,j) #define intcol(i) ((int) *(DBINT *) dbdata(mssql_ptr->link,i)) #define smallintcol(i) ((int) *(DBSMALLINT *) dbdata(mssql_ptr->link,i)) #define tinyintcol(i) ((int) *(DBTINYINT *) dbdata(mssql_ptr->link,i)) #define anyintcol(j) (coltype(j)==SQLINT4?intcol(j):(coltype(j)==SQLINT2?smallintcol(j):tinyintcol(j))) #define charcol(i) ((DBCHAR *) dbdata(mssql_ptr->link,i)) -#define floatcol4(i) ((float) *(DBFLT4 *) dbdata(mssql_ptr->link,i)) -#define floatcol8(i) ((float) *(DBFLT8 *) dbdata(mssql_ptr->link,i)) +#define floatcol4(i) (*(DBFLT8 *) dbdata(mssql_ptr->link,i)) +#define floatcol8(i) (*(DBFLT8 *) dbdata(mssql_ptr->link,i)) #ifdef ZTS #include "TSRM.h" Index: php4/ext/mssql/config.m4 +++ php4/ext/mssql/config.m4 dnl dnl $Id: config.m4,v 1.1 2002/12/16 22:26:49 fmk Exp $ dnl PHP_ARG_WITH(mssql,for MSSQL support via FreeTDS, [ --with-mssql[=DIR] Include MSSQL-DB support. DIR is the FreeTDS home directory, defaults to /usr/local/freetds.]) if test "$PHP_MSSQL" != "no"; then if test "$PHP_MSSQL" = "yes"; then MSSQL_INCDIR=/usr/local/freetds/include MSSQL_LIBDIR=/usr/local/freetds/lib else MSSQL_INCDIR=$PHP_MSSQL/include MSSQL_LIBDIR=$PHP_MSSQL/lib fi PHP_ADD_INCLUDE($MSSQL_INCDIR) PHP_ADD_LIBRARY_WITH_PATH(sybdb, $MSSQL_LIBDIR, MSSQL_SHARED_LIBADD) PHP_NEW_EXTENSION(mssql, php_mssql.c, $ext_shared) AC_CHECK_LIB(dnet_stub, dnet_addr, [ PHP_ADD_LIBRARY_WITH_PATH(dnet_stub,,MSSQL_SHARED_LIBADD) AC_DEFINE(HAVE_LIBDNET_STUB,1,[ ]) ]) AC_DEFINE(HAVE_MSSQL,1,[ ]) AC_DEFINE(HAVE_FREETDS,1,[ ]) fi

« previous php.cvs (#17252) next »