gluke Sat Jun 14 14:45:23 2003 EDT
Modified files: (Branch: PHP_4_3)
/php4/ext/mnogosearch php_mnogo.c php_mnogo.h
Log:
@- Mnogosearch extension updated. Now can compile with mnogosearch-3.2.11+
- Mnogosearch extension updated. Now can compile with mnogosearch-3.2.11+
Index: php4/ext/mnogosearch/php_mnogo.c
diff -u php4/ext/mnogosearch/php_mnogo.c:1.66.2.1
php4/ext/mnogosearch/php_mnogo.c:1.66.2.2
--- php4/ext/mnogosearch/php_mnogo.c:1.66.2.1 Tue Dec 31 11:34:55 2002
+++ php4/ext/mnogosearch/php_mnogo.c Sat Jun 14 14:45:23 2003
@@ -1,5 +1,5 @@
/* $Source: /usr/repository/php4/ext/mnogosearch/php_mnogo.c,v $ */
-/* $Id: php_mnogo.c,v 1.66.2.1 2002/12/31 16:34:55 sebastian Exp $ */
+/* $Id: php_mnogo.c,v 1.66.2.2 2003/06/14 18:45:23 gluke Exp $ */
/*
+----------------------------------------------------------------------+
@@ -163,6 +163,12 @@
#if UDM_VERSION_ID >= 30204
PHP_FE(udm_parse_query_string, NULL)
PHP_FE(udm_make_excerpt, NULL)
+ PHP_FE(udm_set_agent_param_ex, NULL)
+ PHP_FE(udm_get_res_field_ex, NULL)
+#endif
+#if UDM_VERSION_ID >= 30211
+ PHP_FE(udm_hash32, NULL)
+ PHP_FE(udm_alloc_agent_array, NULL)
#endif
#endif
@@ -456,7 +462,7 @@
UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");
UdmSetLogLevel(Env,0);
UdmOpenLog("mnoGoSearch-php",Env,0);
-
+#if UDM_VERSION_ID <= 30210
if(!memcmp(dbaddr,"searchd:",8)){
UDM_URL Url;
UdmURLParse(&Url,dbaddr);
@@ -464,13 +470,18 @@
}
UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr);
+
if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){
sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);
+#if UDM_VERSION_ID <= 30207
Env->errcode=1;
- php_error(E_WARNING,"%s(): Invalid DBAddr",
get_active_function_name(TSRMLS_C));
+#endif
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Invalid DBAddr");
RETURN_FALSE;
}
-
+#else
+ UdmDBListAdd(&Env->dbl,dbaddr, UDM_OPEN_MODE_WRITE);
+#endif
Agent=UdmAgentInit(NULL,Env,0);
#elif UDM_VERSION_ID >= 30200
Env=UdmAllocEnv();
@@ -508,7 +519,7 @@
UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");
UdmSetLogLevel(Env,0);
UdmOpenLog("mnoGoSearch-php",Env,0);
-
+#if UDM_VERSION_ID <= 30210
if(!memcmp(dbaddr,"searchd:",8)){
UDM_URL Url;
UdmURLParse(&Url,dbaddr);
@@ -517,10 +528,15 @@
UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr);
if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){
sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);
+#if UDM_VERSION_ID <= 30207
Env->errcode=1;
- php_error(E_WARNING,"%s(): Invalid DBAddr",
get_active_function_name(TSRMLS_C));
+#endif
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Invalid DBAddr");
RETURN_FALSE;
}
+#else
+ UdmDBListAdd(&Env->dbl,dbaddr, UDM_OPEN_MODE_WRITE);
+#endif
Agent=UdmAgentInit(NULL,Env,0);
#elif UDM_VERSION_ID >= 30200
Env=UdmAllocEnv();
@@ -620,7 +636,7 @@
case UDM_MODE_PHRASE:
#if UDM_VERSION_ID >= 30200
- php_error(E_WARNING,"%s(): Unknown
search mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown search mode");
RETURN_FALSE;
#else
Agent->search_mode=UDM_MODE_PHRASE;
@@ -633,7 +649,7 @@
#else
Agent->search_mode=UDM_MODE_ALL;
#endif
- php_error(E_WARNING,"%s(): Unknown
search mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown search mode");
RETURN_FALSE;
break;
}
@@ -679,7 +695,7 @@
#else
Agent->word_match=UDM_MATCH_WORD;
#endif
- php_error(E_WARNING,"%s(): Unknown
word match mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown word match mode");
RETURN_FALSE;
break;
}
@@ -714,7 +730,7 @@
#else
UdmReplaceStrVar(Agent->Conf->vars,"Cache","no",UDM_VARSRC_GLOBAL);
#endif
- php_error(E_WARNING,"%s(): Unknown cache
mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown cache mode");
RETURN_FALSE;
break;
}
@@ -752,7 +768,7 @@
#else
UdmReplaceStrVar(Agent->Conf->vars,"TrackQuery","no",UDM_VARSRC_GLOBAL);
#endif
- php_error(E_WARNING,"%s(): Unknown track
mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown track mode");
RETURN_FALSE;
break;
}
@@ -771,7 +787,7 @@
break;
default:
- php_error(E_WARNING,"%s(): Unknown phrase
mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown phrase mode");
RETURN_FALSE;
break;
}
@@ -809,7 +825,7 @@
#else
UdmAddIntVar(Agent->Conf->vars,
"IspellUsePrefixes", 1, UDM_VARSRC_GLOBAL);
#endif
- php_error(E_WARNING,"%s(): Unknown ispell
prefixes mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown ispell prefixes mode");
RETURN_FALSE;
break;
}
@@ -866,7 +882,7 @@
case UDM_PARAM_SYNONYM:
if (UdmSynonymListLoad(Agent->Conf,val)) {
- php_error(E_WARNING, "%s(): %s",
get_active_function_name(TSRMLS_C),Agent->Conf->errstr);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
"%s",Agent->Conf->errstr);
RETURN_FALSE;
#if UDM_VERSION_ID >= 30204
} else UdmSynonymListSort(&(Agent->Conf->Synonyms));
@@ -918,7 +934,7 @@
#else
if (UdmFileLoadStopList(Agent->Conf,val)) {
#endif
- php_error(E_WARNING, "%s(): %s", Agent->Conf->errstr,
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",
Agent->Conf->errstr);
RETURN_FALSE;
}
break;
@@ -985,7 +1001,7 @@
break;
default:
- php_error(E_WARNING,"%s(): Unknown crosswords
mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown crosswords mode");
RETURN_FALSE;
break;
}
@@ -997,6 +1013,8 @@
case UDM_PARAM_VARDIR:
#if UDM_VERSION_ID < 30200
udm_snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
+#elif UDM_VERSION_ID >= 30208
+ UdmVarListReplaceStr(&Agent->Conf->Vars,"Vardir",val);
#elif UDM_VERSION_ID >= 30204
UdmVarListReplaceStr(&Agent->Conf->Vars,"Vardir",val);
snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
@@ -1032,7 +1050,7 @@
break;
default:
- php_error(E_WARNING,"%s(): Unknown groupbysite
mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown groupbysite mode");
RETURN_FALSE;
break;
}
@@ -1057,7 +1075,7 @@
break;
default:
- php_error(E_WARNING,"%s(): Unknown clones
mode", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
E_WARNING,"Unknown clones mode");
RETURN_FALSE;
break;
}
@@ -1066,7 +1084,7 @@
#endif
default:
- php_error(E_WARNING,"%s(): Unknown agent session parameter",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown agent
session parameter");
RETURN_FALSE;
break;
}
@@ -1160,12 +1178,12 @@
#endif
if (UdmImportAffixes(Agent->Conf,val1,val2,NULL,0)) {
- php_error(E_WARNING,"%s(): Cannot load affix file %s",
get_active_function_name(TSRMLS_C),val2);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot
load affix file %s",val2);
RETURN_FALSE;
}
#else
if (UdmImportAffixes(Agent->Conf,val1,charset,val2)) {
- php_error(E_WARNING,"%s(): Cannot load affix file %s",
get_active_function_name(TSRMLS_C),val2);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot
load affix file %s",val2);
RETURN_FALSE;
}
@@ -1181,12 +1199,12 @@
#endif
if (UdmImportDictionary(Agent->Conf,val1,val2,1,"")) {
- php_error(E_WARNING,"%s(): Cannot load spell file %s",
get_active_function_name(TSRMLS_C),val2);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot
load spell file %s",val2);
RETURN_FALSE;
}
#else
if (UdmImportDictionary(Agent->Conf,val1,charset,val2,0,"")) {
- php_error(E_WARNING,"%s(): Cannot load spell file %s",
get_active_function_name(TSRMLS_C),val2);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot
load spell file %s",val2);
RETURN_FALSE;
}
#endif
@@ -1194,7 +1212,7 @@
default:
- php_error(E_WARNING,"%s(): Unknown ispell type parameter",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown ispell
type parameter");
RETURN_FALSE;
break;
}
@@ -1328,7 +1346,7 @@
Z_TYPE(stl_info)=2;
stl_info.t2=(time_t)(atol(edate+1));
} else {
- php_error(E_WARNING,"%s(): Incorrect date limit
format", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Incorrect
date limit format");
RETURN_FALSE;
}
@@ -1338,7 +1356,7 @@
#endif
break;
default:
- php_error(E_WARNING,"%s(): Unknown search limit parameter",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown search
limit parameter");
RETURN_FALSE;
break;
}
@@ -1647,24 +1665,212 @@
Excerpt = UdmExcerptDoc(Agent, Res, &(Res->Doc[row]), 256);
- if (Excerpt != NULL) {
+ if ((Excerpt != NULL) && (strlen(Excerpt) > 6)) {
char *HlExcerpt = UdmHlConvert(&Res->WWList, Excerpt,
Agent->Conf->lcs, Agent->Conf->bcs);
- UdmVarListReplaceInt(&(Res->Doc[row].Sections),"ST",1);
UdmVarListReplaceStr(&(Res->Doc[row].Sections),"Body",HlExcerpt);
UDM_FREE(HlExcerpt);
+ }
+ if (Excerpt != NULL && (UdmVarListFindStr(&(Res->Doc[row].Sections),
"Z", NULL) == NULL)) {
+ UdmVarListReplaceInt(&(Res->Doc[row].Sections),"ST",1);
UDM_FREE(Excerpt);
} else {
UdmVarListReplaceInt(&(Res->Doc[row].Sections),"ST",0);
RETURN_FALSE;
}
}else{
- php_error(E_WARNING,"%s(): row number too large",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"row number too large");
RETURN_FALSE;
}
RETURN_TRUE;
}
/* }}} */
+
+/* {{{ proto int udm_set_agent_param_ex(int agent, string var, string val)
+ Set mnoGoSearch agent session parameters extended */
+DLEXPORT PHP_FUNCTION(udm_set_agent_param_ex)
+{
+ pval **yyagent, **yyvar, **yyval;
+ char *val, *var;
+ UDM_AGENT * Agent;
+
+ switch(ZEND_NUM_ARGS()){
+
+ case 3:
+ if(zend_get_parameters_ex(3,&yyagent,&yyvar,&yyval)==FAILURE){
+ RETURN_FALSE;
+ }
+ convert_to_string_ex(yyvar);
+ convert_to_string_ex(yyval);
+ ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1,
"mnoGoSearch-agent", le_link);
+ var = Z_STRVAL_PP(yyvar);
+ val = Z_STRVAL_PP(yyval);
+
+ break;
+
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+
+ UdmVarListReplaceStr(&Agent->Conf->Vars,var,val);
+
+ if (!strcasecmp(var,"LocalCharset")) {
+ const char *
charset=UdmVarListFindStr(&Agent->Conf->Vars,"LocalCharset","iso-8859-1");
+ Agent->Conf->lcs=UdmGetCharSet(charset);
+ } else if (!strcasecmp(var,"BrowserCharset")) {
+ const char *
charset=UdmVarListFindStr(&Agent->Conf->Vars,"BrowserCharset","iso-8859-1");
+ Agent->Conf->bcs=UdmGetCharSet(charset);
+ } else if (!strcasecmp(var,"Synonym")) {
+ if (UdmSynonymListLoad(Agent->Conf,val)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
"%s",Agent->Conf->errstr);
+ RETURN_FALSE;
+ } else UdmSynonymListSort(&(Agent->Conf->Synonyms));
+ } else if (!strcasecmp(var,"Stopwordfile")) {
+ if (UdmStopListLoad(Agent->Conf,val)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",
Agent->Conf->errstr);
+ RETURN_FALSE;
+ }
+ } else if (!strcasecmp(var,"MinWordLen")) {
+ Agent->Conf->WordParam.min_word_len=atoi(val);
+ } else if (!strcasecmp(var,"MaxWordLen")) {
+ Agent->Conf->WordParam.max_word_len=atoi(val);
+#if UDM_VERSION_ID <= 30207
+ } else if (!strcasecmp(var,"VarDir")) {
+
snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
+#endif
+ }
+
+ RETURN_TRUE;
+}
+
+/* {{{ proto string udm_get_res_field_ex(int res, int row, string field)
+ Fetch mnoGoSearch result field */
+DLEXPORT PHP_FUNCTION(udm_get_res_field_ex)
+{
+ pval **yyres, **yyrow_num, **yyfield_name;
+
+ UDM_RESULT * Res;
+ int row;
+ char *field;
+
+ switch(ZEND_NUM_ARGS()){
+ case 3: {
+ if (zend_get_parameters_ex(3,
&yyres,&yyrow_num,&yyfield_name)==FAILURE){
+ RETURN_FALSE;
+ }
+ convert_to_string_ex(yyrow_num);
+ convert_to_string_ex(yyfield_name);
+ field = Z_STRVAL_PP(yyfield_name);
+ row = atoi(Z_STRVAL_PP(yyrow_num));
+ }
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+
+ ZEND_FETCH_RESOURCE(Res, UDM_RESULT *, yyres, -1, "mnoGoSearch-Result",
le_res);
+ if(row<Res->num_rows){
+ if (!strcasecmp(field,"URL")) {
+ char *al;
+ al = (char *)MyRemoveHiLightDup((const char
*)(UdmVarListFindStr(&(Res->Doc[row].Sections), field, "")));
+ UdmVarListReplaceStr(&Res->Doc[row].Sections,field,al);
+ free(al);
+ }
+ RETURN_STRING((char
*)UdmVarListFindStr(&Res->Doc[row].Sections,field,""),1);
+ } else {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"row number too large");
+ RETURN_FALSE;
+ }
+}
+/* }}} */
+#endif
+
+#if UDM_VERSION_ID >= 30211
+/* {{{ proto int udm_alloc_agent_array(array dbaddr)
+ Allocate mnoGoSearch session */
+DLEXPORT PHP_FUNCTION(udm_alloc_agent_array)
+{
+ switch(ZEND_NUM_ARGS()){
+
+ case 1: {
+ pval **yydbaddr;
+ zval **tmp;
+ char *dbaddr;
+ UDM_ENV * Env;
+ UDM_AGENT * Agent;
+ HashPosition pos;
+
+ if(zend_get_parameters_ex(1,&yydbaddr)==FAILURE){
+ RETURN_FALSE;
+ }
+
+ if (Z_TYPE_PP(yydbaddr) != IS_ARRAY) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
"Argument DBAddr must be an array.");
+ RETURN_FALSE;
+ }
+ convert_to_array_ex(yydbaddr);
+
+ Env=UdmEnvInit(NULL);
+
UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");
+ UdmSetLogLevel(Env,0);
+ UdmOpenLog("mnoGoSearch-php",Env,0);
+
+
zend_hash_internal_pointer_reset_ex(HASH_OF(*yydbaddr), &pos);
+
+ while
(zend_hash_get_current_data_ex(HASH_OF(*yydbaddr), (void **)&tmp, &pos) == SUCCESS) {
+ convert_to_string_ex(tmp);
+ dbaddr = Z_STRVAL_PP(tmp);
+ UdmDBListAdd(&Env->dbl,dbaddr,
UDM_OPEN_MODE_WRITE);
+
+ zend_hash_move_forward_ex(HASH_OF(*yydbaddr),
&pos);
+ }
+
+ Agent=UdmAgentInit(NULL,Env,0);
+ ZEND_REGISTER_RESOURCE(return_value,Agent,le_link);
+ }
+ break;
+
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+}
+/* }}} */
+
+/* {{{ proto int udm_hash32(int agent, string str)
+ Return Hash32 checksum of gived string */
+DLEXPORT PHP_FUNCTION(udm_hash32)
+{
+ pval ** yystr, ** yyagent;
+ char *str;
+ udmhash32_t hash32;
+ char buf[32];
+ UDM_AGENT * Agent;
+ int id=-1;
+
+ switch(ZEND_NUM_ARGS()){
+ case 2: {
+ if (zend_get_parameters_ex(2,
&yyagent,&yystr)==FAILURE) {
+ RETURN_FALSE;
+ }
+ }
+ break;
+ default:
+ WRONG_PARAM_COUNT;
+ break;
+ }
+ ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, id, "mnoGoSearch-Agent",
le_link);
+ convert_to_string_ex(yystr);
+ str = Z_STRVAL_PP(yystr);
+
+ hash32=UdmHash32((str),strlen(str));
+ snprintf(buf,sizeof(buf)-1,"%u",hash32);
+
+ RETURN_STRING(buf,1);
+}
+/* }}} */
#endif
/* {{{ proto int udm_find(int agent, string query)
@@ -1876,12 +2082,12 @@
#endif
default:
- php_error(E_WARNING,"%s(): Unknown mnoGoSearch field
name", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown
mnoGoSearch field name");
RETURN_FALSE;
break;
}
}else{
- php_error(E_WARNING,"%s(): row number too large",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"row number too large");
RETURN_FALSE;
}
}
@@ -1926,7 +2132,6 @@
{
size_t wsize=(1+len*15)*sizeof(char);
char *wordinfo = (char*) malloc(wsize);
- int corder = -1, ccount = 0;
*wordinfo = '\0';
@@ -1956,7 +2161,7 @@
{
size_t wsize=(1+len*15)*sizeof(char);
char *wordinfo = (char*) malloc(wsize);
- int corder = -1, ccount = 0;
+ int corder = (size_t)-1, ccount = 0;
*wordinfo = '\0';
@@ -1998,7 +2203,7 @@
break;
default:
- php_error(E_WARNING,"%s(): Unknown mnoGoSearch param name",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown
mnoGoSearch param name");
RETURN_FALSE;
break;
}
@@ -2071,7 +2276,13 @@
break;
}
ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent",
le_link);
-#if UDM_VERSION_ID >= 30204
+#if UDM_VERSION_ID >= 30208
+ if (UdmEnvErrMsg(Agent->Conf) && strlen(UdmEnvErrMsg(Agent->Conf))) {
+ RETURN_LONG(1);
+ } else {
+ RETURN_LONG(0);
+ }
+#elif UDM_VERSION_ID >= 30204
RETURN_LONG(UdmEnvErrCode(Agent->Conf));
#else
RETURN_LONG(UdmDBErrorCode(Agent->db));
@@ -2147,13 +2358,15 @@
#if UDM_VERSION_ID >= 30204
bzero(&C,sizeof(C));
strncpy(C.addr,cat,sizeof(C.addr)-1);
+#if UDM_VERSION_ID <= 30210
if(!UdmCatAction(Agent,&C,UDM_CAT_ACTION_LIST,Agent->Conf->db)){
#else
+ if(UDM_OK == UdmCatAction(Agent,&C,UDM_CAT_ACTION_LIST)){
+#endif
+#else
if((c=UdmCatList(Agent,cat))){
#endif
- if (array_init(return_value)==FAILURE) {
- RETURN_FALSE;
- }
+ array_init(return_value);
if (!(buf=calloc(1,UDMSTRSIZ+1))) {
RETURN_FALSE;
@@ -2164,11 +2377,9 @@
int i;
if (C.ncategories) {
for(i=0;i<C.ncategories;i++){
- snprintf(buf, UDMSTRSIZ, "%s%s",C.Category[i].link[0]?"@
":"", C.Category[i].name);
- add_next_index_string(return_value,
C.Category[i].link[0]?C.Category[i].link:C.Category[i].path, 1);
- add_next_index_string(return_value, buf, 1);
+ add_next_index_stringl(return_value,
C.Category[i].path,strlen(C.Category[i].path),1);
+ add_next_index_stringl(return_value,
C.Category[i].name,strlen(C.Category[i].name),1);
}
- free(C.Category);
} else {
RETURN_FALSE;
}
@@ -2221,13 +2432,15 @@
#if UDM_VERSION_ID >= 30204
bzero(&C,sizeof(C));
strncpy(C.addr,cat,sizeof(C.addr)-1);
+#if UDM_VERSION_ID <= 30210
if(!UdmCatAction(Agent,&C,UDM_CAT_ACTION_PATH,Agent->Conf->db)){
#else
+ if(UDM_OK == UdmCatAction(Agent,&C,UDM_CAT_ACTION_PATH)){
+#endif
+#else
if((c=UdmCatPath(Agent,cat))){
#endif
- if (array_init(return_value)==FAILURE) {
- RETURN_FALSE;
- }
+ array_init(return_value);
if (!(buf=calloc(1,UDMSTRSIZ+1))) {
RETURN_FALSE;
@@ -2238,11 +2451,9 @@
int i;
if (C.ncategories) {
for(i=0;i<C.ncategories;i++){
- snprintf(buf, UDMSTRSIZ, "%s%s",C.Category[i].link[0]?"@
":"", C.Category[i].name);
- add_next_index_string(return_value,
C.Category[i].link[0]?C.Category[i].link:C.Category[i].path, 1);
- add_next_index_string(return_value, buf, 1);
+ add_next_index_stringl(return_value,
C.Category[i].path,strlen(C.Category[i].path),1);
+ add_next_index_stringl(return_value,
C.Category[i].name,strlen(C.Category[i].name),1);
}
- free(C.Category);
} else {
RETURN_FALSE;
}
@@ -2284,7 +2495,11 @@
}
ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, id, "mnoGoSearch-Agent",
le_link);
#if UDM_VERSION_ID >= 30204
+#if UDM_VERSION_ID <= 30210
if (!Agent->doccount)
UdmURLAction(Agent,NULL,UDM_URL_ACTION_DOCCOUNT,Agent->Conf->db);
+#else
+ if (!Agent->doccount) UdmURLAction(Agent,NULL,UDM_URL_ACTION_DOCCOUNT);
+#endif
RETURN_LONG(Agent->doccount);
#else
RETURN_LONG(UdmGetDocCount(Agent));
Index: php4/ext/mnogosearch/php_mnogo.h
diff -u php4/ext/mnogosearch/php_mnogo.h:1.19.4.2
php4/ext/mnogosearch/php_mnogo.h:1.19.4.3
--- php4/ext/mnogosearch/php_mnogo.h:1.19.4.2 Sat Apr 19 01:10:27 2003
+++ php4/ext/mnogosearch/php_mnogo.h Sat Jun 14 14:45:23 2003
@@ -1,5 +1,5 @@
/* $Source: /usr/repository/php4/ext/mnogosearch/php_mnogo.h,v $ */
-/* $Id: php_mnogo.h,v 1.19.4.2 2003/04/19 05:10:27 sas Exp $ */
+/* $Id: php_mnogo.h,v 1.19.4.3 2003/06/14 18:45:23 gluke Exp $ */
/*
+----------------------------------------------------------------------+
@@ -27,8 +27,6 @@
#if HAVE_MNOGOSEARCH
-#undef HAVE_PGSQL
-#undef HAVE_MYSQL
#include <udm_config.h>
#include <udmsearch.h>
@@ -70,6 +68,12 @@
#if UDM_VERSION_ID >= 30204
DLEXPORT PHP_FUNCTION(udm_parse_query_string);
DLEXPORT PHP_FUNCTION(udm_make_excerpt);
+DLEXPORT PHP_FUNCTION(udm_set_agent_param_ex);
+DLEXPORT PHP_FUNCTION(udm_get_res_field_ex);
+#endif
+#if UDM_VERSION_ID >= 30211
+DLEXPORT PHP_FUNCTION(udm_hash32);
+DLEXPORT PHP_FUNCTION(udm_alloc_agent_array);
#endif
#endif
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php