cvs: php4 /ext/ldap ldap.c php_ldap.h
| From: | Stig Venaas | Date: | Tue, 17 Oct 2000 16:06:04 +0000 |
| Subject: | cvs: php4 /ext/ldap ldap.c php_ldap.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-2095@lists.php.net to get a copy of this message | ||
venaas Tue Oct 17 09:06:04 2000 EDT
Modified files:
/php4/ext/ldap ldap.c php_ldap.h
Log:
Added ldap_get_option() and ldap_set_option() functions
@- Added ldap_get_option() and ldap_set_option() functions (Stig Venaas)
Index: php4/ext/ldap/ldap.c
diff -u php4/ext/ldap/ldap.c:1.63 php4/ext/ldap/ldap.c:1.64
--- php4/ext/ldap/ldap.c:1.63 Tue Oct 17 08:51:04 2000
+++ php4/ext/ldap/ldap.c Tue Oct 17 09:06:04 2000
@@ -23,7 +23,7 @@
*/
-/* $Id: ldap.c,v 1.63 2000/10/17 15:51:04 venaas Exp $ */
+/* $Id: ldap.c,v 1.64 2000/10/17 16:06:04 venaas Exp $ */
#define IS_EXT_MODULE
#include "php.h"
@@ -93,6 +93,11 @@
PHP_FE(ldap_error, NULL)
PHP_FE(ldap_compare, NULL)
+#if LDAP_API_VERSION > 2000
+ PHP_FE(ldap_get_option, third_argument_force_ref)
+ PHP_FE(ldap_set_option, NULL)
+#endif
+
#ifdef STR_TRANSLATION
PHP_FE(ldap_t61_to_8859, NULL)
PHP_FE(ldap_8859_to_t61, NULL)
@@ -152,6 +157,22 @@
REGISTER_MAIN_LONG_CONSTANT("LDAP_DEREF_SEARCHING", LDAP_DEREF_SEARCHING,
CONST_PERSISTENT | CONST_CS);
REGISTER_MAIN_LONG_CONSTANT("LDAP_DEREF_FINDING", LDAP_DEREF_FINDING, CONST_PERSISTENT |
CONST_CS);
REGISTER_MAIN_LONG_CONSTANT("LDAP_DEREF_ALWAYS", LDAP_DEREF_ALWAYS, CONST_PERSISTENT |
CONST_CS);
+
+
+#if LDAP_API_VERSION > 2000
+ /* LDAP options */
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_DEREF", LDAP_OPT_DEREF, CONST_PERSISTENT |
CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_SIZELIMIT", LDAP_OPT_SIZELIMIT, CONST_PERSISTENT |
CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_TIMELIMIT", LDAP_OPT_TIMELIMIT, CONST_PERSISTENT |
CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_PROTOCOL_VERSION", LDAP_OPT_PROTOCOL_VERSION,
CONST_PERSISTENT | CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_ERROR_NUMBER", LDAP_OPT_ERROR_NUMBER,
CONST_PERSISTENT | CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_REFERRALS", LDAP_OPT_REFERRALS, CONST_PERSISTENT |
CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_RESTART", LDAP_OPT_RESTART, CONST_PERSISTENT |
CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_HOST_NAME", LDAP_OPT_HOST_NAME, CONST_PERSISTENT |
CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_ERROR_STRING", LDAP_OPT_ERROR_STRING,
CONST_PERSISTENT | CONST_CS);
+ REGISTER_MAIN_LONG_CONSTANT("LDAP_OPT_MATCHED_DN", LDAP_OPT_MATCHED_DN, CONST_PERSISTENT
| CONST_CS);
+#endif
+
#ifdef ORALDAP
REGISTER_MAIN_LONG_CONSTANT("GSLC_SSL_NO_AUTH", GSLC_SSL_NO_AUTH, CONST_PERSISTENT |
CONST_CS);
REGISTER_MAIN_LONG_CONSTANT("GSLC_SSL_ONEWAY_AUTH", GSLC_SSL_ONEWAY_AUTH,
CONST_PERSISTENT | CONST_CS);
@@ -201,7 +222,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.63 2000/10/17 15:51:04
venaas Exp $" );
+ php_info_print_table_row(2, "RCS Version", "$Id: ldap.c,v 1.64 2000/10/17 16:06:04
venaas Exp $" );
php_info_print_table_row(2, "Total Links", maxl );
#ifdef LDAP_API_VERSION
snprintf(ldapapiversion, 31, "%ld", LDAP_API_VERSION);
@@ -1469,6 +1490,145 @@
/* }}} */
+#if LDAP_API_VERSION > 2000
+/* {{{ proto int ldap_get_option(int link, int option, int retval)
+ Get the current value of various session-wide parameters */
+PHP_FUNCTION(ldap_get_option) {
+ LDAP *ldap;
+ pval **link, **option, **retval;
+ int opt;
+
+ if (ZEND_NUM_ARGS() != 3 ||
+ zend_get_parameters_ex(3, &link, &option, &retval) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ ldap = _get_ldap_link(link);
+ if (ldap == NULL) {
+ RETURN_FALSE;
+ }
+
+ convert_to_long_ex(option);
+ opt = (*option)->value.lval;
+
+ switch(opt) {
+ /* options with int value */
+ case LDAP_OPT_DEREF:
+ case LDAP_OPT_SIZELIMIT:
+ case LDAP_OPT_TIMELIMIT:
+ case LDAP_OPT_PROTOCOL_VERSION:
+ case LDAP_OPT_ERROR_NUMBER:
+ case LDAP_OPT_REFERRALS:
+ case LDAP_OPT_RESTART:
+ {
+ int val;
+ if (ldap_get_option(ldap, opt, &val)) {
+ RETURN_FALSE;
+ }
+ (*retval)->type = IS_LONG;
+ (*retval)->value.lval = val;
+ } break;
+ /* options with string value */
+ case LDAP_OPT_HOST_NAME:
+ case LDAP_OPT_ERROR_STRING:
+ case LDAP_OPT_MATCHED_DN:
+ {
+ char *val;
+ int len;
+ if (ldap_get_option(ldap, opt, &val)) {
+ RETURN_FALSE;
+ }
+ (*retval)->type = IS_STRING;
+ len = strlen(val);
+ (*retval)->value.str.len = len;
+ (*retval)->value.str.val = estrndup(val, len);
+ ldap_memfree(val);
+ } break;
+ /* options not implemented
+ case LDAP_OPT_SERVER_CONTROLS:
+ case LDAP_OPT_CLIENT_CONTROLS:
+ case LDAP_OPT_API_INFO:
+ case LDAP_OPT_API_FEATURE_INFO:
+ */
+ default:
+ RETURN_FALSE;
+ }
+ RETURN_TRUE;
+}
+/* }}} */
+
+
+/* {{{ proto int ldap_set_option(int link, int option, int newval)
+ Set the value of various session-wide parameters */
+PHP_FUNCTION(ldap_set_option) {
+ LDAP *ldap;
+ pval **link, **option, **newval;
+ int opt;
+
+ if (ZEND_NUM_ARGS() != 3 ||
+ zend_get_parameters_ex(3, &link, &option, &newval) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ ldap = _get_ldap_link(link);
+ if (ldap == NULL) {
+ RETURN_FALSE;
+ }
+ convert_to_long_ex(option);
+ opt = (*option)->value.lval;
+
+ switch(opt) {
+ /* options with int value */
+ case LDAP_OPT_DEREF:
+ case LDAP_OPT_SIZELIMIT:
+ case LDAP_OPT_TIMELIMIT:
+ case LDAP_OPT_PROTOCOL_VERSION:
+ case LDAP_OPT_ERROR_NUMBER:
+ {
+ int val;
+ convert_to_long_ex(newval);
+ val = (*newval)->value.lval;
+ if (ldap_set_option(ldap, opt, &val)) {
+ RETURN_FALSE;
+ }
+ } break;
+ /* options with string value */
+ case LDAP_OPT_HOST_NAME:
+ case LDAP_OPT_ERROR_STRING:
+ case LDAP_OPT_MATCHED_DN:
+ {
+ char *val;
+ convert_to_string_ex(newval);
+ val = (*newval)->value.str.val;
+ if (ldap_set_option(ldap, opt, val)) {
+ RETURN_FALSE;
+ }
+ } break;
+ /* options with boolean value */
+ case LDAP_OPT_REFERRALS:
+ case LDAP_OPT_RESTART:
+ {
+ void *val;
+ convert_to_boolean_ex(newval);
+ val = (*newval)->value.lval
+ ? LDAP_OPT_ON : LDAP_OPT_OFF;
+ if (ldap_set_option(ldap, opt, val)) {
+ RETURN_FALSE;
+ }
+ } break;
+ /* options not implemented
+ case LDAP_OPT_SERVER_CONTROLS:
+ case LDAP_OPT_CLIENT_CONTROLS:
+ */
+ default:
+ RETURN_FALSE;
+ }
+ RETURN_TRUE;
+}
+/* }}} */
+#endif
+
+
#ifdef STR_TRANSLATION
static void php_ldap_do_translate(INTERNAL_FUNCTION_PARAMETERS, int way) {
zval **value;
Index: php4/ext/ldap/php_ldap.h
diff -u php4/ext/ldap/php_ldap.h:1.11 php4/ext/ldap/php_ldap.h:1.12
--- php4/ext/ldap/php_ldap.h:1.11 Sat Aug 19 07:05:34 2000
+++ php4/ext/ldap/php_ldap.h Tue Oct 17 09:06:04 2000
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_ldap.h,v 1.11 2000/08/19 14:05:34 venaas Exp $ */
+/* $Id: php_ldap.h,v 1.12 2000/10/17 16:06:04 venaas Exp $ */
#ifndef PHP_LDAP_H
#define PHP_LDAP_H
@@ -80,6 +80,11 @@
PHP_FUNCTION(ldap_error);
PHP_FUNCTION(ldap_compare);
+
+#if LDAP_API_VERSION > 2000
+PHP_FUNCTION(ldap_get_option);
+PHP_FUNCTION(ldap_set_option);
+#endif
#ifdef STR_TRANSLATION
PHP_FUNCTION(ldap_t61_to_8859);