stas                                     Mon, 17 Aug 2009 22:15:18 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=287430

Log:
fix parameter parsing for SNMP

Changed paths:
    U   php/php-src/branches/PHP_5_3/ext/snmp/snmp.c
    U   php/php-src/trunk/ext/snmp/snmp.c

Modified: php/php-src/branches/PHP_5_3/ext/snmp/snmp.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/snmp/snmp.c	2009-08-17 21:28:22 UTC (rev 287429)
+++ php/php-src/branches/PHP_5_3/ext/snmp/snmp.c	2009-08-17 22:15:18 UTC (rev 287430)
@@ -775,22 +775,21 @@
 */
 static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
 {
-	char *a1, **a2, **a3;
+	char *a1, *a2, *a3;
 	int a1_len, a2_len, a3_len;
-	zval **a4 = NULL, **a5 = NULL;
-	long a6 = 0, a7 = 0;
 	struct snmp_session session;
 	long timeout = SNMP_DEFAULT_TIMEOUT;
 	long retries = SNMP_DEFAULT_RETRIES;
 	char type = (char) 0;
-	char *value = (char *) 0;
+	char *value = (char *) 0, *stype = "";
+	int value_len, stype_len;
 	char hostname[MAX_NAME_LEN];
 	int remote_port = 161;
 	char *pptr;
 	int argc = ZEND_NUM_ARGS();

 	if (st == SNMP_CMD_SET) {
-		if (zend_parse_parameters(argc TSRMLS_CC, "sssZZ|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len, &a4, &a5, &a6, &a7) == FAILURE) {
+		if (zend_parse_parameters(argc TSRMLS_CC, "sssss|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len, &stype, &stype_len, &value, &value_len, &timeout, &retries) == FAILURE) {
 			return;
 		}
 	} else {
@@ -799,37 +798,15 @@
 		 * SNMP_CMD_WALK
 		 * SNMP_CMD_REALWALK
 		 */
-		if (zend_parse_parameters(argc TSRMLS_CC, "sss|ZZ", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len, &a4, &a5) == FAILURE) {
+		if (zend_parse_parameters(argc TSRMLS_CC, "sss|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len, &timeout, &retries) == FAILURE) {
 			return;
 		}
 	}

 	if (st == SNMP_CMD_SET) {
-		convert_to_string_ex(a4);
-		convert_to_string_ex(a5);
+		type = stype[0];
+	}

-		if (argc > 5) {
-			timeout = a6;
-		}
-
-		if (argc > 6) {
-			retries = a7;
-		}
-
-		type = Z_STRVAL_PP(a4)[0];
-		value = Z_STRVAL_PP(a5);
-	} else {
-		if (argc > 3) {
-			convert_to_long_ex(a4);
-			timeout = Z_LVAL_PP(a4);
-		}
-
-		if (argc > 4) {
-			convert_to_long_ex(a5);
-			retries = Z_LVAL_PP(a5);
-		}
-	}
-
 	snmp_sess_init(&session);
 	strlcpy(hostname, a1, sizeof(hostname));
 	if ((pptr = strchr (hostname, ':'))) {
@@ -1201,23 +1178,22 @@
 */
 static void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)
 {
-	zval **a9 = NULL, **a10 = NULL;
 	char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8;
 	int a1_len, a2_len, a3_len, a4_len, a5_len, a6_len, a7_len, a8_len;
-	long a11 = 0, a12 = 0;
 	struct snmp_session session;
 	long timeout = SNMP_DEFAULT_TIMEOUT;
 	long retries = SNMP_DEFAULT_RETRIES;
 	char type = (char) 0;
-	char *value = (char *) 0;
+	char *value = (char *) 0, *stype = "";
+	int stype_len, value_len;
 	char hostname[MAX_NAME_LEN];
 	int remote_port = 161;
 	char *pptr;
 	int argc = ZEND_NUM_ARGS();

 	if (st == SNMP_CMD_SET) {
-		if (zend_parse_parameters(argc TSRMLS_CC, "ssssssssZZ|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len,
-			&a4, &a4_len, &a5, &a5_len, &a6, &a6_len, &a7, &a7_len, &a8, &a8_len, &a9, &a10, &a11, &a12) == FAILURE) {
+		if (zend_parse_parameters(argc TSRMLS_CC, "ssssssssss|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len,
+			&a4, &a4_len, &a5, &a5_len, &a6, &a6_len, &a7, &a7_len, &a8, &a8_len, &stype, &stype_len, &value, &value_len, &timeout, &retries) == FAILURE) {
 			return;
 		}
 	} else {
@@ -1226,8 +1202,8 @@
 		 * SNMP_CMD_WALK
 		 * SNMP_CMD_REALWALK
 		 */
-		if (zend_parse_parameters(argc TSRMLS_CC, "ssssssss|ZZ", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len,
-			&a4, &a4_len, &a5, &a5_len, &a6, &a6_len, &a7, &a7_len, &a8, &a8_len, &a9, &a10) == FAILURE) {
+		if (zend_parse_parameters(argc TSRMLS_CC, "ssssssss|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len,
+			&a4, &a4_len, &a5, &a5_len, &a6, &a6_len, &a7, &a7_len, &a8, &a8_len, &timeout, &retries) == FAILURE) {
 			return;
 		}
 	}
@@ -1281,25 +1257,7 @@
 	}

 	if (st == SNMP_CMD_SET) {
-		if (argc > 10) {
-			timeout = a11;
-		}
-		if (argc > 11) {
-			retries = a12;
-		}
-		convert_to_string_ex(a9);
-		convert_to_string_ex(a10);
-		type = Z_STRVAL_PP(a9)[0];
-		value = Z_STRVAL_PP(a10);
-	} else {
-		if (argc > 8) {
-			convert_to_long_ex(a9);
-			timeout = Z_LVAL_PP(a9);
-		}
-		if (argc > 9) {
-			convert_to_long_ex(a10);
-			retries = Z_LVAL_PP(a10);
-		}
+		type = stype[0];
 	}

 	session.retries = retries;

Modified: php/php-src/trunk/ext/snmp/snmp.c
===================================================================
--- php/php-src/trunk/ext/snmp/snmp.c	2009-08-17 21:28:22 UTC (rev 287429)
+++ php/php-src/trunk/ext/snmp/snmp.c	2009-08-17 22:15:18 UTC (rev 287430)
@@ -775,22 +775,21 @@
 */
 static void php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st, int version)
 {
-	char *a1, **a2, **a3;
+	char *a1, *a2, *a3;
 	int a1_len, a2_len, a3_len;
-	zval **a4 = NULL, **a5 = NULL;
-	long a6 = 0, a7 = 0;
 	struct snmp_session session;
 	long timeout = SNMP_DEFAULT_TIMEOUT;
 	long retries = SNMP_DEFAULT_RETRIES;
 	char type = (char) 0;
-	char *value = (char *) 0;
+	char *value = (char *) 0, *stype = "";
+	int value_len, stype_len;
 	char hostname[MAX_NAME_LEN];
 	int remote_port = 161;
 	char *pptr;
 	int argc = ZEND_NUM_ARGS();

 	if (st == SNMP_CMD_SET) {
-		if (zend_parse_parameters(argc TSRMLS_CC, "sssZZ|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len, &a4, &a5, &a6, &a7) == FAILURE) {
+		if (zend_parse_parameters(argc TSRMLS_CC, "sssss|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len, &stype, &stype_len, &value, &value_len, &timeout, &retries) == FAILURE) {
 			return;
 		}
 	} else {
@@ -799,37 +798,15 @@
 		 * SNMP_CMD_WALK
 		 * SNMP_CMD_REALWALK
 		 */
-		if (zend_parse_parameters(argc TSRMLS_CC, "sss|ZZ", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len, &a4, &a5) == FAILURE) {
+		if (zend_parse_parameters(argc TSRMLS_CC, "sss|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len, &timeout, &retries) == FAILURE) {
 			return;
 		}
 	}

 	if (st == SNMP_CMD_SET) {
-		convert_to_string_ex(a4);
-		convert_to_string_ex(a5);
+		type = stype[0];
+	}

-		if (argc > 5) {
-			timeout = a6;
-		}
-
-		if (argc > 6) {
-			retries = a7;
-		}
-
-		type = Z_STRVAL_PP(a4)[0];
-		value = Z_STRVAL_PP(a5);
-	} else {
-		if (argc > 3) {
-			convert_to_long_ex(a4);
-			timeout = Z_LVAL_PP(a4);
-		}
-
-		if (argc > 4) {
-			convert_to_long_ex(a5);
-			retries = Z_LVAL_PP(a5);
-		}
-	}
-
 	snmp_sess_init(&session);
 	strlcpy(hostname, a1, sizeof(hostname));
 	if ((pptr = strchr (hostname, ':'))) {
@@ -1201,23 +1178,22 @@
 */
 static void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)
 {
-	zval **a9 = NULL, **a10 = NULL;
 	char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8;
 	int a1_len, a2_len, a3_len, a4_len, a5_len, a6_len, a7_len, a8_len;
-	long a11 = 0, a12 = 0;
 	struct snmp_session session;
 	long timeout = SNMP_DEFAULT_TIMEOUT;
 	long retries = SNMP_DEFAULT_RETRIES;
 	char type = (char) 0;
-	char *value = (char *) 0;
+	char *value = (char *) 0, *stype = "";
+	int stype_len, value_len;
 	char hostname[MAX_NAME_LEN];
 	int remote_port = 161;
 	char *pptr;
 	int argc = ZEND_NUM_ARGS();

 	if (st == SNMP_CMD_SET) {
-		if (zend_parse_parameters(argc TSRMLS_CC, "ssssssssZZ|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len,
-			&a4, &a4_len, &a5, &a5_len, &a6, &a6_len, &a7, &a7_len, &a8, &a8_len, &a9, &a10, &a11, &a12) == FAILURE) {
+		if (zend_parse_parameters(argc TSRMLS_CC, "ssssssssss|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len,
+			&a4, &a4_len, &a5, &a5_len, &a6, &a6_len, &a7, &a7_len, &a8, &a8_len, &stype, &stype_len, &value, &value_len, &timeout, &retries) == FAILURE) {
 			return;
 		}
 	} else {
@@ -1226,8 +1202,8 @@
 		 * SNMP_CMD_WALK
 		 * SNMP_CMD_REALWALK
 		 */
-		if (zend_parse_parameters(argc TSRMLS_CC, "ssssssss|ZZ", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len,
-			&a4, &a4_len, &a5, &a5_len, &a6, &a6_len, &a7, &a7_len, &a8, &a8_len, &a9, &a10) == FAILURE) {
+		if (zend_parse_parameters(argc TSRMLS_CC, "ssssssss|ll", &a1, &a1_len, &a2, &a2_len, &a3, &a3_len,
+			&a4, &a4_len, &a5, &a5_len, &a6, &a6_len, &a7, &a7_len, &a8, &a8_len, &timeout, &retries) == FAILURE) {
 			return;
 		}
 	}
@@ -1281,25 +1257,7 @@
 	}

 	if (st == SNMP_CMD_SET) {
-		if (argc > 10) {
-			timeout = a11;
-		}
-		if (argc > 11) {
-			retries = a12;
-		}
-		convert_to_string_ex(a9);
-		convert_to_string_ex(a10);
-		type = Z_STRVAL_PP(a9)[0];
-		value = Z_STRVAL_PP(a10);
-	} else {
-		if (argc > 8) {
-			convert_to_long_ex(a9);
-			timeout = Z_LVAL_PP(a9);
-		}
-		if (argc > 9) {
-			convert_to_long_ex(a10);
-			retries = Z_LVAL_PP(a10);
-		}
+		type = stype[0];
 	}

 	session.retries = retries;
-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to