gluke           Tue Jul  6 15:08:44 2004 EDT

  Modified files:              
    /php-src/ext/mnogosearch    php_mnogo.c 
  Log:
  - Some fixes in mnogosearch extension
  
  
http://cvs.php.net/diff.php/php-src/ext/mnogosearch/php_mnogo.c?r1=1.88&r2=1.89&ty=u
Index: php-src/ext/mnogosearch/php_mnogo.c
diff -u php-src/ext/mnogosearch/php_mnogo.c:1.88 
php-src/ext/mnogosearch/php_mnogo.c:1.89
--- php-src/ext/mnogosearch/php_mnogo.c:1.88    Sat May  8 07:50:36 2004
+++ php-src/ext/mnogosearch/php_mnogo.c Tue Jul  6 15:08:44 2004
@@ -1,5 +1,5 @@
 /* $Source: /usr/repository/php-src/ext/mnogosearch/php_mnogo.c,v $ */
-/* $Id: php_mnogo.c,v 1.88 2004/05/08 11:50:36 gluke Exp $ */
+/* $Id: php_mnogo.c,v 1.89 2004/07/06 19:08:44 gluke Exp $ */
 
 /*
    +----------------------------------------------------------------------+
@@ -429,21 +429,38 @@
 }
 
 static char* MyRemoveHiLightDup(const char *s){
-       size_t  len=strlen(s)+1;
-       char    *res=malloc(len);
-       char    *d;
-       
-       for(d=res;s[0];s++){
-               switch(s[0]){
-                       case '\2':
-                       case '\3':
-                               break;
-                       default:
-                               *d++=*s;
-               }
-       }
-       *d='\0';
-       return res;
+  size_t len=strlen(s)+1;
+  char  *d, *res = (char*)UdmMalloc(len);
+  
+  for(d=res; s[0]; s++)
+  {
+    switch(s[0])
+    {
+      case '\2':
+      case '\3':
+        break;
+      case '&':
+        if (s[1] == '#')
+        {
+          char *e;
+          int code= 0;
+          
+          for (e= (char *)s+2; (*e >= '0') && (*e <= '9'); code= code*10 + e[0]-'0', 
e++);
+          if (*e == ';')
+          {
+            *d++= (code < 128) ? code : '?';
+            s= e;
+            break;
+          }
+        }
+        /* pass through */
+        
+      default:
+        *d++=*s;
+    }
+  }
+  *d='\0';
+  return res;
 }
 
 /* {{{ proto int udm_alloc_agent(string dbaddr [, string dbmode])
@@ -1612,15 +1629,18 @@
                
 #if UDM_VERSION_ID >= 30216
                Excerpt = UdmExcerptDoc(Agent, Res, &(Res->Doc[row]), ExcerptSize, 
ExcerptPadding);
+               if (Excerpt) {
+                       UdmVarListReplaceStr(&(Res->Doc[row].Sections),"Body",Excerpt);
+                       UDM_FREE(Excerpt);
+               }
 #else
                Excerpt = UdmExcerptDoc(Agent, Res, &(Res->Doc[row]), 256);
-#endif
-               
                if ((Excerpt != NULL) && (strlen(Excerpt) > 6)) {
                        char *HlExcerpt = UdmHlConvert(&Res->WWList, Excerpt, 
Agent->Conf->lcs, Agent->Conf->bcs);
                        
UdmVarListReplaceStr(&(Res->Doc[row].Sections),"Body",HlExcerpt);
                        UDM_FREE(HlExcerpt);
                }
+#endif
                if (Excerpt != NULL && (UdmVarListFindStr(&(Res->Doc[row].Sections), 
"Z", NULL) == NULL)) {
                        UdmVarListReplaceInt(&(Res->Doc[row].Sections),"ST",1);
                        UDM_FREE(Excerpt);
@@ -2065,7 +2085,14 @@
                                
                        case UDM_FIELD_TITLE:           
 #if UDM_VERSION_ID >= 30204
-                               RETURN_STRING((char 
*)UdmVarListFindStr(&(Res->Doc[row].Sections),"Title",""),1);
+                           {
+                               char    *al;
+                               al = (char *)MyRemoveHiLightDup((const char 
*)(UdmVarListFindStr(&(Res->Doc[row].Sections), "Title", "")));
+                               
UdmVarListReplaceStr(&Res->Doc[row].Sections,"Title",al);
+                               free(al);
+                               
+                               RETURN_STRING((char 
*)UdmVarListFindStr(&Res->Doc[row].Sections,"Title",""),1);
+                           }
 #else
                                
RETURN_STRING((Res->Doc[row].title)?(Res->Doc[row].title):"",1);
 #endif
@@ -2073,7 +2100,14 @@
                                
                        case UDM_FIELD_KEYWORDS:        
 #if UDM_VERSION_ID >= 30204
-                               RETURN_STRING((char 
*)UdmVarListFindStr(&(Res->Doc[row].Sections),"Meta.Keywords",""),1);
+                           {
+                               char    *al;
+                               al = (char *)MyRemoveHiLightDup((const char 
*)(UdmVarListFindStr(&(Res->Doc[row].Sections), "Meta.Keywords", "")));
+                               
UdmVarListReplaceStr(&Res->Doc[row].Sections,"Meta.Keywords",al);
+                               free(al);
+                               
+                               RETURN_STRING((char 
*)UdmVarListFindStr(&Res->Doc[row].Sections,"Meta.Keywords",""),1);
+                           }
 #else
                                
RETURN_STRING((Res->Doc[row].keywords)?(Res->Doc[row].keywords):"",1);
 #endif
@@ -2081,7 +2115,14 @@
                                
                        case UDM_FIELD_DESC:            
 #if UDM_VERSION_ID >= 30204
-                               RETURN_STRING((char 
*)UdmVarListFindStr(&(Res->Doc[row].Sections),"Meta.Description",""),1);
+                           {
+                               char    *al;
+                               al = (char *)MyRemoveHiLightDup((const char 
*)(UdmVarListFindStr(&(Res->Doc[row].Sections), "Meta.Description", "")));
+                               
UdmVarListReplaceStr(&Res->Doc[row].Sections,"Meta.Description",al);
+                               free(al);
+                               
+                               RETURN_STRING((char 
*)UdmVarListFindStr(&Res->Doc[row].Sections,"Meta.Description",""),1);
+                           }
 #else
                                
RETURN_STRING((Res->Doc[row].description)?(Res->Doc[row].description):"",1);
 #endif
@@ -2089,7 +2130,15 @@
                                
                        case UDM_FIELD_TEXT:            
 #if UDM_VERSION_ID >= 30204
-                               RETURN_STRING((char 
*)UdmVarListFindStr(&(Res->Doc[row].Sections),"Body",""),1);
+/*                         {
+                               char    *al;
+                               al = (char *)MyRemoveHiLightDup((const char 
*)(UdmVarListFindStr(&(Res->Doc[row].Sections), "Body", "")));
+                               
UdmVarListReplaceStr(&Res->Doc[row].Sections,"Body",al);
+                               free(al);
+                               
+                               RETURN_STRING((char 
*)UdmVarListFindStr(&Res->Doc[row].Sections,"Body",""),1);
+                           }*/
+                               RETURN_STRING((char 
*)UdmVarListFindStr(&Res->Doc[row].Sections,"Body",""),1);
 #else
                                
RETURN_STRING((Res->Doc[row].text)?(Res->Doc[row].text):"",1);
 #endif

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to