]> granicus.if.org Git - php/commitdiff
MFH: New parameter parsing API
authorKalle Sommer Nielsen <kalle@php.net>
Fri, 7 Nov 2008 11:05:24 +0000 (11:05 +0000)
committerKalle Sommer Nielsen <kalle@php.net>
Fri, 7 Nov 2008 11:05:24 +0000 (11:05 +0000)
ext/snmp/winsnmp.c

index 331a116e74b8abb00aa42a90f732349eec94a322..508dc06cd5bfee6fb04d2fb53f135625a57d629e 100644 (file)
@@ -57,34 +57,32 @@ DLEXPORT zend_module_entry *get_module() { return &snmp_module_entry; }
 
 /* {{{ _php_snmp
  */
-void _php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st) {
-       zval *a1, *a2, *a3;
-       INT     operation;
-    LPSTR              agent;
-    LPSTR              community;
-    RFC1157VarBindList variableBindings;
-    LPSNMP_MGR_SESSION session;
-
-    INT        timeout = TIMEOUT;
-    INT        retries = RETRIES;
-
-    BYTE       requestType;
-    AsnInteger errorStatus;
-    AsnInteger errorIndex;
-    AsnObjectIdentifier oid;
-   char        *chkPtr = NULL;
-
-       if (zend_get_parameters_ex(3, &a1, &a2, &a3) == FAILURE) {
-               WRONG_PARAM_COUNT;
+void _php_snmp(INTERNAL_FUNCTION_PARAMETERS, int st)
+{
+       INT operation;
+
+       RFC1157VarBindList variableBindings;
+       LPSNMP_MGR_SESSION session;
+
+       char *agent, *community, *object_id;
+       int agent_len, community_len, object_id_len;
+
+       INT timeout = TIMEOUT;
+       INT retries = RETRIES;
+
+       BYTE requestType;
+       AsnInteger errorStatus;
+       AsnInteger errorIndex;
+       AsnObjectIdentifier oid;
+
+       char *chkPtr = NULL;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &agent, &agent_len, &community, &community_len, &object_id, &object_id_len) == FAILURE) {
+                return;
        }
-       convert_to_string_ex(a1);
-       convert_to_string_ex(a2);
-       convert_to_string_ex(a3);
-
-       agent=Z_STRVAL_PP(a1);
-       community=Z_STRVAL_PP(a2);
-       operation=st;
-       SnmpMgrStrToOid(Z_STRVAL_PP(a3), &oid);
+
+       operation = st;
+       SnmpMgrStrToOid(object_id, &oid);
 
 /* 
    I've limited this to only one oid, but we can create a