]> granicus.if.org Git - php/commitdiff
Make this compile with the generic ntwdblib from Microsoft
authorFrank M. Kromann <fmk@php.net>
Tue, 18 Jan 2005 07:17:01 +0000 (07:17 +0000)
committerFrank M. Kromann <fmk@php.net>
Tue, 18 Jan 2005 07:17:01 +0000 (07:17 +0000)
ext/pdo_dblib/config.w32
ext/pdo_dblib/dblib_driver.c
ext/pdo_dblib/dblib_stmt.c
ext/pdo_dblib/pdo_dblib.c
ext/pdo_dblib/php_pdo_dblib_int.h

index 4528970fb5c0a25cb64af60546f95da41e6d5fa9..2afa731dfd6aebb7b56d4c75123b67fabecc5abc 100755 (executable)
@@ -25,11 +25,11 @@ if (PHP_PDO_DBLIB != "no") {
                EXTENSION("pdo_dblib", "pdo_dblib.c dblib_driver.c dblib_stmt.c", null, "", 
                        PDO_DBLIB_FLAVOUR == "freetds" ? "php_pdo_sybase.dll" : "php_pdo_mssql.dll");
                if (PDO_DBLIB_FLAVOUR != "freetds") {
-                       ADD_FLAG("CFLAGS_PDO_DBLIB", "/DDBNTWIN32=1 /DMSSQL" + PDO_DBLIB_FLAVOUR + "0=1 /DMSSQL_VERSION \\\"" + PDO_DBLIB_FLAVOUR + ".0\\\"");
+                       ADD_FLAG("CFLAGS_PDO_DBLIB", "/DPHP_DBLIB_IS_MSSQL=1 /DDBNTWIN32=1 /DMSSQL" + PDO_DBLIB_FLAVOUR + "0=1 /DMSSQL_VERSION=\\\"" + PDO_DBLIB_FLAVOUR + ".0\\\"");
                        AC_DEFINE("PDO_DBLIB_IS_MSSQL", PDO_DBLIB_FLAVOUR, "Have MSSQL support");
-                       PDO_DBLIB_FLAVOUR = "MSSQL " + PDO_DBLIB_FLAVOUR;
+                       PDO_DBLIB_FLAVOUR = "MSSQL_" + PDO_DBLIB_FLAVOUR;
                }
-               ADD_FLAG('CFLAGS_PDO_DBLIB', "/I ..\\pecl /D PDO_DBLIB_FLAVOUR=\\\"" + PDO_DBLIB_FLAVOUR + "\\\"");
+               ADD_FLAG('CFLAGS_PDO_DBLIB', "/I pecl /I ..\\pecl /D PDO_DBLIB_FLAVOUR=\\\"" + PDO_DBLIB_FLAVOUR + "\\\"");
        }
        ADD_EXTENSION_DEP('pdo_dblib', 'pdo');
 }
index 2bb40ce88f02569c6f3a7a42980e68ba91a41dc0..9f3c828eb6dcb210ecf4a06a1e03ef204896f240 100644 (file)
@@ -205,11 +205,20 @@ static int pdo_dblib_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_
        if (dbh->password) {
                DBSETLPWD(H->login, dbh->password);
        }
+       
+#if !PHP_DBLIB_IS_MSSQL
        if (vars[0].optval) {
                DBSETLCHARSET(H->login, vars[0].optval);
        }
+#endif
+
        DBSETLAPP(H->login, vars[1].optval);
 
+#if PHP_DBLIB_IS_MSSQL
+       dbprocerrhandle(H->login, (EHANDLEFUNC) error_handler);
+       dbprocmsghandle(H->login, (MHANDLEFUNC) msg_handler);
+#endif
+
        H->link = dbopen(H->login, vars[2].optval);
 
        if (H->link == NULL) {
index 22e0d6628d57ebfc6ae33ab99d6dccce9788e6c3..72d9170648c40fd1cd646d9da5d846f329eef480 100644 (file)
@@ -148,7 +148,7 @@ static int pdo_dblib_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
                                        break;
 
                                default:
-                                       if (dbwillconvert(S->cols[i].coltype, SYBCHAR)) {
+                                       if (dbwillconvert(S->cols[i].coltype, SQLCHAR)) {
                                                val->len = 32 + (2 * dbdatlen(H->link, i+1));
                                                val->data = emalloc(val->len);
 
index e89c30b9bf3662a1c9fd9d91d90a1cdbd7bc3c73..d6623420db3df34995cbb7c57333ae1cd6536fa8 100644 (file)
@@ -59,7 +59,7 @@ zend_module_entry pdo_dblib_module_entry = {
 ZEND_GET_MODULE(pdo_dblib)
 #endif
 
-static int error_handler(DBPROCESS *dbproc, int severity, int dberr,
+int error_handler(DBPROCESS *dbproc, int severity, int dberr,
        int oserr, char *dberrstr, char *oserrstr)
 {
        pdo_dblib_err *einfo;
@@ -98,7 +98,7 @@ static int error_handler(DBPROCESS *dbproc, int severity, int dberr,
        return INT_CANCEL;
 }
 
-static int msg_handler(DBPROCESS *dbproc, DBINT msgno, int msgstate,
+int msg_handler(DBPROCESS *dbproc, DBINT msgno, int msgstate,
        int severity, char *msgtext, char *srvname, char *procname, DBUSMALLINT line)
 {
        pdo_dblib_err *einfo;
index 64e86b1fbe98d7aca83cac16dec24538d19a9f94..f9b729962c7fee870839d0a0e1d674563ac11adb 100644 (file)
 # define DBMSGHANDLE(a, b)     dbprocmsghandle(a, b)
 # define EHANDLEFUNC           DBERRHANDLE_PROC
 # define MHANDLEFUNC           DBMSGHANDLE_PROC
-# define DBSETOPT(a, b, b)     dbsetopt(a, b, c)
+# define DBSETOPT(a, b, c)     dbsetopt(a, b, c)
+# define SYBESMSG              SQLESMSG
+# define SYBESEOF              SQLESEOF
+# define SYBEFCON              SQLECONN                // SQLEFCON does not exist in MS SQL Server.
+# define SYBEMEM               SQLEMEM
+# define SYBEPWD               SQLEPWD
 
 #else
 # include <sybfront.h>
@@ -78,6 +83,12 @@ typedef unsigned char *LPBYTE;
 typedef float                  DBFLT4;
 #endif
 
+int error_handler(DBPROCESS *dbproc, int severity, int dberr,
+       int oserr, char *dberrstr, char *oserrstr);
+
+int msg_handler(DBPROCESS *dbproc, DBINT msgno, int msgstate,
+       int severity, char *msgtext, char *srvname, char *procname, DBUSMALLINT line);
+
 extern pdo_driver_t pdo_dblib_driver;
 extern struct pdo_stmt_methods dblib_stmt_methods;