summaryrefslogtreecommitdiff
path: root/ext/sybase_ct
diff options
context:
space:
mode:
Diffstat (limited to 'ext/sybase_ct')
-rw-r--r--ext/sybase_ct/config.m445
-rw-r--r--ext/sybase_ct/php_sybase_ct.c62
2 files changed, 78 insertions, 29 deletions
diff --git a/ext/sybase_ct/config.m4 b/ext/sybase_ct/config.m4
index 4b64dc23d..aba6f478d 100644
--- a/ext/sybase_ct/config.m4
+++ b/ext/sybase_ct/config.m4
@@ -1,5 +1,5 @@
dnl
-dnl $Id: config.m4 261867 2008-07-01 17:03:46Z felipe $
+dnl $Id: config.m4 301036 2010-07-07 10:15:24Z thekid $
dnl
PHP_ARG_WITH(sybase-ct, for Sybase-CT support,
@@ -31,9 +31,50 @@ if test "$PHP_SYBASE_CT" != "no"; then
fi
PHP_ADD_LIBPATH($SYBASE_CT_LIBDIR, SYBASE_CT_SHARED_LIBADD)
- if test -f $SYBASE_CT_INCDIR/tds.h; then
+ if test -f $SYBASE_CT_INCDIR/tds.h || test -f $SYBASE_CT_INCDIR/tds_sysdep_public.h; then
PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lct"
+ elif test -f $SYBASE_CT_INCDIR/libsybct64; then
+ PHP_ADD_LIBRARY(sybcs64,, SYBASE_CT_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(sybct64,, SYBASE_CT_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(sybcomn64,, SYBASE_CT_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(sybintl64,, SYBASE_CT_SHARED_LIBADD)
+
+ ac_solid_uname_s=`uname -s 2>/dev/null`
+ case $ac_solid_uname_s in
+ *OSF*) ;; # Tru64/DEC OSF does NOT use the SYB_LP64 define
+ *) CFLAGS="${CFLAGS} -DSYB_LP64" ;; #
+ esac
+ SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lsybcs64 -lsybct64 -lsybcomn64 -lsybintl64"
+
+ PHP_CHECK_LIBRARY(sybtcl64, netg_errstr, [
+ PHP_ADD_LIBRARY(sybtcl64,,SYBASE_CT_SHARED_LIBADD)
+ ],[
+ PHP_ADD_LIBRARY(sybtcl64,,SYBASE_CT_SHARED_LIBADD)
+ ],[
+ $SYBASE_CT_LIBS
+ ])
+
+ PHP_CHECK_LIBRARY(insck64, insck__getVdate, [PHP_ADD_LIBRARY(insck64,, SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
+ PHP_CHECK_LIBRARY(insck64, bsd_tcp, [PHP_ADD_LIBRARY(insck64,, SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
+ elif test -f $SYBASE_CT_INCDIR/libsybct; then
+ PHP_ADD_LIBRARY(sybcs,, SYBASE_CT_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(sybct,, SYBASE_CT_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(sybcomn,, SYBASE_CT_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(sybintl,, SYBASE_CT_SHARED_LIBADD)
+
+ SYBASE_CT_LIBS="-L$SYBASE_CT_LIBDIR -lsybcs -lsybct -lsybcomn -lsybintl"
+
+ PHP_CHECK_LIBRARY(sybtcl, netg_errstr, [
+ PHP_ADD_LIBRARY(sybtcl,,SYBASE_CT_SHARED_LIBADD)
+ ],[
+ PHP_ADD_LIBRARY(sybtcl,,SYBASE_CT_SHARED_LIBADD)
+ ],[
+ $SYBASE_CT_LIBS
+ ])
+
+ PHP_CHECK_LIBRARY(insck, insck__getVdate, [PHP_ADD_LIBRARY(insck,, SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
+ PHP_CHECK_LIBRARY(insck, bsd_tcp, [PHP_ADD_LIBRARY(insck,, SYBASE_CT_SHARED_LIBADD)],[],[-L$SYBASE_CT_LIBDIR])
else
PHP_ADD_LIBRARY(cs,, SYBASE_CT_SHARED_LIBADD)
PHP_ADD_LIBRARY(ct,, SYBASE_CT_SHARED_LIBADD)
diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c
index 8871988df..8382a0eab 100644
--- a/ext/sybase_ct/php_sybase_ct.c
+++ b/ext/sybase_ct/php_sybase_ct.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sybase_ct.c 293036 2010-01-03 09:23:27Z sebastian $ */
+/* $Id: php_sybase_ct.c 300764 2010-06-26 16:03:39Z felipe $ */
#ifdef HAVE_CONFIG_H
@@ -180,31 +180,30 @@ const zend_function_entry sybase_functions[] = {
PHP_FE(sybase_deadlock_retry_count, arginfo_sybase_deadlock_retry_count)
#if !defined(PHP_WIN32) && !defined(HAVE_MSSQL)
- PHP_FALIAS(mssql_connect, sybase_connect, NULL)
- PHP_FALIAS(mssql_pconnect, sybase_pconnect, NULL)
- PHP_FALIAS(mssql_close, sybase_close, NULL)
- PHP_FALIAS(mssql_select_db, sybase_select_db, NULL)
- PHP_FALIAS(mssql_query, sybase_query, NULL)
- PHP_FALIAS(mssql_unbuffered_query, sybase_unbuffered_query, NULL)
- PHP_FALIAS(mssql_free_result, sybase_free_result, NULL)
- PHP_FALIAS(mssql_get_last_message, sybase_get_last_message, NULL)
- PHP_FALIAS(mssql_num_rows, sybase_num_rows, NULL)
- PHP_FALIAS(mssql_num_fields, sybase_num_fields, NULL)
- PHP_FALIAS(mssql_fetch_row, sybase_fetch_row, NULL)
- PHP_FALIAS(mssql_fetch_array, sybase_fetch_array, NULL)
- PHP_FALIAS(mssql_fetch_assoc, sybase_fetch_assoc, NULL)
- PHP_FALIAS(mssql_fetch_object, sybase_fetch_object, NULL)
- PHP_FALIAS(mssql_data_seek, sybase_data_seek, NULL)
- PHP_FALIAS(mssql_fetch_field, sybase_fetch_field, NULL)
- PHP_FALIAS(mssql_field_seek, sybase_field_seek, NULL)
- PHP_FALIAS(mssql_result, sybase_result, NULL)
- PHP_FALIAS(mssql_affected_rows, sybase_affected_rows, NULL)
- PHP_FALIAS(mssql_min_client_severity, sybase_min_client_severity, NULL)
- PHP_FALIAS(mssql_min_server_severity, sybase_min_server_severity, NULL)
- PHP_FALIAS(mssql_set_message_handler, sybase_set_message_handler, NULL)
- PHP_FALIAS(mssql_deadlock_retry_count, sybase_deadlock_retry_count, NULL)
+ PHP_FALIAS(mssql_connect, sybase_connect, arginfo_sybase_connect)
+ PHP_FALIAS(mssql_pconnect, sybase_pconnect, arginfo_sybase_pconnect)
+ PHP_FALIAS(mssql_close, sybase_close, arginfo_sybase_close)
+ PHP_FALIAS(mssql_select_db, sybase_select_db, arginfo_sybase_select_db)
+ PHP_FALIAS(mssql_query, sybase_query, arginfo_sybase_query)
+ PHP_FALIAS(mssql_unbuffered_query, sybase_unbuffered_query, arginfo_sybase_unbuffered_query)
+ PHP_FALIAS(mssql_free_result, sybase_free_result, arginfo_sybase_free_result)
+ PHP_FALIAS(mssql_get_last_message, sybase_get_last_message, arginfo_sybase_get_last_message)
+ PHP_FALIAS(mssql_num_rows, sybase_num_rows, arginfo_sybase_num_rows)
+ PHP_FALIAS(mssql_num_fields, sybase_num_fields, arginfo_sybase_num_fields)
+ PHP_FALIAS(mssql_fetch_row, sybase_fetch_row, arginfo_sybase_fetch_row)
+ PHP_FALIAS(mssql_fetch_array, sybase_fetch_array, arginfo_sybase_fetch_array)
+ PHP_FALIAS(mssql_fetch_assoc, sybase_fetch_assoc, arginfo_sybase_fetch_assoc)
+ PHP_FALIAS(mssql_fetch_object, sybase_fetch_object, arginfo_sybase_fetch_object)
+ PHP_FALIAS(mssql_data_seek, sybase_data_seek, arginfo_sybase_data_seek)
+ PHP_FALIAS(mssql_fetch_field, sybase_fetch_field, arginfo_sybase_fetch_field)
+ PHP_FALIAS(mssql_field_seek, sybase_field_seek, arginfo_sybase_field_seek)
+ PHP_FALIAS(mssql_result, sybase_result, arginfo_sybase_result)
+ PHP_FALIAS(mssql_affected_rows, sybase_affected_rows, arginfo_sybase_affected_rows)
+ PHP_FALIAS(mssql_min_client_severity, sybase_min_client_severity, arginfo_sybase_min_client_severity)
+ PHP_FALIAS(mssql_min_server_severity, sybase_min_server_severity, arginfo_sybase_min_server_severity)
+ PHP_FALIAS(mssql_set_message_handler, sybase_set_message_handler, arginfo_sybase_set_message_handler)
+ PHP_FALIAS(mssql_deadlock_retry_count, sybase_deadlock_retry_count, arginfo_sybase_deadlock_retry_count)
#endif
-
{NULL, NULL, NULL}
};
@@ -1248,8 +1247,17 @@ static int php_sybase_fetch_result_row (sybase_result *result, int numrows)
}
default: {
- /* This indicates anything else, return it as string */
- ZVAL_STRINGL(&result->data[i][j], result->tmp_buffer[j], result->lengths[j]- 1, 1);
+ /* This indicates anything else, return it as string
+ * FreeTDS doesn't correctly set result->indicators[j] correctly
+ * for NULL fields in some version in conjunction with ASE 12.5
+ * but instead sets result->lengths[j] to 0, which would lead to
+ * a negative memory allocation (and thus a segfault).
+ */
+ if (result->lengths[j] < 1) {
+ ZVAL_NULL(&result->data[i][j]);
+ } else {
+ ZVAL_STRINGL(&result->data[i][j], result->tmp_buffer[j], result->lengths[j]- 1, 1);
+ }
break;
}
}