Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:27908 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 67952 invoked by uid 1010); 8 Feb 2007 15:23:26 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 67937 invoked from network); 8 Feb 2007 15:23:25 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 8 Feb 2007 15:23:25 -0000 Authentication-Results: pb1.pair.com smtp.mail=scottmacvicar@ntlworld.com; spf=unknown; sender-id=unknown Authentication-Results: pb1.pair.com header.from=scottmacvicar@ntlworld.com; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain ntlworld.com does not designate 72.36.186.210 as permitted sender) X-PHP-List-Original-Sender: scottmacvicar@ntlworld.com X-Host-Fingerprint: 72.36.186.210 midden.org.uk Received: from [72.36.186.210] ([72.36.186.210:58125] helo=lovelace.midden.org.uk) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 3F/20-00136-C604BC54 for ; Thu, 08 Feb 2007 10:23:25 -0500 Received: from office.vbulletin.com ([217.155.246.60] helo=[10.0.0.116]) by lovelace.midden.org.uk with esmtp (Exim 4.63) (envelope-from ) id 1HFB7I-0003Wt-MW; Thu, 08 Feb 2007 15:23:21 +0000 Message-ID: <45CB4062.5070104@ntlworld.com> Date: Thu, 08 Feb 2007 15:23:14 +0000 User-Agent: Thunderbird 1.5.0.9 (Windows/20061207) MIME-Version: 1.0 To: Ilia Alshanetsky CC: internals@lists.php.net References: <45362247.2000306@ntlworld.com> <68.D3.08544.E6F67B54@pb1.pair.com> In-Reply-To: X-Enigmail-Version: 0.94.2.0 Content-Type: multipart/mixed; boundary="------------000004060104040704070308" Subject: Re: [PHP-DEV] Re: [Patch] mysql_set_charset for mysql ext From: scottmacvicar@ntlworld.com (Scott MacVicar) --------------000004060104040704070308 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Pretty sure the patches should still apply, I can respin them if needed. Scott Ilia Alshanetsky wrote: > The patch will need to wait for 5.2.2, it is too late for it to be > accepted into 5.2.1 tree. > > Ilia -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFy0BiSLD/pRzIjPIRCI5fAKCaTOvCC4W3jr68x9fv7W4nw1kL4ACfeMeh mwOXYGjaLXWHfHLymKYop9o= =45n2 -----END PGP SIGNATURE----- --------------000004060104040704070308 Content-Type: text/plain; name="mysql_set_charset_HEAD.patch.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="mysql_set_charset_HEAD.patch.txt" Index: ext/mysql/php_mysql.c =================================================================== RCS file: /repository/php-src/ext/mysql/php_mysql.c,v retrieving revision 1.226 diff -u -r1.226 php_mysql.c --- ext/mysql/php_mysql.c 8 Oct 2006 13:34:22 -0000 1.226 +++ ext/mysql/php_mysql.c 18 Oct 2006 12:09:40 -0000 @@ -94,6 +94,10 @@ #define MYSQL_HAS_YEAR #endif +#if (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 +#define MYSQL_HAS_SET_CHARSET +#endif + #define MYSQL_ASSOC 1<<0 #define MYSQL_NUM 1<<1 #define MYSQL_BOTH (MYSQL_ASSOC|MYSQL_NUM) @@ -166,6 +170,9 @@ PHP_FE(mysql_thread_id, NULL) PHP_FE(mysql_client_encoding, NULL) PHP_FE(mysql_ping, NULL) +#ifdef MYSQL_HAS_SET_CHARSET + PHP_FE(mysql_set_charset, NULL) +#endif #ifdef HAVE_GETINFO_FUNCS PHP_FE(mysql_get_client_info, NULL) PHP_FE(mysql_get_host_info, NULL) @@ -1119,6 +1126,48 @@ /* }}} */ #endif +#ifdef MYSQL_HAS_SET_CHARSET +/* {{{ proto bool mysql_set_charset(string csname [, int link_identifier]) + sets client character set */ +PHP_FUNCTION(mysql_set_charset) +{ + zval **cs_name, **mysql_link; + int id; + php_mysql_conn *mysql; + + switch(ZEND_NUM_ARGS()) { + case 1: + if (zend_get_parameters_ex(1, &cs_name)==FAILURE) { + RETURN_FALSE; + } + id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); + CHECK_LINK(id); + break; + case 2: + if (zend_get_parameters_ex(2, &cs_name, &mysql_link)==FAILURE) { + RETURN_FALSE; + } + id = -1; + break; + default: + WRONG_PARAM_COUNT; + break; + } + + + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); + + convert_to_string_ex(cs_name); + + if (!mysql_set_character_set(&mysql->conn, Z_STRVAL_PP(cs_name))) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } +} +/* }}} */ +#endif + #ifndef NETWARE /* The below two functions not supported on NetWare */ #if MYSQL_VERSION_ID < 40000 /* {{{ proto bool mysql_create_db(string database_name [, int link_identifier]) Index: ext/mysql/php_mysql.h =================================================================== RCS file: /repository/php-src/ext/mysql/php_mysql.h,v retrieving revision 1.38 diff -u -r1.38 php_mysql.h --- ext/mysql/php_mysql.h 1 Jan 2006 13:09:52 -0000 1.38 +++ ext/mysql/php_mysql.h 18 Oct 2006 12:10:02 -0000 @@ -91,6 +91,9 @@ PHP_FUNCTION(mysql_thread_id); PHP_FUNCTION(mysql_client_encoding); PHP_FUNCTION(mysql_ping); +#if (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 +PHP_FUNCTION(mysql_set_charset); +#endif ZEND_BEGIN_MODULE_GLOBALS(mysql) long default_link; --------------000004060104040704070308 Content-Type: text/plain; name="mysql_set_charset_5_2.patch.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="mysql_set_charset_5_2.patch.txt" Index: ext/mysql/php_mysql.c =================================================================== RCS file: /repository/php-src/ext/mysql/php_mysql.c,v retrieving revision 1.213.2.6.2.5 diff -u -r1.213.2.6.2.5 php_mysql.c --- ext/mysql/php_mysql.c 2 Aug 2006 10:04:11 -0000 1.213.2.6.2.5 +++ ext/mysql/php_mysql.c 18 Oct 2006 12:05:41 -0000 @@ -101,6 +101,10 @@ #define MYSQL_HAS_YEAR #endif +#if (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 +#define MYSQL_HAS_SET_CHARSET +#endif + #define MYSQL_ASSOC 1<<0 #define MYSQL_NUM 1<<1 #define MYSQL_BOTH (MYSQL_ASSOC|MYSQL_NUM) @@ -173,6 +177,9 @@ PHP_FE(mysql_thread_id, NULL) PHP_FE(mysql_client_encoding, NULL) PHP_FE(mysql_ping, NULL) +#ifdef MYSQL_HAS_SET_CHARSET + PHP_FE(mysql_set_charset, NULL) +#endif #ifdef HAVE_GETINFO_FUNCS PHP_FE(mysql_get_client_info, NULL) PHP_FE(mysql_get_host_info, NULL) @@ -1126,6 +1133,48 @@ /* }}} */ #endif +#ifdef MYSQL_HAS_SET_CHARSET +/* {{{ proto bool mysql_set_charset(string csname [, int link_identifier]) + sets client character set */ +PHP_FUNCTION(mysql_set_charset) +{ + zval **cs_name, **mysql_link; + int id; + php_mysql_conn *mysql; + + switch(ZEND_NUM_ARGS()) { + case 1: + if (zend_get_parameters_ex(1, &cs_name)==FAILURE) { + RETURN_FALSE; + } + id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); + CHECK_LINK(id); + break; + case 2: + if (zend_get_parameters_ex(2, &cs_name, &mysql_link)==FAILURE) { + RETURN_FALSE; + } + id = -1; + break; + default: + WRONG_PARAM_COUNT; + break; + } + + + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); + + convert_to_string_ex(cs_name); + + if (!mysql_set_character_set(&mysql->conn, Z_STRVAL_PP(cs_name))) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } +} +/* }}} */ +#endif + #ifndef NETWARE /* The below two functions not supported on NetWare */ #if MYSQL_VERSION_ID < 40000 /* {{{ proto bool mysql_create_db(string database_name [, int link_identifier]) Index: ext/mysql/php_mysql.h =================================================================== RCS file: /repository/php-src/ext/mysql/php_mysql.h,v retrieving revision 1.37.2.1 diff -u -r1.37.2.1 php_mysql.h --- ext/mysql/php_mysql.h 1 Jan 2006 12:50:09 -0000 1.37.2.1 +++ ext/mysql/php_mysql.h 18 Oct 2006 12:02:50 -0000 @@ -91,6 +91,9 @@ PHP_FUNCTION(mysql_thread_id); PHP_FUNCTION(mysql_client_encoding); PHP_FUNCTION(mysql_ping); +#if (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 +PHP_FUNCTION(mysql_set_charset); +#endif ZEND_BEGIN_MODULE_GLOBALS(mysql) long default_link; --------------000004060104040704070308 Content-Type: text/plain; name="mysql_set_charset_4_4.patch.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="mysql_set_charset_4_4.patch.txt" Index: ext/mysql/php_mysql.c =================================================================== RCS file: /repository/php-src/ext/mysql/php_mysql.c,v retrieving revision 1.174.2.29.2.2 diff -u -r1.174.2.29.2.2 php_mysql.c --- ext/mysql/php_mysql.c 1 Jan 2006 13:46:55 -0000 1.174.2.29.2.2 +++ ext/mysql/php_mysql.c 18 Oct 2006 11:54:02 -0000 @@ -93,6 +93,10 @@ #define MYSQL_HAS_YEAR #endif +#if (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 +#define MYSQL_HAS_SET_CHARSET +#endif + #define MYSQL_ASSOC 1<<0 #define MYSQL_NUM 1<<1 #define MYSQL_BOTH (MYSQL_ASSOC|MYSQL_NUM) @@ -162,6 +166,9 @@ PHP_FE(mysql_thread_id, NULL) PHP_FE(mysql_client_encoding, NULL) PHP_FE(mysql_ping, NULL) +#ifdef MYSQL_HAS_SET_CHARSET + PHP_FE(mysql_set_charset, NULL) +#endif #ifdef HAVE_GETINFO_FUNCS PHP_FE(mysql_get_client_info, NULL) PHP_FE(mysql_get_host_info, NULL) @@ -1123,6 +1130,48 @@ /* }}} */ #endif +#ifdef MYSQL_HAS_SET_CHARSET +/* {{{ proto bool mysql_set_charset(string csname [, int link_identifier]) + sets client character set */ +PHP_FUNCTION(mysql_set_charset) +{ + zval **cs_name, **mysql_link; + int id; + php_mysql_conn *mysql; + + switch(ZEND_NUM_ARGS()) { + case 1: + if (zend_get_parameters_ex(1, &cs_name)==FAILURE) { + RETURN_FALSE; + } + id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU); + CHECK_LINK(id); + break; + case 2: + if (zend_get_parameters_ex(2, &cs_name, &mysql_link)==FAILURE) { + RETURN_FALSE; + } + id = -1; + break; + default: + WRONG_PARAM_COUNT; + break; + } + + + ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", le_link, le_plink); + + convert_to_string_ex(cs_name); + + if (!mysql_set_character_set(&mysql->conn, Z_STRVAL_PP(cs_name))) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } +} +/* }}} */ +#endif + #ifndef NETWARE /* The below two functions not supported on NetWare */ #if MYSQL_VERSION_ID < 40000 /* {{{ proto bool mysql_create_db(string database_name [, int link_identifier]) Index: ext/mysql/php_mysql.h =================================================================== RCS file: /repository/php-src/ext/mysql/php_mysql.h,v retrieving revision 1.33.2.2.4.1 diff -u -r1.33.2.2.4.1 php_mysql.h --- ext/mysql/php_mysql.h 1 Jan 2006 13:46:55 -0000 1.33.2.2.4.1 +++ ext/mysql/php_mysql.h 18 Oct 2006 11:41:37 -0000 @@ -91,6 +91,9 @@ PHP_FUNCTION(mysql_thread_id); PHP_FUNCTION(mysql_client_encoding); PHP_FUNCTION(mysql_ping); +#if (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 +PHP_FUNCTION(mysql_set_charset); +#endif ZEND_BEGIN_MODULE_GLOBALS(mysql) long default_link; --------------000004060104040704070308--