CVS update: php31/ext/mysql
| From: | shane | Date: | Sat, 17 Oct 1998 20:45:35 +0000 |
| Subject: | CVS update: php31/ext/mysql | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-1877@lists.php.net to get a copy of this message | ||
Date: Saturday October 17, 1998 @ 16:45
Author: shane
Update of /repository/php31/ext/mysql
In directory asf:/u2/tmp/cvs-serv29817/ext/mysql
Modified Files:
mysql.c mysql.dsp php3_mysql.h
Log Message:
fixes to get 3.1 compiling again under windows.
mysql ported from 3.0 then backported to 3.0
Some project file updates
porting other extensions from 3.0 in process.
fixes to registry functions to support binary
Index: php31/ext/mysql/mysql.c
diff -c php31/ext/mysql/mysql.c:2.14 php31/ext/mysql/mysql.c:2.15
*** php31/ext/mysql/mysql.c:2.14 Mon Oct 5 11:12:14 1998
--- php31/ext/mysql/mysql.c Sat Oct 17 16:45:34 1998
***************
*** 27,33 ****
+----------------------------------------------------------------------+
*/
! /* $Id: mysql.c,v 2.14 1998/10/05 15:12:14 zeev Exp $ */
/* TODO:
--- 27,33 ----
+----------------------------------------------------------------------+
*/
! /* $Id: mysql.c,v 2.15 1998/10/17 20:45:34 shane Exp $ */
/* TODO:
***************
*** 36,48 ****
*/
#define IS_EXT_MODULE
! #if defined(THREAD_SAFE)
! #include "tls.h"
! DWORD MySQLTls;
! static int numthreads=0;
! void *mysql_mutex;
#endif
#if WIN32|WINNT
#include <winsock.h>
#else
--- 36,58 ----
*/
#define IS_EXT_MODULE
! #ifdef THREAD_SAFE
! # ifndef PHP_31
! # undef THREAD_SAFE /*no need in 3.0*/
! # else
! # include "tls.h"
! DWORD MySQLTls;
! static int numthreads=0;
! void *mysql_mutex;
! # endif
#endif
+ #if defined(COMPILE_DL) && !defined(PHP_31)
+ # include "dl/phpdl.h"
+ #else
+ # include "../phpdl.h"
+ #endif
+
#if WIN32|WINNT
#include <winsock.h>
#else
***************
*** 58,68 ****
#include "php.h"
#include "internal_functions.h"
! #include "ext/standard/php3_string.h"
! #include "php3_mysql.h"
! #if HAVE_SIGNAL_H
! #include <signal.h>
#endif
#if HAVE_MYSQL
#include <mysql.h>
#ifdef HAVE_MYSQL_REAL_CONNECT
--- 68,80 ----
#include "php.h"
#include "internal_functions.h"
! #if PHP_31
! # include "ext/standard/php3_string.h"
! #else
! # include "php3_string.h"
#endif
+ #include "php3_mysql.h"
+
#if HAVE_MYSQL
#include <mysql.h>
#ifdef HAVE_MYSQL_REAL_CONNECT
***************
*** 72,92 ****
#endif
#include "php3_list.h"
- #ifdef COMPILE_DL
- #ifdef DLEXPORT
- #undef DLEXPORT
- #endif
- #include "../phpdl.h"
- #endif
-
#define SAFE_STRING(s) ((s)?(s):"")
! #if WIN32|WINNT
! # define SIGNAL(s, h) NULL
#else
! # define SIGNAL(s, h) signal(s, h)
#endif
function_entry mysql_functions[] = {
{"mysql_connect", php3_mysql_connect, NULL},
{"mysql_pconnect", php3_mysql_pconnect, NULL},
--- 84,98 ----
#endif
#include "php3_list.h"
#define SAFE_STRING(s) ((s)?(s):"")
! #if MYSQL_VERSION_ID > 32199
! #define mysql_row_length_type unsigned long
#else
! #define mysql_row_length_type unsigned int
#endif
+
function_entry mysql_functions[] = {
{"mysql_connect", php3_mysql_connect, NULL},
{"mysql_pconnect", php3_mysql_pconnect, NULL},
***************
*** 149,162 ****
#ifdef COMPILE_DL
DLEXPORT php3_module_entry *get_module(void) { return &mysql_module_entry; }
- #if WIN32|WINNT
- BOOL WINAPI DllMain(HANDLE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved)
- {
- return 1;
- }
#endif
#endif
#if defined(THREAD_SAFE)
--- 155,164 ----
#ifdef COMPILE_DL
DLEXPORT php3_module_entry *get_module(void) { return &mysql_module_entry; }
#endif
+
+ #if APACHE
+ extern void timeout(int sig);
#endif
#if defined(THREAD_SAFE)
***************
*** 165,174 ****
}mysql_global_struct;
#define MySQL_GLOBAL(a) mysql_globals->a
!
! #define MySQL_TLS_VARS \
! mysql_global_struct *mysql_globals; \
! mysql_globals=TlsGetValue(MySQLTls);
#else
#define MySQL_GLOBAL(a) a
--- 167,173 ----
}mysql_global_struct;
#define MySQL_GLOBAL(a) mysql_globals->a
! #define MySQL_TLS_VARS mysql_global_struct *mysql_globals=TlsGetValue(MySQLTls);
#else
#define MySQL_GLOBAL(a) a
***************
*** 178,204 ****
#define CHECK_LINK(link) { if (link==-1) { php3_error(E_WARNING,"MySQL: A link to the server
could not be established"); RETURN_FALSE; } }
static void _close_mysql_link(MYSQL *link)
{
void (*handler) (int);
MySQL_TLS_VARS;
- handler = SIGNAL(SIGPIPE, SIG_IGN); /* Just to be safe */
mysql_close(link);
! SIGNAL(SIGPIPE,handler);
efree(link);
MySQL_GLOBAL(php3_mysql_module).num_links--;
}
static void _close_mysql_plink(MYSQL *link)
{
void (*handler) (int);
MySQL_TLS_VARS;
! handler = SIGNAL(SIGPIPE, SIG_IGN); /* Just to be safe */
mysql_close(link);
- SIGNAL(SIGPIPE,handler);
free(link);
MySQL_GLOBAL(php3_mysql_module).num_persistent--;
MySQL_GLOBAL(php3_mysql_module).num_links--;
--- 177,228 ----
#define CHECK_LINK(link) { if (link==-1) { php3_error(E_WARNING,"MySQL: A link to the server
could not be established"); RETURN_FALSE; } }
+ /* NOTE Don't ask me why, but soon as I made this the list
+ * destructor, I stoped getting access violations in windows
+ * with mysql 3.22.7a
+ */
+ static void _free_mysql_result(MYSQL_RES *mysql_result){
+ mysql_free_result(mysql_result);
+ }
+
static void _close_mysql_link(MYSQL *link)
{
+ #if APACHE
void (*handler) (int);
+ #endif
MySQL_TLS_VARS;
+
+ #if APACHE
+ handler = signal(SIGPIPE, SIG_IGN);
+ #endif
mysql_close(link);
!
! #if APACHE
! signal(SIGPIPE,handler);
! #endif
!
efree(link);
MySQL_GLOBAL(php3_mysql_module).num_links--;
}
static void _close_mysql_plink(MYSQL *link)
{
+ #if APACHE
void (*handler) (int);
+ #endif
MySQL_TLS_VARS;
! #if APACHE
! handler = signal(SIGPIPE, SIG_IGN);
! #endif
!
mysql_close(link);
+ #if APACHE
+ signal(SIGPIPE,handler);
+ #endif
+
free(link);
MySQL_GLOBAL(php3_mysql_module).num_persistent--;
MySQL_GLOBAL(php3_mysql_module).num_links--;
***************
*** 263,271 ****
MySQL_GLOBAL(php3_mysql_module).default_port = MYSQL_PORT;
#endif
}
-
MySQL_GLOBAL(php3_mysql_module).num_persistent=0;
! MySQL_GLOBAL(php3_mysql_module).le_result = register_list_destructors(mysql_free_result,NULL);
MySQL_GLOBAL(php3_mysql_module).le_link = register_list_destructors(_close_mysql_link,NULL);
MySQL_GLOBAL(php3_mysql_module).le_plink = register_list_destructors(NULL,_close_mysql_plink);
--- 287,294 ----
MySQL_GLOBAL(php3_mysql_module).default_port = MYSQL_PORT;
#endif
}
MySQL_GLOBAL(php3_mysql_module).num_persistent=0;
! MySQL_GLOBAL(php3_mysql_module).le_result = register_list_destructors(_free_mysql_result,NULL);
MySQL_GLOBAL(php3_mysql_module).le_link = register_list_destructors(_close_mysql_link,NULL);
MySQL_GLOBAL(php3_mysql_module).le_plink = register_list_destructors(NULL,_close_mysql_plink);
***************
*** 284,290 ****
PHP3_TLS_THREAD_FREE(mysql_globals);
PHP3_MUTEX_LOCK(mysql_mutex);
numthreads--;
! if (!numthreads) {
PHP3_TLS_PROC_SHUTDOWN(MySQLTls);
PHP3_MUTEX_UNLOCK(mysql_mutex);
PHP3_MUTEX_FREE(mysql_mutex);
--- 307,313 ----
PHP3_TLS_THREAD_FREE(mysql_globals);
PHP3_MUTEX_LOCK(mysql_mutex);
numthreads--;
! if (numthreads<1) {
PHP3_TLS_PROC_SHUTDOWN(MySQLTls);
PHP3_MUTEX_UNLOCK(mysql_mutex);
PHP3_MUTEX_FREE(mysql_mutex);
***************
*** 327,354 ****
"<tr><td>Persistent
links:</td><td>%d/%s</td></tr>\n"
"<tr><td>Total links:</td><td>%d/%s</td></tr>\n"
"<tr><td>Client API
version:</td><td>%s</td></tr>\n"
"</table>\n",
(MySQL_GLOBAL(php3_mysql_module).allow_persistent?"Yes":"No"),
MySQL_GLOBAL(php3_mysql_module).num_persistent,maxp,
MySQL_GLOBAL(php3_mysql_module).num_links,maxl,
mysql_get_client_info()
);
}
static void php3_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)
{
void (*handler) (int);
char *user,*passwd,*host,*tmp;
char *hashed_details;
! int hashed_details_length;
MYSQL *mysql;
- int sql_safe_mode=0;
MySQL_TLS_VARS;
-
- cfg_get_long("mysql.allow_persistent",&sql_safe_mode);
! if (sql_safe_mode) {
if (ARG_COUNT(ht)>0) {
php3_error(E_NOTICE,"SQL safe mode in effect - ignoring host/user/password
information");
}
--- 350,387 ----
"<tr><td>Persistent
links:</td><td>%d/%s</td></tr>\n"
"<tr><td>Total links:</td><td>%d/%s</td></tr>\n"
"<tr><td>Client API
version:</td><td>%s</td></tr>\n"
+ #if !(WIN32|WINNT)
+ "<tr><td valign=\"top\">Compilation
definitions:</td><td>"
+ "<tt>MYSQL_INCLUDE=%s<br>\n"
+ "MYSQL_LFLAGS=%s<br>\n"
+ "MYSQL_LIBS=%s<br></tt></td></tr>"
+ #endif
"</table>\n",
(MySQL_GLOBAL(php3_mysql_module).allow_persistent?"Yes":"No"),
MySQL_GLOBAL(php3_mysql_module).num_persistent,maxp,
MySQL_GLOBAL(php3_mysql_module).num_links,maxl,
mysql_get_client_info()
+ #if !(WIN32|WINNT)
+ ,PHP_MYSQL_INCLUDE,PHP_MYSQL_LFLAGS,PHP_MYSQL_LIBS
+ #endif
);
}
static void php3_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)
{
+ #if APACHE
void (*handler) (int);
+ #endif
char *user,*passwd,*host,*tmp;
char *hashed_details;
! int hashed_details_length,port;
MYSQL *mysql;
MySQL_TLS_VARS;
! /*FIXME need to deal with php3_ini, not available in external modules*/
! #ifndef PHP_31
! if (php3_ini.sql_safe_mode) {
if (ARG_COUNT(ht)>0) {
php3_error(E_NOTICE,"SQL safe mode in effect - ignoring host/user/password
information");
}
***************
*** 357,363 ****
hashed_details_length = strlen(user)+5+3;
hashed_details = (char *) emalloc(hashed_details_length+1);
sprintf(hashed_details,"mysql__%s_",user);
! } else {
host = MySQL_GLOBAL(php3_mysql_module).default_host;
user = MySQL_GLOBAL(php3_mysql_module).default_user;
passwd = MySQL_GLOBAL(php3_mysql_module).default_password;
--- 390,398 ----
hashed_details_length = strlen(user)+5+3;
hashed_details = (char *) emalloc(hashed_details_length+1);
sprintf(hashed_details,"mysql__%s_",user);
! } else
! #endif
! {
host = MySQL_GLOBAL(php3_mysql_module).default_host;
user = MySQL_GLOBAL(php3_mysql_module).default_user;
passwd = MySQL_GLOBAL(php3_mysql_module).default_password;
***************
*** 409,425 ****
hashed_details = (char *) emalloc(hashed_details_length+1);
sprintf(hashed_details,"mysql_%s_%s_%s",SAFE_STRING(host), SAFE_STRING(user),
SAFE_STRING(passwd));
}
-
! /* FIXME this causes an access violation in windows */
! #if !(WIN32|WINNT)
if (host && (tmp=strchr(host,':'))) {
*tmp=0;
tmp++;
! mysql_port = atoi(tmp);
} else {
! mysql_port = MySQL_GLOBAL(php3_mysql_module).default_port;
}
#endif
if (!MySQL_GLOBAL(php3_mysql_module).allow_persistent) {
--- 444,463 ----
hashed_details = (char *) emalloc(hashed_details_length+1);
sprintf(hashed_details,"mysql_%s_%s_%s",SAFE_STRING(host), SAFE_STRING(user),
SAFE_STRING(passwd));
}
! /* We cannot use mysql_port anymore in windows, need to use
! * mysql_real_connect() to set the port.
! */
if (host && (tmp=strchr(host,':'))) {
*tmp=0;
tmp++;
! port = atoi(tmp);
} else {
! port = MySQL_GLOBAL(php3_mysql_module).default_port;
}
+
+ #if MYSQL_VERSION_ID < 32200
+ mysql_port = port;
#endif
if (!MySQL_GLOBAL(php3_mysql_module).allow_persistent) {
***************
*** 443,450 ****
RETURN_FALSE;
}
/* create the link */
! mysql = (MYSQL *) malloc(sizeof(MYSQL));
! if (mysql_connect(mysql,host,user,passwd)==NULL) {
php3_error(E_WARNING,mysql_error(mysql));
free(mysql);
efree(hashed_details);
--- 481,493 ----
RETURN_FALSE;
}
/* create the link */
! mysql = (MYSQL *) malloc(sizeof(MYSQL));
! #if MYSQL_VERSION_ID > 32199 /* this lets us set the port number */
! mysql_init(mysql);
! if (mysql_real_connect(mysql,host,user,passwd,NULL,port,NULL,0)==NULL) {
! #else
! if (mysql_connect(mysql,host,user,passwd)==NULL) {
! #endif
php3_error(E_WARNING,mysql_error(mysql));
free(mysql);
efree(hashed_details);
***************
*** 466,487 ****
RETURN_FALSE;
}
/* ensure that the link did not die */
! handler = SIGNAL(SIGPIPE,SIG_IGN);
#if defined(mysql_errno) && defined(CR_SERVER_GONE_ERROR)
mysql_stat(le->ptr);
if (mysql_errno((MYSQL *)le->ptr) == CR_SERVER_GONE_ERROR) {
#else
if (!strcasecmp(mysql_stat(le->ptr),"mysql server has gone away")) { /* the link
died */
#endif
! SIGNAL(SIGPIPE,handler);
if (mysql_connect(le->ptr,host,user,passwd)==NULL) {
php3_error(E_WARNING,"MySQL: Link to server lost, unable to reconnect");
_php3_hash_del(plist, hashed_details, hashed_details_length+1);
efree(hashed_details);
RETURN_FALSE;
}
}
! SIGNAL(SIGPIPE,handler);
mysql = (MYSQL *) le->ptr;
}
return_value->value.lval = php3_list_insert(mysql,MySQL_GLOBAL(php3_mysql_module).le_plink);
--- 509,540 ----
RETURN_FALSE;
}
/* ensure that the link did not die */
! #if APACHE
! handler=signal(SIGPIPE,SIG_IGN);
! #endif
#if defined(mysql_errno) && defined(CR_SERVER_GONE_ERROR)
mysql_stat(le->ptr);
if (mysql_errno((MYSQL *)le->ptr) == CR_SERVER_GONE_ERROR) {
#else
if (!strcasecmp(mysql_stat(le->ptr),"mysql server has gone away")) { /* the link
died */
+ #endif
+ #if APACHE
+ signal(SIGPIPE,handler);
#endif
! #if MYSQL_VERSION_ID > 32199 /* this lets us set the port number */
! if (mysql_real_connect(le->ptr,host,user,passwd,NULL,port,NULL,0)==NULL) {
! #else
if (mysql_connect(le->ptr,host,user,passwd)==NULL) {
+ #endif
php3_error(E_WARNING,"MySQL: Link to server lost, unable to reconnect");
_php3_hash_del(plist, hashed_details, hashed_details_length+1);
efree(hashed_details);
RETURN_FALSE;
}
}
! #if APACHE
! signal(SIGPIPE,handler);
! #endif
mysql = (MYSQL *) le->ptr;
}
return_value->value.lval = php3_list_insert(mysql,MySQL_GLOBAL(php3_mysql_module).le_plink);
***************
*** 521,529 ****
efree(hashed_details);
RETURN_FALSE;
}
mysql = (MYSQL *) emalloc(sizeof(MYSQL));
if (mysql_connect(mysql,host,user,passwd)==NULL) {
! php3_error(E_WARNING,mysql_error(mysql));
efree(hashed_details);
efree(mysql);
RETURN_FALSE;
--- 574,588 ----
efree(hashed_details);
RETURN_FALSE;
}
+
mysql = (MYSQL *) emalloc(sizeof(MYSQL));
+ #if MYSQL_VERSION_ID > 32199 /* this lets us set the port number */
+ mysql_init(mysql);
+ if (mysql_real_connect(mysql,host,user,passwd,NULL,port,NULL,0)==NULL) {
+ #else
if (mysql_connect(mysql,host,user,passwd)==NULL) {
! #endif
! php3_error(E_WARNING,"MySQL Connection Failed: %s\n",mysql_error(mysql));
efree(hashed_details);
efree(mysql);
RETURN_FALSE;
***************
*** 532,538 ****
/* add it to the list */
return_value->value.lval = php3_list_insert(mysql,MySQL_GLOBAL(php3_mysql_module).le_link);
return_value->type = IS_LONG;
!
/* add it to the hash */
new_index_ptr.ptr = (void *) return_value->value.lval;
#ifdef THREAD_SAFE
--- 591,597 ----
/* add it to the list */
return_value->value.lval = php3_list_insert(mysql,MySQL_GLOBAL(php3_mysql_module).le_link);
return_value->type = IS_LONG;
!
/* add it to the hash */
new_index_ptr.ptr = (void *) return_value->value.lval;
#ifdef THREAD_SAFE
***************
*** 546,551 ****
--- 605,611 ----
}
MySQL_GLOBAL(php3_mysql_module).num_links++;
}
+
efree(hashed_details);
MySQL_GLOBAL(php3_mysql_module).default_link=return_value->value.lval;
}
***************
*** 583,589 ****
MYSQL *mysql;
MySQL_TLS_VARS;
-
switch (ARG_COUNT(ht)) {
case 0:
id = MySQL_GLOBAL(php3_mysql_module).default_link;
--- 643,648 ----
***************
*** 653,659 ****
} else {
RETURN_TRUE;
}
-
}
void php3_mysql_create_db(INTERNAL_FUNCTION_PARAMETERS)
--- 712,717 ----
***************
*** 779,787 ****
--- 837,852 ----
}
convert_to_string(query);
+ /* mysql_query binary unsafe, use mysql_real_query */
+ #if MYSQL_VERSION_ID > 32199
+ if (mysql_real_query(mysql,query->value.str.val,query->value.str.len)!=0) {
+ RETURN_FALSE;
+ }
+ #else
if (mysql_query(mysql,query->value.str.val)!=0) {
RETURN_FALSE;
}
+ #endif
if ((mysql_result=mysql_store_result(mysql))==NULL) {
/*php3_error(E_WARNING,"Unable to save MySQL query result");
RETURN_FALSE;
***************
*** 835,843 ****
--- 900,915 ----
}
convert_to_string(query);
+ /* mysql_query is binary unsafe, use mysql_real_query */
+ #if MYSQL_VERSION_ID > 32199
+ if (mysql_real_query(mysql,query->value.str.val,query->value.str.len)!=0) {
+ RETURN_FALSE;
+ }
+ #else
if (mysql_query(mysql,query->value.str.val)!=0) {
RETURN_FALSE;
}
+ #endif
if ((mysql_result=mysql_store_result(mysql))==NULL) {
/*
php3_error(E_WARNING,"Unable to save MySQL query result");
***************
*** 1096,1102 ****
RETURN_FALSE;
}
! /* WARNING 3.22.6 uses int64 */
return_value->value.lval = (long)mysql_affected_rows(mysql);
return_value->type = IS_LONG;
}
--- 1168,1174 ----
RETURN_FALSE;
}
! /* conversion from int64 to long happing here */
return_value->value.lval = (long)mysql_affected_rows(mysql);
return_value->type = IS_LONG;
}
***************
*** 1132,1138 ****
RETURN_FALSE;
}
! /* WARNING 3.22.6 uses int64 */
return_value->value.lval = (long)mysql_insert_id(mysql);
return_value->type = IS_LONG;
}
--- 1204,1210 ----
RETURN_FALSE;
}
! /* conversion from int64 to long happing here */
return_value->value.lval = (long)mysql_insert_id(mysql);
return_value->type = IS_LONG;
}
***************
*** 1143,1149 ****
pval *result, *row, *field=NULL;
MYSQL_RES *mysql_result;
MYSQL_ROW sql_row;
! unsigned int *sql_row_lengths;
int type,field_offset=0;
MySQL_TLS_VARS;
--- 1215,1221 ----
pval *result, *row, *field=NULL;
MYSQL_RES *mysql_result;
MYSQL_ROW sql_row;
! mysql_row_length_type *sql_row_lengths;
int type,field_offset=0;
MySQL_TLS_VARS;
***************
*** 1233,1245 ****
}
if (sql_row[field_offset]) {
! /* FIXME php3ini issue
if (php3_ini.magic_quotes_runtime) {
return_value->value.str.val =
_php3_addslashes(sql_row[field_offset],sql_row_lengths[field_offset],&return_value->value.str.len,0);
! } else { */
return_value->value.str.len = sql_row_lengths[field_offset];
return_value->value.str.val = (char *)
safe_estrndup(sql_row[field_offset],return_value->value.str.len);
! /* } */
} else {
return_value->value.str.val = undefined_variable_string;
return_value->value.str.len=0;
--- 1305,1319 ----
}
if (sql_row[field_offset]) {
! #ifndef PHP_31 /* FIXME: cannot access php3_ini in modules */
if (php3_ini.magic_quotes_runtime) {
return_value->value.str.val =
_php3_addslashes(sql_row[field_offset],sql_row_lengths[field_offset],&return_value->value.str.len,0);
! } else
! #endif
! {
return_value->value.str.len = sql_row_lengths[field_offset];
return_value->value.str.val = (char *)
safe_estrndup(sql_row[field_offset],return_value->value.str.len);
! }
} else {
return_value->value.str.val = undefined_variable_string;
return_value->value.str.len=0;
***************
*** 1270,1276 ****
RETURN_FALSE;
}
! /* WARNING 3.22.6 uses int64 */
return_value->value.lval = (long)mysql_num_rows(mysql_result);
return_value->type = IS_LONG;
}
--- 1344,1350 ----
RETURN_FALSE;
}
! /* conversion from int64 to long happing here */
return_value->value.lval = (long)mysql_num_rows(mysql_result);
return_value->type = IS_LONG;
}
***************
*** 1306,1312 ****
pval *result;
MYSQL_RES *mysql_result;
MYSQL_ROW mysql_row;
! unsigned int *mysql_row_lengths;
int type;
int num_fields;
int i;
--- 1380,1386 ----
pval *result;
MYSQL_RES *mysql_result;
MYSQL_ROW mysql_row;
! mysql_row_length_type *mysql_row_lengths;
int type;
int num_fields;
int i;
***************
*** 1335,1349 ****
for (i=0; i<num_fields; i++) {
if (mysql_row[i]) {
! /* FIXME php3ini issue
if (php3_ini.magic_quotes_runtime) {
int len;
char *tmp=_php3_addslashes(mysql_row[i],mysql_row_lengths[i],&len,0);
add_index_stringl(return_value, i, tmp, len, 0);
! } else { */
add_index_stringl(return_value, i, mysql_row[i], mysql_row_lengths[i], 1);
! /* } */
} else {
/* NULL field, don't set it */
/*add_index_stringl(return_value, i, empty_string, 0, 1);*/
--- 1409,1425 ----
for (i=0; i<num_fields; i++) {
if (mysql_row[i]) {
! #ifndef PHP_31 /* FIXME cannot access php3_ini in modules */
if (php3_ini.magic_quotes_runtime) {
int len;
char *tmp=_php3_addslashes(mysql_row[i],mysql_row_lengths[i],&len,0);
add_index_stringl(return_value, i, tmp, len, 0);
! } else
! #endif
! {
add_index_stringl(return_value, i, mysql_row[i], mysql_row_lengths[i], 1);
! }
} else {
/* NULL field, don't set it */
/*add_index_stringl(return_value, i, empty_string, 0, 1);*/
***************
*** 1358,1364 ****
MYSQL_RES *mysql_result;
MYSQL_ROW mysql_row;
MYSQL_FIELD *mysql_field;
! unsigned int *mysql_row_lengths;
int type;
int num_fields;
int i;
--- 1434,1440 ----
MYSQL_RES *mysql_result;
MYSQL_ROW mysql_row;
MYSQL_FIELD *mysql_field;
! mysql_row_length_type *mysql_row_lengths;
int type;
int num_fields;
int i;
***************
*** 1391,1405 ****
mysql_field_seek(mysql_result,0);
for (mysql_field=mysql_fetch_field(mysql_result),i=0; mysql_field;
mysql_field=mysql_fetch_field(mysql_result),i++) {
if (mysql_row[i]) {
! /* FIXME php3ini issue
if (php3_ini.magic_quotes_runtime) {
int len;
char *tmp=_php3_addslashes(mysql_row[i],mysql_row_lengths[i],&len,0);
add_get_index_stringl(return_value, i, tmp, len, (void **) &pval_ptr, 0);
! } else { */
add_get_index_stringl(return_value, i, mysql_row[i], mysql_row_lengths[i], (void **)
&pval_ptr, 1);
! /* } */
_php3_hash_pointer_update(return_value->value.ht, mysql_field->name,
strlen(mysql_field->name)+1, pval_ptr);
} else {
/* NULL field, don't set it */
--- 1467,1483 ----
mysql_field_seek(mysql_result,0);
for (mysql_field=mysql_fetch_field(mysql_result),i=0; mysql_field;
mysql_field=mysql_fetch_field(mysql_result),i++) {
if (mysql_row[i]) {
! #ifndef PHP_31 /* FIXME cannot access php3_ini in modules */
if (php3_ini.magic_quotes_runtime) {
int len;
char *tmp=_php3_addslashes(mysql_row[i],mysql_row_lengths[i],&len,0);
add_get_index_stringl(return_value, i, tmp, len, (void **) &pval_ptr, 0);
! } else
! #endif
! {
add_get_index_stringl(return_value, i, mysql_row[i], mysql_row_lengths[i], (void **)
&pval_ptr, 1);
! }
_php3_hash_pointer_update(return_value->value.ht, mysql_field->name,
strlen(mysql_field->name)+1, pval_ptr);
} else {
/* NULL field, don't set it */
***************
*** 1457,1463 ****
{
pval *result;
MYSQL_RES *mysql_result;
! int *lengths;
int type;
int num_fields;
int i;
--- 1535,1541 ----
{
pval *result;
MYSQL_RES *mysql_result;
! mysql_row_length_type *lengths;
int type;
int num_fields;
int i;
***************
*** 1588,1599 ****
add_property_string(return_value,
"table",(mysql_field->table?mysql_field->table:empty_string), 1);
add_property_string(return_value,
"def",(mysql_field->def?mysql_field->def:empty_string), 1);
add_property_long(return_value, "max_length",mysql_field->max_length);
! add_property_long(return_value, "not_null",IS_NOT_NULL(mysql_field->flags));
! add_property_long(return_value, "primary_key",IS_PRI_KEY(mysql_field->flags));
add_property_long(return_value,
"multiple_key",(mysql_field->flags&MULTIPLE_KEY_FLAG?1:0));
add_property_long(return_value,
"unique_key",(mysql_field->flags&UNIQUE_KEY_FLAG?1:0));
! add_property_long(return_value, "numeric",IS_NUM(mysql_field->type));
! add_property_long(return_value, "blob",IS_BLOB(mysql_field->flags));
add_property_string(return_value,
"type",php3_mysql_get_field_name(mysql_field->type), 1);
add_property_long(return_value,
"unsigned",(mysql_field->flags&UNSIGNED_FLAG?1:0));
add_property_long(return_value,
"zerofill",(mysql_field->flags&ZEROFILL_FLAG?1:0));
--- 1666,1677 ----
add_property_string(return_value,
"table",(mysql_field->table?mysql_field->table:empty_string), 1);
add_property_string(return_value,
"def",(mysql_field->def?mysql_field->def:empty_string), 1);
add_property_long(return_value, "max_length",mysql_field->max_length);
! add_property_long(return_value, "not_null",IS_NOT_NULL(mysql_field->flags)?1:0);
! add_property_long(return_value, "primary_key",IS_PRI_KEY(mysql_field->flags)?1:0);
add_property_long(return_value,
"multiple_key",(mysql_field->flags&MULTIPLE_KEY_FLAG?1:0));
add_property_long(return_value,
"unique_key",(mysql_field->flags&UNIQUE_KEY_FLAG?1:0));
! add_property_long(return_value, "numeric",IS_NUM(mysql_field->type)?1:0);
! add_property_long(return_value, "blob",IS_BLOB(mysql_field->flags)?1:0);
add_property_string(return_value,
"type",php3_mysql_get_field_name(mysql_field->type), 1);
add_property_long(return_value,
"unsigned",(mysql_field->flags&UNSIGNED_FLAG?1:0));
add_property_long(return_value,
"zerofill",(mysql_field->flags&ZEROFILL_FLAG?1:0));
***************
*** 1641,1646 ****
--- 1719,1726 ----
MYSQL_RES *mysql_result;
MYSQL_FIELD *mysql_field;
int type;
+ char buf[512];
+ int len;
MySQL_TLS_VARS;
if (ARG_COUNT(ht)!=2 || getParameters(ht, 2, &result, &field)==FAILURE) {
***************
*** 1687,1708 ****
return_value->type = IS_STRING;
break;
case PHP3_MYSQL_FIELD_FLAGS:
! if (IS_NOT_NULL(mysql_field->flags) && IS_PRI_KEY(mysql_field->flags)) {
! return_value->value.str.val = estrndup("primary key not null",20);
! return_value->value.str.len = 20;
! return_value->type = IS_STRING;
! } else if (IS_NOT_NULL(mysql_field->flags)) {
! return_value->value.str.val = estrndup("not null",8);
! return_value->value.str.len = 8;
! return_value->type = IS_STRING;
! } else if (IS_PRI_KEY(mysql_field->flags)) {
! return_value->value.str.val = estrndup("primary key",11);
! return_value->value.str.len = 11;
! return_value->type = IS_STRING;
! } else {
! var_reset(return_value);
}
break;
default:
RETURN_FALSE;
}
--- 1767,1840 ----
return_value->type = IS_STRING;
break;
case PHP3_MYSQL_FIELD_FLAGS:
! strcpy(buf, "");
! #ifdef IS_NOT_NULL
! if (IS_NOT_NULL(mysql_field->flags)) {
! strcat(buf, "not_null ");
! }
! #endif
! #ifdef IS_PRI_KEY
! if (IS_PRI_KEY(mysql_field->flags)) {
! strcat(buf, "primary_key ");
! }
! #endif
! #ifdef UNIQUE_KEY_FLAG
! if (mysql_field->flags&UNIQUE_KEY_FLAG) {
! strcat(buf, "unique_key ");
! }
! #endif
! #ifdef MULTIPLE_KEY_FLAG
! if (mysql_field->flags&MULTIPLE_KEY_FLAG) {
! strcat(buf, "multiple_key ");
! }
! #endif
! #ifdef IS_BLOB
! if (IS_BLOB(mysql_field->flags)) {
! strcat(buf, "blob ");
! }
! #endif
! #ifdef UNSIGNED_FLAG
! if (mysql_field->flags&UNSIGNED_FLAG) {
! strcat(buf, "unsigned ");
! }
! #endif
! #ifdef ZEROFILL_FLAG
! if (mysql_field->flags&ZEROFILL_FLAG) {
! strcat(buf, "zerofill ");
}
+ #endif
+ #ifdef BINARY_FLAG
+ if (mysql_field->flags&BINARY_FLAG) {
+ strcat(buf, "binary ");
+ }
+ #endif
+ #ifdef ENUM_FLAG
+ if (mysql_field->flags&ENUM_FLAG) {
+ strcat(buf, "enum ");
+ }
+ #endif
+ #ifdef AUTO_INCREMENT_FLAG
+ if (mysql_field->flags&AUTO_INCREMENT_FLAG) {
+ strcat(buf, "auto_increment ");
+ }
+ #endif
+ #ifdef TIMESTAMP_FLAG
+ if (mysql_field->flags&TIMESTAMP_FLAG) {
+ strcat(buf, "timestamp ");
+ }
+ #endif
+ len = strlen(buf);
+ /* remove trailing space, if present */
+ if (len && buf[len-1] == ' ') {
+ buf[len-1] = 0;
+ len--;
+ }
+
+ return_value->value.str.len = len;
+ return_value->value.str.val = estrndup(buf, len);
+ return_value->type = IS_STRING;
break;
+
default:
RETURN_FALSE;
}
Index: php31/ext/mysql/mysql.dsp
diff -c php31/ext/mysql/mysql.dsp:2.3 php31/ext/mysql/mysql.dsp:2.4
*** php31/ext/mysql/mysql.dsp:2.3 Wed Sep 30 00:01:34 1998
--- php31/ext/mysql/mysql.dsp Sat Oct 17 16:45:34 1998
***************
*** 1,5 ****
# Microsoft Developer Studio Project File - Name="mysql" - Package Owner=<4>
! # Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
--- 1,5 ----
# Microsoft Developer Studio Project File - Name="mysql" - Package Owner=<4>
! # Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
***************
*** 22,27 ****
--- 22,28 ----
!MESSAGE
# Begin Project
+ # PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
***************
*** 43,50 ****
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D
"_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../../include" /I "./" /I
"../../" /I "../../main" /D "HAVE_MYSQL" /D "HAVE_ERRMSG_H"
/D "THREAD_SAFE" /D "MSVC5" /D "COMPILE_DL" /D "WIN32" /D
"NDEBUG" /D "_WINDOWS" /YX /FD /I /usr/src/phpcvs/php3" /I
/usr/src/mysql/include" " " /c
! # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
! # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
--- 44,51 ----
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D
"_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../../include" /I "./" /I
"../../" /I "../../main" /D "HAVE_MYSQL" /D "HAVE_ERRMSG_H"
/D "THREAD_SAFE" /D "MSVC5" /D "COMPILE_DL" /D "WIN32" /D
"NDEBUG" /D "_WINDOWS" /YX /FD /I /usr/src/phpcvs/php3" /I
/usr/src/mysql/include" " " /c
! # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
! # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
***************
*** 69,77 ****
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /YX /FD /c
! # ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "./" /I "../../" /I
"../../main" /I "../../../../include" /D "HAVE_MYSQL" /D
"HAVE_ERRMSG_H" /D "THREAD_SAFE" /D "DEBUG" /D "MSVC5" /D
"COMPILE_DL" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /I
/usr/src/phpcvs/php3" /I /usr/src/mysql/include" " " /c
! # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
! # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
--- 70,78 ----
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D
"_WINDOWS" /YX /FD /c
! # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "./" /I "../../" /I
"../../main" /I "../../../../include" /D PHP_31=1 /D "HAVE_MYSQL" /D
"HAVE_ERRMSG_H" /D "THREAD_SAFE" /D "DEBUG" /D "MSVC5" /D
"COMPILE_DL" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /I
/usr/src/phpcvs/php3" /I /usr/src/mysql/include" " " /c
! # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
! # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
Index: php31/ext/mysql/php3_mysql.h
diff -c php31/ext/mysql/php3_mysql.h:2.0 php31/ext/mysql/php3_mysql.h:2.1
*** php31/ext/mysql/php3_mysql.h:2.0 Fri Jul 3 09:13:39 1998
--- php31/ext/mysql/php3_mysql.h Sat Oct 17 16:45:35 1998
***************
*** 28,39 ****
*/
! /* $Id: php3_mysql.h,v 2.0 1998/07/03 13:13:39 rasmus Exp $ */
#ifndef _PHP3_MYSQL_H
#define _PHP3_MYSQL_H
! #ifdef COMPILE_DL
#undef HAVE_MYSQL
#define HAVE_MYSQL 1
#endif
--- 28,39 ----
*/
! /* $Id: php3_mysql.h,v 2.1 1998/10/17 20:45:35 shane Exp $ */
#ifndef _PHP3_MYSQL_H
#define _PHP3_MYSQL_H
! #if COMPILE_DL
#undef HAVE_MYSQL
#define HAVE_MYSQL 1
#endif
--
PHP Development Mailing List http://www.php.net/
To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net
For help: php-dev-help@lists.php.net