1 Index: php-src/ext/mnogosearch/php_mnogo.c
2 ===================================================================
3 RCS file: /repository/php-src/ext/mnogosearch/php_mnogo.c,v
4 retrieving revision 1.66.2.1
5 retrieving revision 1.66.2.5
6 diff -u -r1.66.2.1 -r1.66.2.5
7 --- php-src/ext/mnogosearch/php_mnogo.c 31 Dec 2002 16:34:55 -0000 1.66.2.1
8 +++ php-src/ext/mnogosearch/php_mnogo.c 8 Jul 2003 14:00:57 -0000 1.66.2.5
15 +----------------------------------------------------------------------+
17 +----------------------------------------------------------------------+
18 | Copyright (c) 1997-2003 The PHP Group |
19 +----------------------------------------------------------------------+
20 - | This source file is subject to version 2.02 of the PHP license, |
21 + | This source file is subject to version 3.0 of the PHP license, |
22 | that is bundled with this package in the file LICENSE, and is |
23 - | available at through the world-wide-web at |
24 - | http://www.php.net/license/2_02.txt. |
25 + | available through the world-wide-web at the following url: |
26 + | http://www.php.net/license/3_0.txt. |
27 | If you did not receive a copy of the PHP license and are unable to |
28 | obtain it through the world-wide-web, please send a note to |
29 | license@php.net so we can mail you a copy immediately. |
31 #if UDM_VERSION_ID >= 30204
32 PHP_FE(udm_parse_query_string, NULL)
33 PHP_FE(udm_make_excerpt, NULL)
34 + PHP_FE(udm_set_agent_param_ex, NULL)
35 + PHP_FE(udm_get_res_field_ex, NULL)
37 +#if UDM_VERSION_ID >= 30211
38 + PHP_FE(udm_hash32, NULL)
39 + PHP_FE(udm_alloc_agent_array, NULL)
44 UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");
45 UdmSetLogLevel(Env,0);
46 UdmOpenLog("mnoGoSearch-php",Env,0);
48 +#if UDM_VERSION_ID <= 30210
49 if(!memcmp(dbaddr,"searchd:",8)){
51 UdmURLParse(&Url,dbaddr);
55 UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr);
57 if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){
58 sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);
59 +#if UDM_VERSION_ID <= 30207
61 - php_error(E_WARNING,"%s(): Invalid DBAddr", get_active_function_name(TSRMLS_C));
63 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Invalid DBAddr");
68 + UdmDBListAdd(&Env->dbl,dbaddr, UDM_OPEN_MODE_WRITE);
70 Agent=UdmAgentInit(NULL,Env,0);
71 #elif UDM_VERSION_ID >= 30200
74 UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");
75 UdmSetLogLevel(Env,0);
76 UdmOpenLog("mnoGoSearch-php",Env,0);
78 +#if UDM_VERSION_ID <= 30210
79 if(!memcmp(dbaddr,"searchd:",8)){
81 UdmURLParse(&Url,dbaddr);
83 UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr);
84 if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){
85 sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);
86 +#if UDM_VERSION_ID <= 30207
88 - php_error(E_WARNING,"%s(): Invalid DBAddr", get_active_function_name(TSRMLS_C));
90 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Invalid DBAddr");
94 + UdmDBListAdd(&Env->dbl,dbaddr, UDM_OPEN_MODE_WRITE);
96 Agent=UdmAgentInit(NULL,Env,0);
97 #elif UDM_VERSION_ID >= 30200
101 case UDM_MODE_PHRASE:
102 #if UDM_VERSION_ID >= 30200
103 - php_error(E_WARNING,"%s(): Unknown search mode", get_active_function_name(TSRMLS_C));
104 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown search mode");
107 Agent->search_mode=UDM_MODE_PHRASE;
110 Agent->search_mode=UDM_MODE_ALL;
112 - php_error(E_WARNING,"%s(): Unknown search mode", get_active_function_name(TSRMLS_C));
113 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown search mode");
119 Agent->word_match=UDM_MATCH_WORD;
121 - php_error(E_WARNING,"%s(): Unknown word match mode", get_active_function_name(TSRMLS_C));
122 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown word match mode");
128 UdmReplaceStrVar(Agent->Conf->vars,"Cache","no",UDM_VARSRC_GLOBAL);
130 - php_error(E_WARNING,"%s(): Unknown cache mode", get_active_function_name(TSRMLS_C));
131 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown cache mode");
137 UdmReplaceStrVar(Agent->Conf->vars,"TrackQuery","no",UDM_VARSRC_GLOBAL);
139 - php_error(E_WARNING,"%s(): Unknown track mode", get_active_function_name(TSRMLS_C));
140 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown track mode");
148 - php_error(E_WARNING,"%s(): Unknown phrase mode", get_active_function_name(TSRMLS_C));
149 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown phrase mode");
155 UdmAddIntVar(Agent->Conf->vars, "IspellUsePrefixes", 1, UDM_VARSRC_GLOBAL);
157 - php_error(E_WARNING,"%s(): Unknown ispell prefixes mode", get_active_function_name(TSRMLS_C));
158 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown ispell prefixes mode");
164 case UDM_PARAM_SYNONYM:
165 if (UdmSynonymListLoad(Agent->Conf,val)) {
166 - php_error(E_WARNING, "%s(): %s", get_active_function_name(TSRMLS_C),Agent->Conf->errstr);
167 + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",Agent->Conf->errstr);
169 #if UDM_VERSION_ID >= 30204
170 } else UdmSynonymListSort(&(Agent->Conf->Synonyms));
173 if (UdmFileLoadStopList(Agent->Conf,val)) {
175 - php_error(E_WARNING, "%s(): %s", Agent->Conf->errstr, get_active_function_name(TSRMLS_C));
176 + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", Agent->Conf->errstr);
184 - php_error(E_WARNING,"%s(): Unknown crosswords mode", get_active_function_name(TSRMLS_C));
185 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown crosswords mode");
190 case UDM_PARAM_VARDIR:
191 #if UDM_VERSION_ID < 30200
192 udm_snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
193 +#elif UDM_VERSION_ID >= 30208
194 + UdmVarListReplaceStr(&Agent->Conf->Vars,"Vardir",val);
195 #elif UDM_VERSION_ID >= 30204
196 UdmVarListReplaceStr(&Agent->Conf->Vars,"Vardir",val);
197 snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
198 @@ -1032,7 +1050,7 @@
202 - php_error(E_WARNING,"%s(): Unknown groupbysite mode", get_active_function_name(TSRMLS_C));
203 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown groupbysite mode");
207 @@ -1057,7 +1075,7 @@
211 - php_error(E_WARNING,"%s(): Unknown clones mode", get_active_function_name(TSRMLS_C));
212 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown clones mode");
216 @@ -1066,7 +1084,7 @@
220 - php_error(E_WARNING,"%s(): Unknown agent session parameter", get_active_function_name(TSRMLS_C));
221 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown agent session parameter");
225 @@ -1160,12 +1178,12 @@
228 if (UdmImportAffixes(Agent->Conf,val1,val2,NULL,0)) {
229 - php_error(E_WARNING,"%s(): Cannot load affix file %s", get_active_function_name(TSRMLS_C),val2);
230 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot load affix file %s",val2);
234 if (UdmImportAffixes(Agent->Conf,val1,charset,val2)) {
235 - php_error(E_WARNING,"%s(): Cannot load affix file %s", get_active_function_name(TSRMLS_C),val2);
236 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot load affix file %s",val2);
240 @@ -1181,12 +1199,12 @@
243 if (UdmImportDictionary(Agent->Conf,val1,val2,1,"")) {
244 - php_error(E_WARNING,"%s(): Cannot load spell file %s", get_active_function_name(TSRMLS_C),val2);
245 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot load spell file %s",val2);
249 if (UdmImportDictionary(Agent->Conf,val1,charset,val2,0,"")) {
250 - php_error(E_WARNING,"%s(): Cannot load spell file %s", get_active_function_name(TSRMLS_C),val2);
251 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Cannot load spell file %s",val2);
255 @@ -1194,7 +1212,7 @@
259 - php_error(E_WARNING,"%s(): Unknown ispell type parameter", get_active_function_name(TSRMLS_C));
260 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown ispell type parameter");
264 @@ -1328,7 +1346,7 @@
266 stl_info.t2=(time_t)(atol(edate+1));
268 - php_error(E_WARNING,"%s(): Incorrect date limit format", get_active_function_name(TSRMLS_C));
269 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Incorrect date limit format");
273 @@ -1338,7 +1356,7 @@
277 - php_error(E_WARNING,"%s(): Unknown search limit parameter", get_active_function_name(TSRMLS_C));
278 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown search limit parameter");
282 @@ -1647,24 +1665,212 @@
284 Excerpt = UdmExcerptDoc(Agent, Res, &(Res->Doc[row]), 256);
286 - if (Excerpt != NULL) {
287 + if ((Excerpt != NULL) && (strlen(Excerpt) > 6)) {
288 char *HlExcerpt = UdmHlConvert(&Res->WWList, Excerpt, Agent->Conf->lcs, Agent->Conf->bcs);
289 - UdmVarListReplaceInt(&(Res->Doc[row].Sections),"ST",1);
290 UdmVarListReplaceStr(&(Res->Doc[row].Sections),"Body",HlExcerpt);
293 + if (Excerpt != NULL && (UdmVarListFindStr(&(Res->Doc[row].Sections), "Z", NULL) == NULL)) {
294 + UdmVarListReplaceInt(&(Res->Doc[row].Sections),"ST",1);
297 UdmVarListReplaceInt(&(Res->Doc[row].Sections),"ST",0);
301 - php_error(E_WARNING,"%s(): row number too large", get_active_function_name(TSRMLS_C));
302 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"row number too large");
310 +/* {{{ proto int udm_set_agent_param_ex(int agent, string var, string val)
311 + Set mnoGoSearch agent session parameters extended */
312 +DLEXPORT PHP_FUNCTION(udm_set_agent_param_ex)
314 + pval **yyagent, **yyvar, **yyval;
318 + switch(ZEND_NUM_ARGS()){
321 + if(zend_get_parameters_ex(3,&yyagent,&yyvar,&yyval)==FAILURE){
324 + convert_to_string_ex(yyvar);
325 + convert_to_string_ex(yyval);
326 + ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-agent", le_link);
327 + var = Z_STRVAL_PP(yyvar);
328 + val = Z_STRVAL_PP(yyval);
337 + UdmVarListReplaceStr(&Agent->Conf->Vars,var,val);
339 + if (!strcasecmp(var,"LocalCharset")) {
340 + const char * charset=UdmVarListFindStr(&Agent->Conf->Vars,"LocalCharset","iso-8859-1");
341 + Agent->Conf->lcs=UdmGetCharSet(charset);
342 + } else if (!strcasecmp(var,"BrowserCharset")) {
343 + const char * charset=UdmVarListFindStr(&Agent->Conf->Vars,"BrowserCharset","iso-8859-1");
344 + Agent->Conf->bcs=UdmGetCharSet(charset);
345 + } else if (!strcasecmp(var,"Synonym")) {
346 + if (UdmSynonymListLoad(Agent->Conf,val)) {
347 + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",Agent->Conf->errstr);
349 + } else UdmSynonymListSort(&(Agent->Conf->Synonyms));
350 + } else if (!strcasecmp(var,"Stopwordfile")) {
351 + if (UdmStopListLoad(Agent->Conf,val)) {
352 + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", Agent->Conf->errstr);
355 + } else if (!strcasecmp(var,"MinWordLen")) {
356 + Agent->Conf->WordParam.min_word_len=atoi(val);
357 + } else if (!strcasecmp(var,"MaxWordLen")) {
358 + Agent->Conf->WordParam.max_word_len=atoi(val);
359 +#if UDM_VERSION_ID <= 30207
360 + } else if (!strcasecmp(var,"VarDir")) {
361 + snprintf(Agent->Conf->vardir,sizeof(Agent->Conf->vardir)-1,"%s%s",val,UDMSLASHSTR);
368 +/* {{{ proto string udm_get_res_field_ex(int res, int row, string field)
369 + Fetch mnoGoSearch result field */
370 +DLEXPORT PHP_FUNCTION(udm_get_res_field_ex)
372 + pval **yyres, **yyrow_num, **yyfield_name;
378 + switch(ZEND_NUM_ARGS()){
380 + if (zend_get_parameters_ex(3, &yyres,&yyrow_num,&yyfield_name)==FAILURE){
383 + convert_to_string_ex(yyrow_num);
384 + convert_to_string_ex(yyfield_name);
385 + field = Z_STRVAL_PP(yyfield_name);
386 + row = atoi(Z_STRVAL_PP(yyrow_num));
394 + ZEND_FETCH_RESOURCE(Res, UDM_RESULT *, yyres, -1, "mnoGoSearch-Result", le_res);
395 + if(row<Res->num_rows){
396 + if (!strcasecmp(field,"URL")) {
398 + al = (char *)MyRemoveHiLightDup((const char *)(UdmVarListFindStr(&(Res->Doc[row].Sections), field, "")));
399 + UdmVarListReplaceStr(&Res->Doc[row].Sections,field,al);
402 + RETURN_STRING((char *)UdmVarListFindStr(&Res->Doc[row].Sections,field,""),1);
404 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"row number too large");
411 +#if UDM_VERSION_ID >= 30211
412 +/* {{{ proto int udm_alloc_agent_array(array dbaddr)
413 + Allocate mnoGoSearch session */
414 +DLEXPORT PHP_FUNCTION(udm_alloc_agent_array)
416 + switch(ZEND_NUM_ARGS()){
426 + if(zend_get_parameters_ex(1,&yydbaddr)==FAILURE){
430 + if (Z_TYPE_PP(yydbaddr) != IS_ARRAY) {
431 + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument DBAddr must be an array.");
434 + convert_to_array_ex(yydbaddr);
436 + Env=UdmEnvInit(NULL);
437 + UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");
438 + UdmSetLogLevel(Env,0);
439 + UdmOpenLog("mnoGoSearch-php",Env,0);
441 + zend_hash_internal_pointer_reset_ex(HASH_OF(*yydbaddr), &pos);
443 + while (zend_hash_get_current_data_ex(HASH_OF(*yydbaddr), (void **)&tmp, &pos) == SUCCESS) {
444 + convert_to_string_ex(tmp);
445 + dbaddr = Z_STRVAL_PP(tmp);
446 + UdmDBListAdd(&Env->dbl,dbaddr, UDM_OPEN_MODE_WRITE);
448 + zend_hash_move_forward_ex(HASH_OF(*yydbaddr), &pos);
451 + Agent=UdmAgentInit(NULL,Env,0);
452 + ZEND_REGISTER_RESOURCE(return_value,Agent,le_link);
463 +/* {{{ proto int udm_hash32(int agent, string str)
464 + Return Hash32 checksum of gived string */
465 +DLEXPORT PHP_FUNCTION(udm_hash32)
467 + pval ** yystr, ** yyagent;
469 + udmhash32_t hash32;
474 + switch(ZEND_NUM_ARGS()){
476 + if (zend_get_parameters_ex(2, &yyagent,&yystr)==FAILURE) {
485 + ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, id, "mnoGoSearch-Agent", le_link);
486 + convert_to_string_ex(yystr);
487 + str = Z_STRVAL_PP(yystr);
489 + hash32=UdmHash32((str),strlen(str));
490 + snprintf(buf,sizeof(buf)-1,"%u",hash32);
492 + RETURN_STRING(buf,1);
497 /* {{{ proto int udm_find(int agent, string query)
498 @@ -1677,6 +1883,14 @@
501 switch(ZEND_NUM_ARGS()){
502 +#if UDM_VERSION_ID >= 30213
504 + if (zend_get_parameters_ex(1, &yyagent)==FAILURE) {
511 if (zend_get_parameters_ex(2, &yyagent,&yyquery)==FAILURE) {
513 @@ -1693,7 +1907,11 @@
514 #if UDM_VERSION_ID < 30200
515 if ((Res=UdmFind(Agent,UdmTolower(Z_STRVAL_PP(yyquery),Agent->charset)))) {
517 +#if UDM_VERSION_ID >= 30213
518 + if ((Res=UdmFind(Agent))) {
520 if ((Res=UdmFind(Agent,Z_STRVAL_PP(yyquery)))) {
523 ZEND_REGISTER_RESOURCE(return_value,Res,le_res);
525 @@ -1876,12 +2094,12 @@
529 - php_error(E_WARNING,"%s(): Unknown mnoGoSearch field name", get_active_function_name(TSRMLS_C));
530 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown mnoGoSearch field name");
535 - php_error(E_WARNING,"%s(): row number too large", get_active_function_name(TSRMLS_C));
536 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"row number too large");
540 @@ -1926,13 +2144,13 @@
542 size_t wsize=(1+len*15)*sizeof(char);
543 char *wordinfo = (char*) malloc(wsize);
544 - int corder = -1, ccount = 0;
548 for(i = 0; i < Res->WWList.nwords; i++){
549 - if ((Res->WWList.Word[i].count > 0) || (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_QUERY)) {
550 - if(wordinfo[0]) strcat(wordinfo,", ");
551 + if ((Res->WWList.Word[i].count > 0) ||
552 + (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_QUERY)) {
553 + if(wordinfo[0]) strcat(wordinfo,", ");
554 sprintf(UDM_STREND(wordinfo)," %s : %d", Res->WWList.Word[i].word, Res->WWList.Word[i].count);
555 } else if (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_STOP) {
556 if(wordinfo[0]) strcat(wordinfo,", ");
557 @@ -1950,33 +2168,29 @@
558 #if UDM_VERSION_ID >= 30204
559 case UDM_PARAM_WORDINFO_ALL:
563 for(len = i = 0; i < Res->WWList.nwords; i++)
564 len += Res->WWList.Word[i].len;
566 size_t wsize=(1+len*15)*sizeof(char);
567 char *wordinfo = (char*) malloc(wsize);
568 - int corder = -1, ccount = 0;
569 + int corder = (size_t)-1, ccount = 0;
573 - for(i = 0; i < Res->WWList.nwords; i++){
574 - if (Res->WWList.Word[i].order != corder) {
576 - sprintf(UDM_STREND(wordinfo)," / %d, ", ccount);
578 - ccount = Res->WWList.Word[i].count;
579 - if (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_STOP) {
580 - sprintf(UDM_STREND(wordinfo)," %s : stopword", Res->WWList.Word[i].word);
582 - sprintf(UDM_STREND(wordinfo)," %s : %d", Res->WWList.Word[i].word, Res->WWList.Word[i].count);
583 - corder = Res->WWList.Word[i].order;
586 - ccount += Res->WWList.Word[i].count;
587 + for(i = 0; i < Res->WWList.nwords; i++) {
588 + corder = Res->WWList.Word[i].order;
590 + for(j = 0; j < Res->WWList.nwords; j++) {
591 + if (Res->WWList.Word[j].order == corder) {
592 + ccount += Res->WWList.Word[j].count;
596 - if (Res->WWList.nwords) {
597 + if (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_STOP) {
598 + sprintf(UDM_STREND(wordinfo),"%s%s : stopword", (*wordinfo) ? ", " : "", Res->WWList.Word[i].word);
599 + } else if (Res->WWList.Word[i].origin == UDM_WORD_ORIGIN_QUERY) {
600 + sprintf(UDM_STREND(wordinfo),"%s%s : %d", (*wordinfo) ? ", " : "", Res->WWList.Word[i].word, Res->WWList.Word[i].count);
602 sprintf(UDM_STREND(wordinfo)," / %d", ccount);
604 RETURN_STRING(wordinfo,1);
605 @@ -1998,7 +2212,7 @@
609 - php_error(E_WARNING,"%s(): Unknown mnoGoSearch param name", get_active_function_name(TSRMLS_C));
610 + php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown mnoGoSearch param name");
614 @@ -2071,7 +2285,13 @@
617 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-Agent", le_link);
618 -#if UDM_VERSION_ID >= 30204
619 +#if UDM_VERSION_ID >= 30208
620 + if (UdmEnvErrMsg(Agent->Conf) && strlen(UdmEnvErrMsg(Agent->Conf))) {
625 +#elif UDM_VERSION_ID >= 30204
626 RETURN_LONG(UdmEnvErrCode(Agent->Conf));
628 RETURN_LONG(UdmDBErrorCode(Agent->db));
629 @@ -2147,13 +2367,15 @@
630 #if UDM_VERSION_ID >= 30204
632 strncpy(C.addr,cat,sizeof(C.addr)-1);
633 +#if UDM_VERSION_ID <= 30210
634 if(!UdmCatAction(Agent,&C,UDM_CAT_ACTION_LIST,Agent->Conf->db)){
636 + if(UDM_OK == UdmCatAction(Agent,&C,UDM_CAT_ACTION_LIST)){
639 if((c=UdmCatList(Agent,cat))){
641 - if (array_init(return_value)==FAILURE) {
644 + array_init(return_value);
646 if (!(buf=calloc(1,UDMSTRSIZ+1))) {
648 @@ -2164,11 +2386,9 @@
651 for(i=0;i<C.ncategories;i++){
652 - snprintf(buf, UDMSTRSIZ, "%s%s",C.Category[i].link[0]?"@ ":"", C.Category[i].name);
653 - add_next_index_string(return_value, C.Category[i].link[0]?C.Category[i].link:C.Category[i].path, 1);
654 - add_next_index_string(return_value, buf, 1);
655 + add_next_index_stringl(return_value, C.Category[i].path,strlen(C.Category[i].path),1);
656 + add_next_index_stringl(return_value, C.Category[i].name,strlen(C.Category[i].name),1);
662 @@ -2221,13 +2441,15 @@
663 #if UDM_VERSION_ID >= 30204
665 strncpy(C.addr,cat,sizeof(C.addr)-1);
666 +#if UDM_VERSION_ID <= 30210
667 if(!UdmCatAction(Agent,&C,UDM_CAT_ACTION_PATH,Agent->Conf->db)){
669 + if(UDM_OK == UdmCatAction(Agent,&C,UDM_CAT_ACTION_PATH)){
672 if((c=UdmCatPath(Agent,cat))){
674 - if (array_init(return_value)==FAILURE) {
677 + array_init(return_value);
679 if (!(buf=calloc(1,UDMSTRSIZ+1))) {
681 @@ -2238,11 +2460,9 @@
684 for(i=0;i<C.ncategories;i++){
685 - snprintf(buf, UDMSTRSIZ, "%s%s",C.Category[i].link[0]?"@ ":"", C.Category[i].name);
686 - add_next_index_string(return_value, C.Category[i].link[0]?C.Category[i].link:C.Category[i].path, 1);
687 - add_next_index_string(return_value, buf, 1);
688 + add_next_index_stringl(return_value, C.Category[i].path,strlen(C.Category[i].path),1);
689 + add_next_index_stringl(return_value, C.Category[i].name,strlen(C.Category[i].name),1);
695 @@ -2284,7 +2504,11 @@
697 ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, id, "mnoGoSearch-Agent", le_link);
698 #if UDM_VERSION_ID >= 30204
699 +#if UDM_VERSION_ID <= 30210
700 if (!Agent->doccount) UdmURLAction(Agent,NULL,UDM_URL_ACTION_DOCCOUNT,Agent->Conf->db);
702 + if (!Agent->doccount) UdmURLAction(Agent,NULL,UDM_URL_ACTION_DOCCOUNT);
704 RETURN_LONG(Agent->doccount);
706 RETURN_LONG(UdmGetDocCount(Agent));
707 Index: php-src/ext/mnogosearch/php_mnogo.h
708 ===================================================================
709 RCS file: /repository/php-src/ext/mnogosearch/php_mnogo.h,v
710 retrieving revision 1.19.4.2
711 retrieving revision 1.19.4.3
712 diff -u -r1.19.4.2 -r1.19.4.3
713 --- php-src/ext/mnogosearch/php_mnogo.h 19 Apr 2003 05:10:27 -0000 1.19.4.2
714 +++ php-src/ext/mnogosearch/php_mnogo.h 14 Jun 2003 18:45:23 -0000 1.19.4.3
721 +----------------------------------------------------------------------+
728 #include <udm_config.h>
729 #include <udmsearch.h>
732 #if UDM_VERSION_ID >= 30204
733 DLEXPORT PHP_FUNCTION(udm_parse_query_string);
734 DLEXPORT PHP_FUNCTION(udm_make_excerpt);
735 +DLEXPORT PHP_FUNCTION(udm_set_agent_param_ex);
736 +DLEXPORT PHP_FUNCTION(udm_get_res_field_ex);
738 +#if UDM_VERSION_ID >= 30211
739 +DLEXPORT PHP_FUNCTION(udm_hash32);
740 +DLEXPORT PHP_FUNCTION(udm_alloc_agent_array);