Index: trunk/thirds/saga2zcfg/saga2zcfg.c
===================================================================
--- trunk/thirds/saga2zcfg/saga2zcfg.c	(revision 637)
+++ trunk/thirds/saga2zcfg/saga2zcfg.c	(revision 638)
@@ -15,16 +15,13 @@
 }
 
-const char* cleanAbstract(CSG_String abstract){
+void cleanAbstract(CSG_String abstract,char**res){
   char* tmp=strdup(abstract.b_str());
-  CSG_String val=CSG_String(" ")+tmp;
-  if(val.Contains("¸")){
-    val.Replace("¸"," ");
+  CSG_String val=CSG_String("")+tmp;
+  if(val.Contains("\r")){
+    val.Replace("\r","<br/>");
   }
   if(val.Contains("\n")){
     val.Replace("\n","<br/>");
   }
-  if(val.Contains("\r")){
-    val.Replace("\r","");
-  }
   if(val.Contains("<")){
     val.Replace("<","&lt;");
@@ -32,9 +29,10 @@
   if(val.Contains(">")){
     val.Replace(">","&gt;");
-    fprintf(stderr,"%s\n",val.b_str());
   }
   free(tmp);
-  fprintf(stderr,"%s\n",val.b_str());
-  return val.b_str();
+  if(val.is_Empty())
+    *res=NULL;
+  else
+    *res=strdup(val.b_str());
 }
 
@@ -45,5 +43,20 @@
     fprintf(stdout,"  Abstract = %s\n",CSG_String(param->Get_Name()).b_str());
   else{
-    fprintf(stdout,"  Abstract = %s\n",cleanAbstract(CSG_String(param->Get_Description())));
+    char* tmp=strdup(CSG_String(param->Get_Description()).b_str());
+    CSG_String val=CSG_String("")+tmp;
+    if(val.Contains("\r")){
+      val.Replace("\r","<br/>");
+    }
+    if(val.Contains("\n")){
+      val.Replace("\n","<br/>");
+    }
+    if(val.Contains("<")){
+      val.Replace("<","&lt;");
+    }
+    if(val.Contains(">")){
+      val.Replace(">","&gt;");
+    }
+    free(tmp);
+    fprintf(stdout,"  Abstract = %s\n",val.b_str());
   }
   if(!out){
@@ -148,5 +161,5 @@
 
 	  mkdir(library->Get_Library_Name().b_str(),0755);
-	  fprintf(stderr,"%s %s \n",library->Get_Library_Name().b_str(),CSG_String(module->Get_ID()).b_str());
+
 	  FILE *stdout1=fopen((library->Get_Library_Name()+"/"+module->Get_ID()+".zcfg").b_str(),"w+");
 	  fprintf(stdout1,"[%d]\n",j);
@@ -156,10 +169,11 @@
 	    fprintf(stdout1," Abstract = %s\n",module->Get_Name().b_str());
 	  else{
-	    const char *tmp=cleanAbstract(module->Get_Description());
-	    if(tmp==NULL || strlen(tmp)<7 ){
+	    char *val0;
+	    cleanAbstract(module->Get_Description(),&val0);
+	    if(val0==NULL)
 	      fprintf(stdout1," Abstract = %s\n",module->Get_Name().b_str());
-	    }
 	    else{
-	      fprintf(stdout1," Abstract = %s\n",tmp);
+	      fprintf(stdout1," Abstract = %s\n",val0);
+	      free(val0);
 	    }
 	  }
Index: trunk/zoo-project/zoo-kernel/service_conf.l
===================================================================
--- trunk/zoo-project/zoo-kernel/service_conf.l	(revision 637)
+++ trunk/zoo-project/zoo-kernel/service_conf.l	(revision 638)
@@ -46,5 +46,5 @@
 
 attname	[a-zA-Z0-9._\-]+
-attvalue1	[\x80-\xbf\xc2-\xdf\xe0-\xef\xf0-\xf4#°²θé\^\*\+\,\;?!~`Ãº@a-zA-Z0-9%_\-:\:.:" "\"\'/\\\(\)\t\|\$\&>\[\]]+
+attvalue1      [\x80-\xbf\xc2-\xdf\xe0-\xef\xf0-\xf4="#°²θé\^\*\+\,\;;?!~`Ãº@a-zA-Z0-9%_\-:\:.:" "\"\'/\\\(\)\t\|\$\&>\[\]]+
 
 attvalue		\"[^"]*\"|\'[^']*\'\(\)
