Index: branches/branch-1.2/zoo-services/ogr/base-vect-ops-py/cgi-env/SymDifferencePy.zcfg
===================================================================
--- branches/branch-1.2/zoo-services/ogr/base-vect-ops-py/cgi-env/SymDifferencePy.zcfg	(revision 217)
+++ branches/branch-1.2/zoo-services/ogr/base-vect-ops-py/cgi-env/SymDifferencePy.zcfg	(revision 268)
@@ -66,5 +66,5 @@
    Abstract = The symmetric difference between the two geometries.
    <MetaData>
-    Title = Symmetric Difference  
+    title = Symmetric Difference  
    </MetaData>   
     <ComplexData>
Index: branches/branch-1.2/zoo-services/ogr/base-vect-ops-py/cgi-env/ogr_sp.py
===================================================================
--- branches/branch-1.2/zoo-services/ogr/base-vect-ops-py/cgi-env/ogr_sp.py	(revision 217)
+++ branches/branch-1.2/zoo-services/ogr/base-vect-ops-py/cgi-env/ogr_sp.py	(revision 268)
@@ -1,26 +1,42 @@
+from osgeo import *
 import osgeo.ogr
+import osgeo.gdal
 import libxml2
 import os
 import sys
 
-def createGeometryFromWFS(my_wfs_response):
-    doc=libxml2.parseMemory(my_wfs_response,len(my_wfs_response))
-    ctxt = doc.xpathNewContext()
-    res=ctxt.xpathEval("/*/*/*/*/*[local-name()='Polygon' or local-name()='MultiPolygon' or local-name()='Point' or local-name()='MultiPoint' or local-name()='MultiLineString' or local-name()='LineString' ]")
+def createGeometryFromWFS(conf,my_wfs_response):
     geometry=[]
     try:
-        for node in res:
-            geometry_as_string=node.serialize()
-            geometry+=[osgeo.ogr.CreateGeometryFromGML(geometry_as_string)]
+        # Create virtual file or parse XML file depending on the GDAL Version
+        gV=int(osgeo.gdal.VersionInfo())
+        if gV >= 1800:
+            osgeo.gdal.FileFromMemBuffer('/vsimem//temp', my_wfs_response)
+            ds = osgeo.ogr.Open('/vsimem//temp')
+            lyr = ds.GetLayer(0)
+            feat = lyr.GetNextFeature()
+            while feat is not None:
+                geometry+=[feat.GetGeometryRef().Clone()]
+                feat.Destroy()
+                feat = lyr.GetNextFeature()
+            ds.Destroy()
+            osgeo.gdal.Unlink('/vsimem//temp')
+        else:
+            doc=libxml2.parseMemory(my_wfs_response,len(my_wfs_response))
+            ctxt = doc.xpathNewContext()
+            res=ctxt.xpathEval("/*/*/*/*/*[local-name()='Polygon' or local-name()='MultiPolygon' or local-name()='Point' or local-name()='MultiPoint' or local-name()='MultiLineString' or local-name()='LineString' ]")
+            for node in res:
+                geometry_as_string=node.serialize()
+                geometry+=[osgeo.ogr.CreateGeometryFromGML(geometry_as_string)]
     except:
-        print >> sys.stderr,"Error"
+        print >> sys.stderr,"Unable to load file from mem buffer\n\n\n"
     return geometry
 
-def extractInputs(obj):
+def extractInputs(conf,obj):
     if obj["mimeType"]=="application/json":
 	return [osgeo.ogr.CreateGeometryFromJson(obj["value"])]
     else:
 	try:
-        	return createGeometryFromWFS(obj["value"])
+        	return createGeometryFromWFS(conf,obj["value"])
 	except:
 		return [osgeo.ogr.CreateGeometryFromJson(obj["value"])]
@@ -34,5 +50,10 @@
         extension = [ ".js" ]
     drv = osgeo.ogr.GetDriverByName( driverName )
-    ds = drv.CreateDataSource( conf["main"]["tmpPath"]+"/store"+conf["lenv"]["sid"]+extension[0] )
+    # Create virtual file or real one depending on the GDAL Version
+    gV=int(osgeo.gdal.VersionInfo())
+    if gV >= 1800:
+        ds = drv.CreateDataSource( "/vsimem/store"+conf["lenv"]["sid"]+extension[0] )
+    else:
+        ds = drv.CreateDataSource( conf["main"]["tmpPath"]+"/store"+conf["lenv"]["sid"]+extension[0] )
     lyr = ds.CreateLayer( "Result", None, osgeo.ogr.wkbUnknown )
     field_defn = osgeo.ogr.FieldDefn( "Name", osgeo.ogr.OFTString )
@@ -49,11 +70,22 @@
         i+=1
     ds.Destroy()
-    obj["value"]=open(conf["main"]["tmpPath"]+"/store"+conf["lenv"]["sid"]+extension[0],"r").read()
-    os.unlink(conf["main"]["tmpPath"]+"/store"+conf["lenv"]["sid"]+extension[0])
-    if len(extension)>1:
-        os.unlink(conf["main"]["tmpPath"]+"/store"+conf["lenv"]["sid"]+extension[1])
+    if gV >= 1800:
+        vsiFile=osgeo.gdal.VSIFOpenL("/vsimem/store"+conf["lenv"]["sid"]+extension[0],"r")
+        i=0
+        while osgeo.gdal.VSIFSeekL(vsiFile,0,os.SEEK_END)>0:
+            i+=1
+        fileSize=osgeo.gdal.VSIFTellL(vsiFile)
+        osgeo.gdal.VSIFSeekL(vsiFile,0,os.SEEK_SET)
+        obj["value"]=osgeo.gdal.VSIFReadL(fileSize,1,vsiFile)
+        osgeo.gdal.Unlink("/vsimem/store"+conf["lenv"]["sid"]+extension[0])
+    else:
+        obj["value"]=open(conf["main"]["tmpPath"]+"/store"+conf["lenv"]["sid"]+extension[0],"r").read()
+        os.unlink(conf["main"]["tmpPath"]+"/store"+conf["lenv"]["sid"]+extension[0])
+        if len(extension)>1:
+            os.unlink(conf["main"]["tmpPath"]+"/store"+conf["lenv"]["sid"]+extension[1])
+    
 
 def BoundaryPy(conf,inputs,outputs):
-    geometry=extractInputs(inputs["InputPolygon"])
+    geometry=extractInputs(conf,inputs["InputPolygon"])
     i=0
     rgeometries=[]
@@ -66,5 +98,5 @@
 
 def CentroidPy(conf,inputs,outputs):
-    geometry=extractInputs(inputs["InputPolygon"])
+    geometry=extractInputs(conf,inputs["InputPolygon"])
     i=0
     rgeometries=[]
@@ -79,5 +111,5 @@
 
 def ConvexHullPy(conf,inputs,outputs):
-    geometry=extractInputs(inputs["InputPolygon"])
+    geometry=extractInputs(conf,inputs["InputPolygon"])
     i=0
     rgeometries=[]
@@ -94,5 +126,5 @@
     except:
         bdist=10
-    geometry=extractInputs(inputs["InputPolygon"])
+    geometry=extractInputs(conf,inputs["InputPolygon"])
     i=0
     rgeometries=[]
@@ -106,6 +138,6 @@
 
 def UnionPy(conf,inputs,outputs):
-    geometry1=extractInputs(inputs["InputEntity1"])
-    geometry2=extractInputs(inputs["InputEntity2"])
+    geometry1=extractInputs(conf,inputs["InputEntity1"])
+    geometry2=extractInputs(conf,inputs["InputEntity2"])
     rgeometries=[]
     i=0
@@ -127,6 +159,6 @@
 
 def IntersectionPy(conf,inputs,outputs):
-    geometry1=extractInputs(inputs["InputEntity1"])
-    geometry2=extractInputs(inputs["InputEntity2"])
+    geometry1=extractInputs(conf,inputs["InputEntity1"])
+    geometry2=extractInputs(conf,inputs["InputEntity2"])
     rgeometries=[]
     i=0
@@ -148,6 +180,6 @@
 
 def DifferencePy(conf,inputs,outputs):
-    geometry1=extractInputs(inputs["InputEntity1"])
-    geometry2=extractInputs(inputs["InputEntity2"])
+    geometry1=extractInputs(conf,inputs["InputEntity1"])
+    geometry2=extractInputs(conf,inputs["InputEntity2"])
     rgeometries=[]
     i=0
@@ -169,6 +201,6 @@
 
 def SymDifferencePy(conf,inputs,outputs):
-    geometry1=extractInputs(inputs["InputEntity1"])
-    geometry2=extractInputs(inputs["InputEntity2"])
+    geometry1=extractInputs(conf,inputs["InputEntity1"])
+    geometry2=extractInputs(conf,inputs["InputEntity2"])
     rgeometries=[]
     i=0
Index: branches/branch-1.2/zoo-services/ogr/ogr2ogr/cgi-env/Ogr2Ogr.zcfg
===================================================================
--- branches/branch-1.2/zoo-services/ogr/ogr2ogr/cgi-env/Ogr2Ogr.zcfg	(revision 217)
+++ branches/branch-1.2/zoo-services/ogr/ogr2ogr/cgi-env/Ogr2Ogr.zcfg	(revision 268)
@@ -8,5 +8,5 @@
  serviceProvider = ogr2ogr_service.zo
  <MetaData>
-   Title = My Demo
+   title = My Demo
  </MetaData>
  <DataInputs>
Index: branches/branch-1.2/zoo-services/ogr/ogr2ogr/service.c
===================================================================
--- branches/branch-1.2/zoo-services/ogr/ogr2ogr/service.c	(revision 217)
+++ branches/branch-1.2/zoo-services/ogr/ogr2ogr/service.c	(revision 268)
@@ -95,5 +95,5 @@
     const char  *pszSQLStatement = NULL;
     int         eGType = -2;
-    double       dfMaxSegmentLength = 0;
+    double      dfMaxSegmentLength = 0;
 
     /* Check strict compilation and runtime library version as we use C++ API */
@@ -178,10 +178,7 @@
     }
 
-    tmpMap=NULL;
-    tmpMap=getMapFromMaps(inputs,"overwrite","value");
-    if(tmpMap!=NULL){
-	  bOverwrite = TRUE;
-    }
-
+    /* if exist, overwrite the data with the same name */
+    bOverwrite = TRUE;
+    
     tmpMap=NULL;
     tmpMap=getMapFromMaps(inputs,"update","value");
@@ -826,9 +823,5 @@
     
 #ifdef ZOO_SERVICE
-	outputs=(maps*)malloc(sizeof(maps*));
-    outputs->name="GeneratedFile";
     outputs->content=createMap("value",(char*)pszwebDestData);
-    addMapToMap(&outputs->content,createMap("dataType","string"));
-    outputs->next=NULL;
     return SERVICE_SUCCEEDED;
 #else
Index: branches/branch-1.2/zoo-services/openoffice/cgi-env/Xml2Pdf.zcfg
===================================================================
--- branches/branch-1.2/zoo-services/openoffice/cgi-env/Xml2Pdf.zcfg	(revision 268)
+++ branches/branch-1.2/zoo-services/openoffice/cgi-env/Xml2Pdf.zcfg	(revision 268)
@@ -0,0 +1,39 @@
+[Xml2Pdf]
+ Title = Convert raster data from one format to another. 
+ Abstract = Converts raster data between different formats.
+ processVersion = 1
+ storeSupported = true
+ statusSupported = true
+ serviceType = Python
+ serviceProvider = oo_service
+ <DataInputs>
+  [doc]
+   Title = The input Open Document Text
+   Abstract = The input Open Document Text including all required Styles
+   minOccurs = 1
+   maxOccurs = 1
+   <LiteralData>
+    dataType = string
+    <Default/>
+   </LiteralData>
+  [xml]
+   Title = The input XML file
+   Abstract = The input XML file to convert.
+   minOccurs = 1
+   maxOccurs = 1
+   <LiteralData>
+    dataType = string
+    <Default/>
+   </LiteralData>
+ </DataInputs>
+ <DataOutputs>
+  [Document]
+   Title = The resulting file
+   Abstract = The file content resulting of the convertion from XML to PDF
+   <ComplexData>
+    <Default>
+     mimeType=application/pdf
+     extension=pdf
+    </Default>	
+   </ComplexData>
+ </DataOutputs>  
Index: branches/branch-1.2/zoo-services/openoffice/cgi-env/oo_service.py
===================================================================
--- branches/branch-1.2/zoo-services/openoffice/cgi-env/oo_service.py	(revision 268)
+++ branches/branch-1.2/zoo-services/openoffice/cgi-env/oo_service.py	(revision 268)
@@ -0,0 +1,120 @@
+import uno
+import getopt, sys, os
+
+from unohelper import Base, systemPathToFileUrl, absolutize
+
+from com.sun.star.beans import PropertyValue
+from com.sun.star.script import CannotConvertException
+from com.sun.star.lang import IllegalArgumentException
+from com.sun.star.task import ErrorCodeIOException
+from com.sun.star.io import IOException, XOutputStream
+from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER
+from com.sun.star.text.ControlCharacter import PARAGRAPH_BREAK
+
+from xml.dom import minidom 
+import sys 
+
+keep_trace=''
+
+def addToText(cursor,text,level,value):
+    if level==1:
+        cursor.NumberingStyleName = "NONE"
+        cursor.ParaStyleName="Heading 1"
+        text.insertString( cursor, value , 0 )
+        text.insertControlCharacter( cursor, PARAGRAPH_BREAK , 0 )
+        #print  >> sys.stderr,' * Main Title : ' + value
+    else:
+        i=0
+        prefix=''
+        while i < level-1:
+            prefix+=' '
+            i+=1
+        cursor.NumberingStyleName="List "+str(level-1)
+        text.insertString( cursor, prefix+value , 0 )
+        text.insertControlCharacter( cursor, PARAGRAPH_BREAK , 0 )
+        cursor.NumberingStyleName = "NONE"
+	#print  >> sys.stderr,dir(sys.stderr)
+        #print >> sys.stderr,prefix+' * NumberingStyleName '+str(level-1)+' '+value.encode('iso-8859-15')
+
+def printChildren(cursor,text,node,level,keep_trace):
+    if node.nodeType==3:
+        level-=1
+
+    if not(node.nodeValue!=None and len(node.nodeValue.replace(' ',''))!=1 and keep_trace!='' and keep_trace!=None):
+        if keep_trace!='':
+            addToText(cursor,text,level-1,keep_trace)
+        keep_trace=node.nodeName
+
+    if node.hasChildNodes():
+        for i in node.childNodes:
+            printChildren(cursor,text,i,level+1,keep_trace)
+            keep_trace=''
+    else:
+        if node.nodeValue != None and len(node.nodeValue.replace(' ',''))>1:
+            addToText(cursor,text,level-1,keep_trace+' : '+node.nodeValue)
+            keep_trace=''
+        else:
+            if node.nodeValue != None and len(node.nodeValue.replace(' ',''))>1:
+                addToText(cursor,text,level-1,keep_trace+' : '+node.nodeValue)
+                keep_trace=''
+            else:
+                if keep_trace!='#text':
+                    addToText(cursor,text,level-1,keep_trace)
+                    keep_trace=''
+
+    if node.nodeType==1 and node.hasAttributes():
+        i=0
+        while i<node.attributes.length:
+            addToText(cursor,text,level,'(attr) '+node.attributes.keys()[i] + ' : ' + node.attributes[node.attributes.keys()[i]].value)
+            i+=1
+
+        
+
+def Xml2Pdf(conf,input,output):
+    localContext = uno.getComponentContext()
+    resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext )
+    ctx = resolver.resolve( "uno:socket,host=127.0.0.1,port=3662;urp;StarOffice.ComponentContext" )
+    smgr = ctx.ServiceManager
+    desktop = smgr.createInstanceWithContext( "com.sun.star.frame.Desktop",ctx)
+    adressDoc=systemPathToFileUrl(input["doc"]["value"])
+    propFich=PropertyValue("Hidden", 0, True, 0),
+    try:
+        myDocument = desktop.loadComponentFromURL(adressDoc,"_blank",0,propFich)
+	#Prefer to create a new document without any style ?
+        #myDocument = desktop.loadComponentFromURL("private:factory/writer","_blank",0,propFich)
+    except:
+        conf["lenv"]["message"]='Unable to load input document'
+	return 4
+    text = myDocument.Text
+    cursor = text.createTextCursor()
+    cursor.gotoStart(0)
+    cursor.gotoEnd(1)
+    xmldoc = minidom.parseString(input['xml']['value'])
+
+    if xmldoc.hasChildNodes():
+        for i in xmldoc.childNodes:
+            if i.nodeType==1:
+                cursor.ParaStyleName="Title"
+                text.insertString( cursor, i.nodeName , 0 )
+                text.insertControlCharacter( cursor, PARAGRAPH_BREAK , 0 )
+                #print >> sys.stderr,' * 1st level' + i.nodeName
+                if i.hasChildNodes():
+                    for j in i.childNodes:
+                        printChildren(cursor,text,j,2,'')
+
+    tmp=myDocument.StyleFamilies.getByName("NumberingStyles")
+
+    tmp1=tmp.getByName("Puce 1")
+
+    prop1Fich = ( PropertyValue( "FilterName" , 0, "writer_pdf_Export", 0 ),PropertyValue( "Overwrite" , 0, True , 0 ) )
+    outputDoc=systemPathToFileUrl("/tmp/output.pdf")
+    myDocument.storeToURL(outputDoc,prop1Fich)
+
+    myDocument.close(True)
+    ctx.ServiceManager
+    output["Document"]["value"]= open('/tmp/output.pdf', 'r').read()
+    print >> sys.stderr,len(output["Document"]["value"])
+    return 3
+
+#To run test from command line uncomment the following line:
+#xml2pdf({},{"file":{"value":"/tmp/demo.xml"},"doc":{"value":"/tmp/demo.odt"}},{})
Index: branches/branch-1.2/zoo-services/utils/status/Makefile
===================================================================
--- branches/branch-1.2/zoo-services/utils/status/Makefile	(revision 217)
+++ branches/branch-1.2/zoo-services/utils/status/Makefile	(revision 268)
@@ -1,3 +1,3 @@
-CFLAGS=-I../../../zoo-kernel/ -I./ `xslt-config --cflags` `xml2-config --cflags` -DLINUX_FREE_ISSUE #-DDEBUG
+CFLAGS=-I../../../thirds/cgic206/ -I../../../zoo-kernel/ -I./ `xslt-config --cflags` `xml2-config --cflags` -lintl -lfcgi -lcrypto -DLINUX_FREE_ISSUE #-DDEBUG
 # if JS_ENABLED flag is set to true in your ZOO-Kernel Makefile then you'll have
 # uncomment the following line
Index: branches/branch-1.2/zoo-services/utils/status/service.c
===================================================================
--- branches/branch-1.2/zoo-services/utils/status/service.c	(revision 217)
+++ branches/branch-1.2/zoo-services/utils/status/service.c	(revision 268)
@@ -72,9 +72,13 @@
       char tmp[128];
       sprintf(tmp,"_%s.xml",tmpMap->value);
-      while ((dp = readdir(dirp)) != NULL)
+      while ((dp = readdir(dirp)) != NULL){
+#ifdef DEBUG
+	fprintf(stderr,"File : %s searched : %s\n",dp->d_name,tmp);
+#endif
 	if(strstr(dp->d_name,tmp)!=0){
 	  sprintf(fileName,"%s/%s",tmpTmap->value,dp->d_name);
 	  hasFile=1;
 	}
+      }
     }else{
       char tmp[1024];
Index: branches/branch-1.2/zoo-services/utils/status/test.sh
===================================================================
--- branches/branch-1.2/zoo-services/utils/status/test.sh	(revision 268)
+++ branches/branch-1.2/zoo-services/utils/status/test.sh	(revision 268)
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+rm -f log log1
+
+./zoo_loader.cgi "request=Execute&service=WPS&version=1.0.0&Identifier=longProcess&DataInputs=&storeExecuteResponse=true&status=true" > log
+
+if [ -z "$(grep "ows:ExceptionReport" log)" ]; then
+    while [ -z "$(grep "wps:ProcessSucceeded" log1)" ]; 
+    do 
+	./zoo_loader.cgi $(grep statusLocation= ./log | cut -d'?' -f2 | cut -d'"' -f1 | sed "s:amp;::g") > log1 ;
+	cat log1 ; 
+    done
+    cat log1
+else
+    echo "Service failed, please make sure that your main.cfg file contains"
+    echo "in the [main] section valid values for both tmpPath and dataPath."
+    echo 
+    cat log
+fi
