felipe Sun Jun 29 14:29:09 2008 UTC
Modified files: (Branch: PHP_5_3)
/php-src/ext/ldap ldap.c
Log:
- New parameter parsing API
- Added arginfo
http://cvs.php.net/viewvc.cgi/php-src/ext/ldap/ldap.c?r1=1.161.2.3.2.11.2.13&r2=1.161.2.3.2.11.2.14&diff_format=u
Index: php-src/ext/ldap/ldap.c
diff -u php-src/ext/ldap/ldap.c:1.161.2.3.2.11.2.13
php-src/ext/ldap/ldap.c:1.161.2.3.2.11.2.14
--- php-src/ext/ldap/ldap.c:1.161.2.3.2.11.2.13 Mon Jun 2 11:23:16 2008
+++ php-src/ext/ldap/ldap.c Sun Jun 29 14:29:09 2008
@@ -23,7 +23,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ldap.c,v 1.161.2.3.2.11.2.13 2008/06/02 11:23:16 jani Exp $ */
+/* $Id: ldap.c,v 1.161.2.3.2.11.2.14 2008/06/29 14:29:09 felipe Exp $ */
#define IS_EXT_MODULE
#ifdef HAVE_CONFIG_H
@@ -82,16 +82,6 @@
ZEND_DECLARE_MODULE_GLOBALS(ldap)
static PHP_GINIT_FUNCTION(ldap);
-static
- ZEND_BEGIN_ARG_INFO(arg3to6of6_force_ref, 0)
- ZEND_ARG_PASS_INFO(0)
- ZEND_ARG_PASS_INFO(0)
- ZEND_ARG_PASS_INFO(1)
- ZEND_ARG_PASS_INFO(1)
- ZEND_ARG_PASS_INFO(1)
- ZEND_ARG_PASS_INFO(1)
- ZEND_END_ARG_INFO();
-
static int le_link, le_result, le_result_entry;
#ifdef COMPILE_DL_LDAP
@@ -237,7 +227,7 @@
php_info_print_table_start();
php_info_print_table_row(2, "LDAP Support", "enabled");
- php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v
1.161.2.3.2.11.2.13 2008/06/02 11:23:16 jani Exp $");
+ php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v
1.161.2.3.2.11.2.14 2008/06/29 14:29:09 felipe Exp $");
if (LDAPG(max_links) == -1) {
snprintf(tmp, 31, "%ld/unlimited", LDAPG(num_links));
@@ -605,8 +595,9 @@
int i, errno;
int myargcount = ZEND_NUM_ARGS();
- if (myargcount < 3 || myargcount > 8 ||
zend_get_parameters_ex(myargcount, &link, &base_dn, &filter, &attrs,
&attrsonly, &sizelimit, &timelimit, &deref) != SUCCESS) {
- WRONG_PARAM_COUNT;
+ if (zend_parse_parameters(myargcount TSRMLS_CC, "ZZZ|ZZZZZ", &link,
&base_dn, &filter, &attrs, &attrsonly,
+ &sizelimit, &timelimit, &deref) == FAILURE) {
+ return;
}
/* Reverse -> fall through */
@@ -2215,6 +2206,288 @@
/* }}} */
#endif
+/* {{{ arginfo */
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0)
+ ZEND_ARG_INFO(0, hostname)
+ ZEND_ARG_INFO(0, port)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_resource, 0, 0, 1)
+ ZEND_ARG_INFO(0, link_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_bind, 0, 0, 1)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, bind_rdn)
+ ZEND_ARG_INFO(0, bind_password)
+ZEND_END_ARG_INFO()
+
+#ifdef HAVE_LDAP_SASL
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_sasl_bind, 0, 0, 1)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, binddn)
+ ZEND_ARG_INFO(0, password)
+ ZEND_ARG_INFO(0, sasl_mech)
+ ZEND_ARG_INFO(0, sasl_realm)
+ ZEND_ARG_INFO(0, sasl_authz_id)
+ ZEND_ARG_INFO(0, props)
+ZEND_END_ARG_INFO()
+#endif
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_read, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, base_dn)
+ ZEND_ARG_INFO(0, filter)
+ ZEND_ARG_INFO(0, attributes)
+ ZEND_ARG_INFO(0, attrsonly)
+ ZEND_ARG_INFO(0, sizelimit)
+ ZEND_ARG_INFO(0, timelimit)
+ ZEND_ARG_INFO(0, deref)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_list, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, base_dn)
+ ZEND_ARG_INFO(0, filter)
+ ZEND_ARG_INFO(0, attributes)
+ ZEND_ARG_INFO(0, attrsonly)
+ ZEND_ARG_INFO(0, sizelimit)
+ ZEND_ARG_INFO(0, timelimit)
+ ZEND_ARG_INFO(0, deref)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_search, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, base_dn)
+ ZEND_ARG_INFO(0, filter)
+ ZEND_ARG_INFO(0, attributes)
+ ZEND_ARG_INFO(0, attrsonly)
+ ZEND_ARG_INFO(0, sizelimit)
+ ZEND_ARG_INFO(0, timelimit)
+ ZEND_ARG_INFO(0, deref)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_count_entries, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_entry, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_next_entry, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_entries, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_attribute, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_next_attribute, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_attributes, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_values, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ ZEND_ARG_INFO(0, attribute)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_values_len, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ ZEND_ARG_INFO(0, attribute)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_dn, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, result_entry_identifier)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_explode_dn, 0, 0, 2)
+ ZEND_ARG_INFO(0, dn)
+ ZEND_ARG_INFO(0, with_attrib)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_dn2ufn, 0, 0, 1)
+ ZEND_ARG_INFO(0, dn)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_add, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, dn)
+ ZEND_ARG_INFO(0, entry)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_delete, 0, 0, 2)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, dn)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_modify, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, dn)
+ ZEND_ARG_INFO(0, entry)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_add, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, dn)
+ ZEND_ARG_INFO(0, entry)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_replace, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, dn)
+ ZEND_ARG_INFO(0, entry)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_mod_del, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, dn)
+ ZEND_ARG_INFO(0, entry)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_err2str, 0, 0, 1)
+ ZEND_ARG_INFO(0, errno)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_compare, 0, 0, 4)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, dn)
+ ZEND_ARG_INFO(0, attribute)
+ ZEND_ARG_INFO(0, value)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_sort, 0, 0, 3)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, result)
+ ZEND_ARG_INFO(0, sortfilter)
+ZEND_END_ARG_INFO()
+
+#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP_10
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_rename, 0, 0, 5)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, dn)
+ ZEND_ARG_INFO(0, newrdn)
+ ZEND_ARG_INFO(0, newparent)
+ ZEND_ARG_INFO(0, deleteoldrdn)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_get_option, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, option)
+ ZEND_ARG_INFO(1, retval)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_set_option, 0, 0, 3)
+ ZEND_ARG_INFO(0, link_identifier)
+ ZEND_ARG_INFO(0, option)
+ ZEND_ARG_INFO(1, newval)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_first_reference, 0, 0, 2)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, result)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_next_reference, 0, 0, 2)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, entry)
+ZEND_END_ARG_INFO()
+
+#ifdef HAVE_LDAP_PARSE_REFERENCE
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_reference, 0, 0, 3)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, entry)
+ ZEND_ARG_INFO(1, referrals)
+ZEND_END_ARG_INFO()
+#endif
+
+
+#ifdef HAVE_LDAP_PARSE_RESULT
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_result, 0, 0, 3)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, result)
+ ZEND_ARG_INFO(1, errcode)
+ ZEND_ARG_INFO(1, matcheddn)
+ ZEND_ARG_INFO(1, errmsg)
+ ZEND_ARG_INFO(1, referrals)
+ZEND_END_ARG_INFO()
+#endif
+#endif
+
+#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_set_rebind_proc, 0, 0, 2)
+ ZEND_ARG_INFO(0, link)
+ ZEND_ARG_INFO(0, callback)
+ZEND_END_ARG_INFO()
+#endif
+
+#ifdef STR_TRANSLATION
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_t61_to_8859, 0, 0, 1)
+ ZEND_ARG_INFO(0, value)
+ZEND_END_ARG_INFO()
+
+static
+ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_8859_to_t61, 0, 0, 1)
+ ZEND_ARG_INFO(0, value)
+ZEND_END_ARG_INFO()
+#endif
+/* }}} */
+
/*
This is just a small subset of the functionality provided by the LDAP
library. All the
operations are synchronous. Referrals are not handled automatically.
@@ -2222,69 +2495,69 @@
/* {{{ ldap_functions[]
*/
const zend_function_entry ldap_functions[] = {
- PHP_FE(ldap_connect,
NULL)
- PHP_FALIAS(ldap_close, ldap_unbind, NULL)
- PHP_FE(ldap_bind,
NULL)
+ PHP_FE(ldap_connect,
arginfo_ldap_connect)
+ PHP_FALIAS(ldap_close, ldap_unbind,
arginfo_ldap_resource)
+ PHP_FE(ldap_bind,
arginfo_ldap_bind)
#ifdef HAVE_LDAP_SASL
- PHP_FE(ldap_sasl_bind,
NULL)
+ PHP_FE(ldap_sasl_bind,
arginfo_ldap_sasl_bind)
#endif
- PHP_FE(ldap_unbind,
NULL)
- PHP_FE(ldap_read,
NULL)
- PHP_FE(ldap_list,
NULL)
- PHP_FE(ldap_search,
NULL)
- PHP_FE(ldap_free_result,
NULL)
- PHP_FE(ldap_count_entries,
NULL)
- PHP_FE(ldap_first_entry,
NULL)
- PHP_FE(ldap_next_entry,
NULL)
- PHP_FE(ldap_get_entries,
NULL)
- PHP_FE(ldap_first_attribute, third_arg_force_ref)
- PHP_FE(ldap_next_attribute, third_arg_force_ref)
- PHP_FE(ldap_get_attributes,
NULL)
- PHP_FALIAS(ldap_get_values, ldap_get_values_len,
NULL)
- PHP_FE(ldap_get_values_len,
NULL)
- PHP_FE(ldap_get_dn,
NULL)
- PHP_FE(ldap_explode_dn,
NULL)
- PHP_FE(ldap_dn2ufn,
NULL)
- PHP_FE(ldap_add,
NULL)
- PHP_FE(ldap_delete,
NULL)
- PHP_FALIAS(ldap_modify, ldap_mod_replace, NULL)
+ PHP_FE(ldap_unbind,
arginfo_ldap_resource)
+ PHP_FE(ldap_read,
arginfo_ldap_read)
+ PHP_FE(ldap_list,
arginfo_ldap_list)
+ PHP_FE(ldap_search,
arginfo_ldap_search)
+ PHP_FE(ldap_free_result,
arginfo_ldap_resource)
+ PHP_FE(ldap_count_entries,
arginfo_ldap_count_entries)
+ PHP_FE(ldap_first_entry,
arginfo_ldap_first_entry)
+ PHP_FE(ldap_next_entry,
arginfo_ldap_next_entry)
+ PHP_FE(ldap_get_entries,
arginfo_ldap_get_entries)
+ PHP_FE(ldap_first_attribute,
arginfo_ldap_first_attribute)
+ PHP_FE(ldap_next_attribute,
arginfo_ldap_next_attribute)
+ PHP_FE(ldap_get_attributes,
arginfo_ldap_get_attributes)
+ PHP_FALIAS(ldap_get_values, ldap_get_values_len,
arginfo_ldap_get_values)
+ PHP_FE(ldap_get_values_len,
arginfo_ldap_get_values_len)
+ PHP_FE(ldap_get_dn,
arginfo_ldap_get_dn)
+ PHP_FE(ldap_explode_dn,
arginfo_ldap_explode_dn)
+ PHP_FE(ldap_dn2ufn,
arginfo_ldap_dn2ufn)
+ PHP_FE(ldap_add,
arginfo_ldap_add)
+ PHP_FE(ldap_delete,
arginfo_ldap_delete)
+ PHP_FALIAS(ldap_modify, ldap_mod_replace,
arginfo_ldap_modify)
/* additional functions for attribute based modifications, Gerrit Thomson */
- PHP_FE(ldap_mod_add,
NULL)
- PHP_FE(ldap_mod_replace,
NULL)
- PHP_FE(ldap_mod_del,
NULL)
+ PHP_FE(ldap_mod_add,
arginfo_ldap_mod_add)
+ PHP_FE(ldap_mod_replace,
arginfo_ldap_mod_replace)
+ PHP_FE(ldap_mod_del,
arginfo_ldap_mod_del)
/* end gjt mod */
- PHP_FE(ldap_errno,
NULL)
- PHP_FE(ldap_err2str,
NULL)
- PHP_FE(ldap_error,
NULL)
- PHP_FE(ldap_compare,
NULL)
- PHP_FE(ldap_sort,
NULL)
+ PHP_FE(ldap_errno,
arginfo_ldap_resource)
+ PHP_FE(ldap_err2str,
arginfo_ldap_err2str)
+ PHP_FE(ldap_error,
arginfo_ldap_resource)
+ PHP_FE(ldap_compare,
arginfo_ldap_compare)
+ PHP_FE(ldap_sort,
arginfo_ldap_sort)
#if (LDAP_API_VERSION > 2000) || HAVE_NSLDAP || HAVE_ORALDAP_10
- PHP_FE(ldap_rename,
NULL)
- PHP_FE(ldap_get_option, third_arg_force_ref)
- PHP_FE(ldap_set_option,
NULL)
- PHP_FE(ldap_first_reference,
NULL)
- PHP_FE(ldap_next_reference,
NULL)
+ PHP_FE(ldap_rename,
arginfo_ldap_rename)
+ PHP_FE(ldap_get_option,
arginfo_ldap_get_option)
+ PHP_FE(ldap_set_option,
arginfo_ldap_set_option)
+ PHP_FE(ldap_first_reference,
arginfo_ldap_first_reference)
+ PHP_FE(ldap_next_reference,
arginfo_ldap_next_reference)
#ifdef HAVE_LDAP_PARSE_REFERENCE
- PHP_FE(ldap_parse_reference, third_arg_force_ref)
+ PHP_FE(ldap_parse_reference,
arginfo_ldap_parse_reference)
#endif
#ifdef HAVE_LDAP_PARSE_RESULT
- PHP_FE(ldap_parse_result, arg3to6of6_force_ref)
+ PHP_FE(ldap_parse_result,
arginfo_ldap_parse_result)
#endif
#ifdef HAVE_LDAP_START_TLS_S
- PHP_FE(ldap_start_tls,
NULL)
+ PHP_FE(ldap_start_tls,
arginfo_ldap_resource)
#endif
#endif
#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)
- PHP_FE(ldap_set_rebind_proc,
NULL)
+ PHP_FE(ldap_set_rebind_proc,
arginfo_ldap_set_rebind_proc)
#endif
#ifdef STR_TRANSLATION
- PHP_FE(ldap_t61_to_8859,
NULL)
- PHP_FE(ldap_8859_to_t61,
NULL)
+ PHP_FE(ldap_t61_to_8859,
arginfo_ldap_t61_to_8859)
+ PHP_FE(ldap_8859_to_t61,
arginfo_ldap_8859_to_t61)
#endif
{NULL, NULL, NULL}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php