andrei Wed Oct 25 20:09:22 2006 UTC
Modified files:
/php-src/ext/standard basic_functions.c
Log:
Unicode support for get(server|proto)by(name|number) family of funcs.
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.818&r2=1.819&diff_format=u
Index: php-src/ext/standard/basic_functions.c
diff -u php-src/ext/standard/basic_functions.c:1.818
php-src/ext/standard/basic_functions.c:1.819
--- php-src/ext/standard/basic_functions.c:1.818 Wed Oct 25 18:03:45 2006
+++ php-src/ext/standard/basic_functions.c Wed Oct 25 20:09:21 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: basic_functions.c,v 1.818 2006/10/25 18:03:45 andrei Exp $ */
+/* $Id: basic_functions.c,v 1.819 2006/10/25 20:09:21 andrei Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -5801,20 +5801,20 @@
/* }}} */
#if HAVE_GETSERVBYNAME
-/* {{{ proto int getservbyname(string service, string protocol)
+/* {{{ proto int getservbyname(string service, string protocol) U
Returns port associated with service. Protocol must be "tcp" or "udp" */
PHP_FUNCTION(getservbyname)
{
- zval **name, **proto;
+ char *name, *proto;
+ int name_len, proto_len;
struct servent *serv;
- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &name, &proto) ==
FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&s&", &name,
&name_len,
+ UG(ascii_conv),
&proto, &proto_len, UG(ascii_conv)) == FAILURE) {
+ return;
}
- convert_to_string_ex(name);
- convert_to_string_ex(proto);
- serv = getservbyname(Z_STRVAL_PP(name), Z_STRVAL_PP(proto));
+ serv = getservbyname(name, proto);
if (serv == NULL) {
RETURN_FALSE;
@@ -5826,50 +5826,48 @@
#endif
#if HAVE_GETSERVBYPORT
-/* {{{ proto string getservbyport(int port, string protocol)
+/* {{{ proto string getservbyport(int port, string protocol) U
Returns service name associated with port. Protocol must be "tcp" or "udp"
*/
PHP_FUNCTION(getservbyport)
{
- zval **port, **proto;
+ char *proto;
+ int proto_len;
+ long port;
struct servent *serv;
- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &port, &proto) ==
FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls&", &port,
&proto,
+ &proto_len,
UG(ascii_conv)) == FAILURE) {
+ return;
}
- convert_to_long_ex(port);
- convert_to_string_ex(proto);
- serv = getservbyport(htons((unsigned short) Z_LVAL_PP(port)),
Z_STRVAL_PP(proto));
+ serv = getservbyport(htons((unsigned short) port), proto);
if (serv == NULL) {
RETURN_FALSE;
}
- RETURN_STRING(serv->s_name, 1);
+ RETURN_ASCII_STRING(serv->s_name, 1);
}
/* }}} */
#endif
#if HAVE_GETPROTOBYNAME
-/* {{{ proto int getprotobyname(string name)
+/* {{{ proto int getprotobyname(string name) U
Returns protocol number associated with name as per /etc/protocols */
PHP_FUNCTION(getprotobyname)
{
- zval **name;
+ char *name;
+ int name_len;
struct protoent *ent;
- if (ZEND_NUM_ARGS() != 1
- || zend_get_parameters_ex(1, &name) == FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s&", &name,
&name_len,
+ UG(ascii_conv)) ==
FAILURE) {
+ return;
}
- convert_to_string_ex(name);
-
- ent = getprotobyname(Z_STRVAL_PP(name));
+ ent = getprotobyname(name);
if (ent == NULL) {
- Z_LVAL_P(return_value) = -1;
- Z_TYPE_P(return_value) = IS_LONG;
RETURN_FALSE;
}
@@ -5879,26 +5877,24 @@
#endif
#if HAVE_GETPROTOBYNUMBER
-/* {{{ proto string getprotobynumber(int proto)
+/* {{{ proto string getprotobynumber(int proto) U
Returns protocol name associated with protocol number proto */
PHP_FUNCTION(getprotobynumber)
{
- zval **proto;
+ long proto;
struct protoent *ent;
- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &proto) ==
FAILURE) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &proto) ==
FAILURE) {
+ return;
}
- convert_to_long_ex(proto);
-
- ent = getprotobynumber(Z_LVAL_PP(proto));
+ ent = getprotobynumber(proto);
if (ent == NULL) {
RETURN_FALSE;
}
- RETURN_STRING(ent->p_name, 1);
+ RETURN_ASCII_STRING(ent->p_name, 1);
}
/* }}} */
#endif
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php