zeev Tue Mar 13 13:13:19 2001 EDT Modified files: /php4/ext/mysql php_mysql.c Log: Use a container struct instead of MYSQL directly
Index: php4/ext/mysql/php_mysql.c diff -u php4/ext/mysql/php_mysql.c:1.73 php4/ext/mysql/php_mysql.c:1.74 --- php4/ext/mysql/php_mysql.c:1.73 Mon Mar 12 07:14:38 2001 +++ php4/ext/mysql/php_mysql.c Tue Mar 13 13:13:19 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mysql.c,v 1.73 2001/03/12 15:14:38 elixer Exp $ */ +/* $Id: php_mysql.c,v 1.74 2001/03/13 21:13:19 zeev Exp $ */ /* TODO: @@ -100,6 +100,11 @@ (mysql_field_count(mysql)>0) #endif +typedef struct _php_mysql_conn { + MYSQL conn; +} php_mysql_conn; + + function_entry mysql_functions[] = { PHP_FE(mysql_connect, NULL) PHP_FE(mysql_pconnect, NULL) @@ -206,12 +211,12 @@ static void _close_mysql_link(zend_rsrc_list_entry *rsrc) { - MYSQL *link = (MYSQL *)rsrc->ptr; + php_mysql_conn *link = (php_mysql_conn *)rsrc->ptr; void (*handler) (int); MySLS_FETCH(); handler = signal(SIGPIPE, SIG_IGN); - mysql_close(link); + mysql_close(&link->conn); signal(SIGPIPE, handler); efree(link); MySG(num_links)--; @@ -219,12 +224,12 @@ static void _close_mysql_plink(zend_rsrc_list_entry *rsrc) { - MYSQL *link = (MYSQL *)rsrc->ptr; + php_mysql_conn *link = (php_mysql_conn *)rsrc->ptr; void (*handler) (int); MySLS_FETCH(); handler = signal(SIGPIPE, SIG_IGN); - mysql_close(link); + mysql_close(&link->conn); signal(SIGPIPE, handler); free(link); @@ -356,7 +361,7 @@ char *user=NULL, *passwd=NULL, *host_and_port=NULL, *socket=NULL, *tmp=NULL, *host=NULL; char *hashed_details=NULL; int hashed_details_length, port = MYSQL_PORT; - MYSQL *mysql=NULL; + php_mysql_conn *mysql=NULL; void (*handler) (int); zval **z_host=NULL, **z_user=NULL, **z_passwd=NULL; zend_bool free_host=0; @@ -475,14 +480,14 @@ MYSQL_DO_CONNECT_RETURN_FALSE(); } /* create the link */ - mysql = (MYSQL *) malloc(sizeof(MYSQL)); + mysql = (php_mysql_conn *) malloc(sizeof(php_mysql_conn)); #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, socket, 0)==NULL) { + mysql_init(&mysql->conn); + if (mysql_real_connect(&mysql->conn, host, user, passwd, NULL, port, +socket, 0)==NULL) { #else - if (mysql_connect(mysql, host, user, passwd)==NULL) { + if (mysql_connect(&mysql->conn, host, user, passwd)==NULL) { #endif - php_error(E_WARNING, "%s", mysql_error(mysql)); + php_error(E_WARNING, "%s", mysql_error(&mysql->conn)); free(mysql); efree(hashed_details); MYSQL_DO_CONNECT_RETURN_FALSE(); @@ -506,7 +511,7 @@ handler=signal(SIGPIPE, SIG_IGN); #if defined(HAVE_MYSQL_ERRNO) && defined(CR_SERVER_GONE_ERROR) mysql_stat(le->ptr); - if (mysql_errno((MYSQL *)le->ptr) == CR_SERVER_GONE_ERROR) { + if (mysql_errno(&((php_mysql_conn *) le->ptr)->conn) == +CR_SERVER_GONE_ERROR) { #else if (!strcasecmp(mysql_stat(le->ptr), "mysql server has gone away")) { /* the link died */ #endif @@ -523,7 +528,7 @@ } } signal(SIGPIPE, handler); - mysql = (MYSQL *) le->ptr; + mysql = (php_mysql_conn *) le->ptr; } ZEND_REGISTER_RESOURCE(return_value, mysql, le_plink); } else { /* non persistent */ @@ -561,14 +566,14 @@ MYSQL_DO_CONNECT_RETURN_FALSE(); } - mysql = (MYSQL *) emalloc(sizeof(MYSQL)); + mysql = (php_mysql_conn *) emalloc(sizeof(php_mysql_conn)); #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, socket, 0)==NULL) { + mysql_init(&mysql->conn); + if (mysql_real_connect(&mysql->conn, host, user, passwd, NULL, port, +socket, 0)==NULL) { #else - if (mysql_connect(mysql, host, user, passwd)==NULL) { + if (mysql_connect(&mysql->conn, host, user, passwd)==NULL) { #endif - php_error(E_WARNING, "MySQL Connection Failed: %s\n", mysql_error(mysql)); + php_error(E_WARNING, "MySQL Connection Failed: %s\n", +mysql_error(&mysql->conn)); efree(hashed_details); efree(mysql); MYSQL_DO_CONNECT_RETURN_FALSE(); @@ -627,7 +632,7 @@ { zval **mysql_link=NULL; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch (ZEND_NUM_ARGS()) { @@ -645,7 +650,7 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); if (id==-1) { /* explicit resource number */ zend_list_delete(Z_RESVAL_PP(mysql_link)); @@ -668,7 +673,7 @@ { zval **db, **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -691,11 +696,11 @@ } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); convert_to_string_ex(db); - if (mysql_select_db(mysql, (*db)->value.str.val)!=0) { + if (mysql_select_db(&mysql->conn, (*db)->value.str.val)!=0) { RETURN_FALSE; } else { RETURN_TRUE; @@ -723,7 +728,7 @@ { zval **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -742,9 +747,9 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); - RETURN_STRING(mysql_get_host_info(mysql),1); + RETURN_STRING(mysql_get_host_info(&mysql->conn),1); } /* }}} */ @@ -754,7 +759,7 @@ { zval **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -773,9 +778,9 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); - RETURN_LONG(mysql_get_proto_info(mysql)); + RETURN_LONG(mysql_get_proto_info(&mysql->conn)); } /* }}} */ @@ -785,7 +790,7 @@ { zval **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -804,9 +809,9 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); - RETURN_STRING(mysql_get_server_info(mysql),1); + RETURN_STRING(mysql_get_server_info(&mysql->conn),1); } /* }}} */ @@ -818,7 +823,7 @@ { zval **db, **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -840,10 +845,10 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); convert_to_string_ex(db); - if (mysql_create_db(mysql, (*db)->value.str.val)==0) { + if (mysql_create_db(&mysql->conn, (*db)->value.str.val)==0) { RETURN_TRUE; } else { RETURN_FALSE; @@ -858,7 +863,7 @@ { zval **db, **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -881,10 +886,10 @@ } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); convert_to_string_ex(db); - if (mysql_drop_db(mysql, (*db)->value.str.val)==0) { + if (mysql_drop_db(&mysql->conn, (*db)->value.str.val)==0) { RETURN_TRUE; } else { RETURN_FALSE; @@ -902,7 +907,7 @@ zval **store_result; #endif int id, use_store=MYSQL_STORE_RESULT; - MYSQL *mysql; + php_mysql_conn *mysql; MYSQL_RES *mysql_result; MySLS_FETCH(); @@ -937,26 +942,26 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); convert_to_string_ex(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) { + if (mysql_real_query(&mysql->conn, (*query)->value.str.val, +(*query)->value.str.len)!=0) { RETURN_FALSE; } #else - if (mysql_query(mysql, (*query)->value.str.val)!=0) { + if (mysql_query(&mysql->conn, (*query)->value.str.val)!=0) { RETURN_FALSE; } #endif if(use_store == MYSQL_USE_RESULT) { - mysql_result=mysql_use_result(mysql); + mysql_result=mysql_use_result(&mysql->conn); } else { - mysql_result=mysql_store_result(mysql); + mysql_result=mysql_store_result(&mysql->conn); } if (!mysql_result) { - if (PHP_MYSQL_VALID_RESULT(mysql)) { /* query should have returned rows */ + if (PHP_MYSQL_VALID_RESULT(&mysql->conn)) { /* query should have +returned rows */ php_error(E_WARNING, "MySQL: Unable to save result set"); RETURN_FALSE; } else { @@ -977,7 +982,7 @@ zval **store_result; #endif int id, use_store=MYSQL_STORE_RESULT; - MYSQL *mysql; + php_mysql_conn *mysql; MYSQL_RES *mysql_result; MySLS_FETCH(); @@ -1012,31 +1017,31 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); convert_to_string_ex(db); - if (mysql_select_db(mysql, (*db)->value.str.val)!=0) { + if (mysql_select_db(&mysql->conn, (*db)->value.str.val)!=0) { RETURN_FALSE; } convert_to_string_ex(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) { + if (mysql_real_query(&mysql->conn, (*query)->value.str.val, +(*query)->value.str.len)!=0) { RETURN_FALSE; } #else - if (mysql_query(mysql, (*query)->value.str.val)!=0) { + if (mysql_query(&mysql->conn, (*query)->value.str.val)!=0) { RETURN_FALSE; } #endif if(use_store == MYSQL_USE_RESULT) { - mysql_result=mysql_use_result(mysql); + mysql_result=mysql_use_result(&mysql->conn); } else { - mysql_result=mysql_store_result(mysql); + mysql_result=mysql_store_result(&mysql->conn); } if (!mysql_result) { - if (PHP_MYSQL_VALID_RESULT(mysql)) { /* query should have returned rows */ + if (PHP_MYSQL_VALID_RESULT(&mysql->conn)) { /* query should have +returned rows */ php_error(E_WARNING, "MySQL: Unable to save result set"); RETURN_FALSE; } else { @@ -1054,7 +1059,7 @@ { zval **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MYSQL_RES *mysql_result; MySLS_FETCH(); @@ -1074,9 +1079,9 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); - if ((mysql_result=mysql_list_dbs(mysql, NULL))==NULL) { + if ((mysql_result=mysql_list_dbs(&mysql->conn, NULL))==NULL) { php_error(E_WARNING, "Unable to save MySQL query result"); RETURN_FALSE; } @@ -1091,7 +1096,7 @@ { zval **db, **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MYSQL_RES *mysql_result; MySLS_FETCH(); @@ -1114,13 +1119,13 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); convert_to_string_ex(db); - if (mysql_select_db(mysql, (*db)->value.str.val)!=0) { + if (mysql_select_db(&mysql->conn, (*db)->value.str.val)!=0) { RETURN_FALSE; } - if ((mysql_result=mysql_list_tables(mysql, NULL))==NULL) { + if ((mysql_result=mysql_list_tables(&mysql->conn, NULL))==NULL) { php_error(E_WARNING, "Unable to save MySQL query result"); RETURN_FALSE; } @@ -1135,7 +1140,7 @@ { zval **db, **table, **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MYSQL_RES *mysql_result; MySLS_FETCH(); @@ -1158,14 +1163,14 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); convert_to_string_ex(db); - if (mysql_select_db(mysql, (*db)->value.str.val)!=0) { + if (mysql_select_db(&mysql->conn, (*db)->value.str.val)!=0) { RETURN_FALSE; } convert_to_string_ex(table); - if ((mysql_result=mysql_list_fields(mysql, (*table)->value.str.val, NULL))==NULL) { + if ((mysql_result=mysql_list_fields(&mysql->conn, (*table)->value.str.val, +NULL))==NULL) { php_error(E_WARNING, "Unable to save MySQL query result"); RETURN_FALSE; } @@ -1180,7 +1185,7 @@ { zval **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -1201,9 +1206,9 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); - RETURN_STRING(mysql_error(mysql), 1); + RETURN_STRING(mysql_error(&mysql->conn), 1); } /* }}} */ @@ -1215,7 +1220,7 @@ { zval **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -1236,9 +1241,9 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); - RETURN_LONG(mysql_errno(mysql)); + RETURN_LONG(mysql_errno(&mysql->conn)); } #endif /* }}} */ @@ -1250,7 +1255,7 @@ { zval **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -1269,10 +1274,10 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); /* conversion from int64 to long happing here */ - return_value->value.lval = (long) mysql_affected_rows(mysql); + return_value->value.lval = (long) mysql_affected_rows(&mysql->conn); return_value->type = IS_LONG; } /* }}} */ @@ -1305,7 +1310,7 @@ { zval **mysql_link; int id; - MYSQL *mysql; + php_mysql_conn *mysql; MySLS_FETCH(); switch(ZEND_NUM_ARGS()) { @@ -1324,10 +1329,10 @@ break; } - ZEND_FETCH_RESOURCE2(mysql, MYSQL *, mysql_link, id, "MySQL-Link", le_link, le_plink); + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", +le_link, le_plink); /* conversion from int64 to long happing here */ - return_value->value.lval = (long) mysql_insert_id(mysql); + return_value->value.lval = (long) mysql_insert_id(&mysql->conn); return_value->type = IS_LONG; } /* }}} */ @@ -1988,3 +1993,4 @@ * c-basic-offset: 4 * End: */ +
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]