summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/libhtdigphp/htdigphp.c
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/libhtdigphp/htdigphp.c')
-rw-r--r--debian/htdig/htdig-3.2.0b6/libhtdigphp/htdigphp.c730
1 files changed, 730 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/libhtdigphp/htdigphp.c b/debian/htdig/htdig-3.2.0b6/libhtdigphp/htdigphp.c
new file mode 100644
index 00000000..0133fdd7
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/libhtdigphp/htdigphp.c
@@ -0,0 +1,730 @@
+// -------------------------------------------------
+// libhtdigphp.c
+//
+// Code for libhtdig PHP 4.0 wrapper.
+//
+// Requires libhtdig 3.2.0 or better
+//
+// Part of the ht://Dig package <http://www.htdig.org/>
+// <http://www.gnu.org/copyleft/gpl.html>
+//
+// Copyright (c) 1995-2002 The ht://Dig Group
+// Copyright (c) 2002 Rightnow Technologies, Inc.
+//
+// Dual Licensed LGPL
+// See LGPL file for License.
+//
+// Copies available at
+// http://www.fsf.org/licenses/gpl.html
+// http://www.fsf.org/licenses/lgpl.html
+//
+// --------------------------------------------------
+
+/* $Id: htdigphp.c,v 1.1 2004/03/20 01:31:21 nealr Exp $ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "php.h"
+#include "htdigphp.h"
+
+
+/* PHP Includes */
+#include "ext/standard/file.h"
+#include "ext/standard/info.h"
+
+/* for fileno() */
+#include <stdio.h>
+#include <time.h>
+
+/* HtDig includes */
+#include <libhtdig_api.h>
+
+PHP_FUNCTION(htsearch_open);
+PHP_FUNCTION(htsearch_query);
+PHP_FUNCTION(htsearch_get_nth_match);
+PHP_FUNCTION(htsearch_close);
+PHP_FUNCTION(htsearch_get_error);
+PHP_FUNCTION(htdig_index_test_url);
+
+function_entry htdig_functions[] =
+{
+ PHP_FE(htsearch_open, NULL)
+ PHP_FE(htsearch_query, NULL)
+ PHP_FE(htsearch_get_nth_match, NULL)
+ PHP_FE(htsearch_close, NULL)
+ PHP_FE(htsearch_get_error, NULL)
+ PHP_FE(htdig_index_test_url, NULL)
+ {NULL, NULL, NULL}
+};
+
+zend_module_entry htdig_module_entry =
+{
+ STANDARD_MODULE_HEADER,
+ "htdig",
+ htdig_functions,
+ PHP_MINIT(htdig),
+ NULL,
+ NULL,
+ NULL,
+ PHP_MINFO(htdig),
+ NO_VERSION_YET,
+ STANDARD_MODULE_PROPERTIES
+};
+
+#ifdef COMPILE_DL_HTDIG
+ZEND_GET_MODULE(htdig)
+#endif
+//static int le_htdig;
+
+static int num_search_results;
+
+static char time_format[TIME_FORMAT_SIZE];
+
+//static void php_htdig_close(zend_rsrc_list_entry * rsrc TSRMLS_DC);
+
+PHP_MINIT_FUNCTION(htdig)
+{
+ /* Register the resource, with destructor (arg 1) and text description (arg 3), the
+ other arguments are just standard placeholders */
+ //le_htdig = zend_register_list_destructors_ex(php_htdig_close, NULL, "HtDig 3.2.0", module_number);
+
+ return SUCCESS;
+}
+
+PHP_MINFO_FUNCTION(htdig)
+{
+ php_info_print_table_start();
+ php_info_print_table_row(2, "HtDig Support", "Enabled");
+ php_info_print_table_row(2, "HtDig Version", "3.2.0b5");
+ php_info_print_table_end();
+}
+
+/*
+ * htsearch_open
+ *
+ * Wrapper for
+ * int htsearch_open(htsearch_parameters_struct *);
+ *
+ * TODO recieve configFile, debug, logFile as parameters. 2 & 3 are Optional!
+ *
+ */
+PHP_FUNCTION(htsearch_open)
+{
+ zval **config_array_arg, **pvalue;
+ HashTable *config_array_ht;
+ htsearch_parameters_struct htsearch_params;
+ int array_size = 0;
+
+ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &config_array_arg) == FAILURE)
+ WRONG_PARAM_COUNT;
+
+ if (Z_TYPE_PP(config_array_arg) != IS_ARRAY)
+ {
+ php_error(E_WARNING, "First argument to htsearch_open() should be an array");
+ return;
+ }
+
+ convert_to_array_ex(config_array_arg);
+
+ config_array_ht = Z_ARRVAL_PP(config_array_arg);
+
+ array_size = zend_hash_num_elements(config_array_ht);
+
+ if (array_size < 3)
+ {
+ php_error(E_WARNING, "First argument to htsearch_open() should be an array with at least 3 elements");
+ return;
+ }
+
+ memset(&htsearch_params ,0, sizeof(htsearch_params));
+
+ //----------- Required Paramters --------------
+
+ if (zend_hash_find(config_array_ht, "configFile", sizeof("configFile"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.configFile, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'configFile' key not in array parameter");
+ return;
+ }
+
+ if (zend_hash_find(config_array_ht, "debug", sizeof("debug"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_long_ex(pvalue);
+ htsearch_params.debug = Z_LVAL_PP(pvalue);
+ }
+ else
+ {
+ php_error(E_WARNING, "'debug' key not in array parameter");
+ return;
+ }
+
+ if (zend_hash_find(config_array_ht, "logFile", sizeof("logFile"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.logFile, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'logFile' key not in array parameter");
+ return;
+ }
+
+
+ //----------- Optional Paramters --------------
+
+ if (zend_hash_find(config_array_ht, "DBpath", sizeof("DBpath"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.DBpath, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ htsearch_params.DBpath[0] = 0; //NULL terminator
+ htsearch_params.DBpath[1] = 0;
+ }
+
+ if (zend_hash_find(config_array_ht, "locale", sizeof("locale"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.locale, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ htsearch_params.locale[0] = 0; //NULL terminator
+ htsearch_params.locale[1] = 0;
+ }
+
+ if (zend_hash_find(config_array_ht, "restrict", sizeof("restrict"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.search_restrict, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ htsearch_params.search_restrict[0] = 0; //NULL terminator
+ htsearch_params.search_restrict[1] = 0;
+ }
+
+ if (zend_hash_find(config_array_ht, "exclude", sizeof("exclude"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.search_exclude, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ htsearch_params.search_exclude[0] = 0; //NULL terminator
+ htsearch_params.search_exclude[1] = 0;
+ }
+
+ if (zend_hash_find(config_array_ht, "alwaysret", sizeof("alwaysret"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.search_alwaysreturn, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ htsearch_params.search_alwaysreturn[0] = 0; //NULL terminator
+ htsearch_params.search_alwaysreturn[1] = 0;
+ }
+
+ if (zend_hash_find(config_array_ht, "title_factor", sizeof("title_factor"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.title_factor, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ htsearch_params.title_factor[0] = 0; //NULL terminator
+ htsearch_params.title_factor[1] = 0;
+ }
+
+ if (zend_hash_find(config_array_ht, "text_factor", sizeof("text_factor"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.text_factor, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ htsearch_params.text_factor[0] = 0; //NULL terminator
+ htsearch_params.text_factor[1] = 0;
+ }
+
+ if (zend_hash_find(config_array_ht, "meta_description_factor", sizeof("meta_description_factor"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htsearch_params.meta_description_factor, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ htsearch_params.meta_description_factor[0] = 0; //NULL terminator
+ htsearch_params.meta_description_factor[1] = 0;
+ }
+
+
+
+ snprintf(time_format, TIME_FORMAT_SIZE, "%s", DEFAULT_TIME_FORMAT);
+
+ htsearch_open(&htsearch_params);
+
+ num_search_results = 0;
+
+ RETURN_LONG(SUCCESS);
+
+}
+
+/*
+ * wrapper for htsearch_query(htsearch_query_struct *)
+ *
+ * TODO recieve query, algorithms_flag, sortby_flag, format as parameters
+ * Some Optional??
+ *
+ * "raw_query" => "$p_query"
+ * "algorithm" => HTSEARCH_ALG_AND_STR
+ * "sortby" => HTSEARCH_SORT_SCORE_STR
+ * "format" => HTSEARCH_FORMAT_LONG_STR
+ * "time_format" **** optional ***
+ *
+ *
+ */
+PHP_FUNCTION(htsearch_query)
+{
+ zval **query_array_arg, **pvalue;
+ HashTable *query_array_ht;
+ htsearch_query_struct the_query;
+ int array_size = 0;
+
+ num_search_results = 0;
+
+ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &query_array_arg) == FAILURE)
+ WRONG_PARAM_COUNT;
+
+ if (Z_TYPE_PP(query_array_arg) != IS_ARRAY)
+ {
+ php_error(E_WARNING, "First argument to htsearch_query() should be an array");
+ return;
+ }
+
+
+ //SEPARATE_ZVAL(query_array_arg);
+ convert_to_array_ex(query_array_arg);
+
+ query_array_ht = Z_ARRVAL_PP(query_array_arg);
+
+ array_size = zend_hash_num_elements(query_array_ht);
+
+ if (array_size < 4)
+ {
+ php_error(E_WARNING, "First argument to htsearch_open() should be an array with at least 4 elements");
+ return;
+ }
+
+ if (zend_hash_find(query_array_ht, "raw_query", sizeof("raw_query"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ //SEPARATE_ZVAL(pvalue);
+ convert_to_string_ex(pvalue);
+ sprintf(the_query.raw_query, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'raw_query' key not in array parameter");
+ return;
+ }
+
+ if (zend_hash_find(query_array_ht, "algorithm", sizeof("algorithm"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ //SEPARATE_ZVAL(pvalue);
+ convert_to_string_ex(pvalue);
+
+ if (strcmp(HTSEARCH_ALG_AND_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.algorithms_flag = HTSEARCH_ALG_AND;
+ else if (strcmp(HTSEARCH_ALG_OR_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.algorithms_flag = HTSEARCH_ALG_OR;
+ else if (strcmp(HTSEARCH_ALG_BOOLEAN_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.algorithms_flag = HTSEARCH_ALG_BOOLEAN;
+ else
+ {
+ php_error(E_WARNING, "'algorithm' value not valid [%s]", Z_STRVAL_PP(pvalue));
+ return;
+ }
+ }
+ else
+ {
+ php_error(E_WARNING, "'algorithm' key not in array parameter");
+ return;
+ }
+
+ if (zend_hash_find(query_array_ht, "format", sizeof("format"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ //SEPARATE_ZVAL(pvalue);
+ convert_to_string_ex(pvalue);
+
+ if (strcmp(HTSEARCH_FORMAT_LONG_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.format = HTSEARCH_FORMAT_LONG;
+ else if (strcmp(HTSEARCH_FORMAT_SHORT_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.format = HTSEARCH_FORMAT_SHORT;
+ else
+ {
+ php_error(E_WARNING, "'format' value not valid [%s]", Z_STRVAL_PP(pvalue));
+ return;
+ }
+
+ }
+ else
+ {
+ php_error(E_WARNING, "'format' key not in array parameter");
+ return;
+ }
+
+ if (zend_hash_find(query_array_ht, "sortby", sizeof("sortby"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ //SEPARATE_ZVAL(pvalue);
+ convert_to_string_ex(pvalue);
+
+ if (strcmp(HTSEARCH_SORT_SCORE_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.sortby_flag = HTSEARCH_SORT_SCORE;
+ else if (strcmp(HTSEARCH_SORT_REV_SCORE_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.sortby_flag = HTSEARCH_SORT_REV_SCORE;
+ else if (strcmp(HTSEARCH_SORT_TIME_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.sortby_flag = HTSEARCH_SORT_TIME;
+ else if (strcmp(HTSEARCH_SORT_REV_TIME_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.sortby_flag = HTSEARCH_SORT_REV_TIME;
+ else if (strcmp(HTSEARCH_SORT_TITLE_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.sortby_flag = HTSEARCH_SORT_TITLE;
+ else if (strcmp(HTSEARCH_SORT_REV_TITLE_STR, Z_STRVAL_PP(pvalue)) == 0)
+ the_query.sortby_flag = HTSEARCH_SORT_REV_TITLE;
+ else
+ {
+ php_error(E_WARNING, "'sortby' value not valid [%s]", Z_STRVAL_PP(pvalue));
+ return;
+ }
+
+ }
+ else
+ {
+ php_error(E_WARNING, "'sortby' key not in array parameter");
+ return;
+ }
+
+ if (zend_hash_find(query_array_ht, "time_format", sizeof("time_format"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ //SEPARATE_ZVAL(pvalue);
+ convert_to_string_ex(pvalue);
+
+ snprintf(time_format, TIME_FORMAT_SIZE, "%s", Z_STRVAL_PP(pvalue));
+ }
+
+
+ num_search_results = htsearch_query(&the_query);
+
+ //printf("[%s][%d]\n", the_query.raw_query, num_results);
+
+ RETURN_LONG(num_search_results);
+
+}
+
+/*
+ *
+ *
+ */
+PHP_FUNCTION(htsearch_get_nth_match)
+{
+ zval **result_num_arg, **pvalue;
+ htsearch_query_match_struct result;
+ int result_num;
+ int ret = 0;
+ char local_time_str[TIME_FORMAT_SIZE];
+
+ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &result_num_arg) == FAILURE)
+ WRONG_PARAM_COUNT;
+
+ if (Z_TYPE_PP(result_num_arg) != IS_LONG)
+ {
+ php_error(E_WARNING, "First argument to htsearch_get_nth_match() should be an integer");
+ return;
+ }
+
+ convert_to_long_ex(result_num_arg);
+ result_num = Z_LVAL_PP(result_num_arg);
+
+ if (array_init(return_value) == FAILURE) {
+ RETURN_FALSE;
+ }
+
+ ret = htsearch_get_nth_match(result_num, &result);
+
+ if(ret > 0)
+ {
+
+ strftime(local_time_str, TIME_FORMAT_SIZE, time_format, &result.time_tm);
+ //fprintf(stderr, "time:[%s]\n", asctime(&result.time_tm));
+
+ add_assoc_string(return_value, "title", result.title, 1);
+ add_assoc_string(return_value, "URL", result.URL, 1);
+ add_assoc_string(return_value, "excerpt", result.excerpt, 1);
+ add_assoc_string(return_value, "time", local_time_str, 1);
+ add_assoc_long( return_value, "score", result.score );
+ add_assoc_long( return_value, "scorepercent", result.score_percent );
+ add_assoc_long( return_value, "size", result.size );
+ add_assoc_long( return_value, "size", result.size );
+
+ //fprintf(stderr, "%s\n", result.title);
+ }
+ else
+ {
+ add_assoc_long( return_value, "error", ret );
+ }
+
+}
+
+/*
+ *
+ *
+ */
+PHP_FUNCTION(htsearch_close)
+{
+ int ret = 0;
+
+ ret = htsearch_close();
+
+ RETURN_LONG(ret);
+}
+
+/*
+ *
+ *
+ */
+PHP_FUNCTION(htsearch_get_error)
+{
+ RETURN_LONG(SUCCESS);
+}
+
+
+PHP_FUNCTION(htdig_index_test_url)
+{
+ zval **config_array_arg, **pvalue;
+ zval *tmp;
+ HashTable *config_array_ht;
+ htdig_parameters_struct htdigparms;
+ int array_size = 0;
+ int ret = 0;
+
+ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &config_array_arg) == FAILURE)
+ WRONG_PARAM_COUNT;
+
+ if (Z_TYPE_PP(config_array_arg) != IS_ARRAY)
+ {
+ php_error(E_WARNING, "First argument to htdig_index_test_url() should be an array");
+ }
+
+ convert_to_array_ex(config_array_arg);
+
+ config_array_ht = Z_ARRVAL_PP(config_array_arg);
+
+ array_size = zend_hash_num_elements(config_array_ht);
+
+ if (array_size < 1)
+ {
+ php_error(E_WARNING, "First argument to htdig_index_test_url() should be an array with at least 1 elements");
+ return;
+ }
+
+ MAKE_STD_ZVAL(tmp);
+
+ memset(&htdigparms ,0, sizeof(htdigparms));
+
+ //configFile
+ if (zend_hash_find(config_array_ht, "configFile", sizeof("configFile"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.configFile, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'configFile' key not in array parameter");
+ return;
+ }
+
+ //URL
+ if (zend_hash_find(config_array_ht, "URL", sizeof("URL"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.URL, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'URL' key not in array parameter");
+ return;
+ }
+
+ //limit_urls_to
+ if (zend_hash_find(config_array_ht, "limit_urls_to", sizeof("limit_urls_to"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.limit_urls_to, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'limit_urls_to' key not in array parameter");
+ return;
+ }
+
+ //limit_normalized
+ if (zend_hash_find(config_array_ht, "limit_normalized", sizeof("limit_normalized"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.limit_normalized, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'limit_normalized' key not in array parameter");
+ return;
+ }
+
+
+ //exclude_urls
+ if (zend_hash_find(config_array_ht, "exclude_urls", sizeof("exclude_urls"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.exclude_urls, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'exclude_urls' key not in array parameter");
+ return;
+ }
+
+
+ //search_restrict
+ if (zend_hash_find(config_array_ht, "search_restrict", sizeof("search_restrict"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.search_restrict, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'search_restrict' key not in array parameter");
+ return;
+ }
+
+
+ //search_exclude
+ if (zend_hash_find(config_array_ht, "search_exclude", sizeof("search_exclude"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.search_exclude, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'search_exclude' key not in array parameter");
+ return;
+ }
+
+
+ //url_rewrite_rules
+ if (zend_hash_find(config_array_ht, "url_rewrite_rules", sizeof("url_rewrite_rules"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.url_rewrite_rules, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'url_rewrite_rules' key not in array parameter");
+ return;
+ }
+
+ //bad_querystr
+ if (zend_hash_find(config_array_ht, "bad_querystr", sizeof("bad_querystr"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.bad_querystr, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'bad_querystr' key not in array parameter");
+ return;
+ }
+
+ //max_hop_count
+ if (zend_hash_find(config_array_ht, "max_hop_count", sizeof("max_hop_count"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ convert_to_string_ex(pvalue);
+ sprintf(htdigparms.max_hop_count, Z_STRVAL_PP(pvalue));
+ }
+ else
+ {
+ php_error(E_WARNING, "'max_hop_count' key not in array parameter");
+ return;
+ }
+
+
+ //now test the URL with these filters
+ ret = htdig_index_test_url(&htdigparms);
+
+ //add_assoc_string(*config_array_arg, "rewritten_URL", htdigparms.rewritten_URL, 1);
+
+ if (zend_hash_find(config_array_ht, "rewritten_URL", sizeof("rewritten_URL"),
+ (void **) &pvalue) == SUCCESS)
+ {
+ //update rewritten_URL in hashtable-array
+ ZVAL_STRING(tmp, htdigparms.rewritten_URL, TRUE);
+ zend_hash_update(config_array_ht, "rewritten_URL", sizeof("rewritten_URL"),
+ (void *) &tmp, sizeof(zval *), NULL);
+ }
+ else
+ {
+ //add rewritten_URL to hashtable-array
+ ZVAL_STRING(tmp, htdigparms.rewritten_URL, TRUE);
+ zend_hash_add(config_array_ht, "rewritten_URL", sizeof("rewritten_URL"),
+ (void *) &tmp, sizeof(zval *), NULL);
+ }
+
+ //test add/update
+ if (zend_hash_find(config_array_ht, "rewritten_URL", sizeof("rewritten_URL"),
+ (void **) &pvalue) != SUCCESS)
+ {
+ RETURN_LONG(-9999999);
+ }
+
+ RETURN_LONG(ret);
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim600: sw=4 ts=4 tw=78 fdm=marker
+ * vim<600: sw=4 ts=4 tw=78
+ */