Index: /trunk/zoo-project/zoo-kernel/service_internal_js.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/service_internal_js.c	(revision 328)
+++ /trunk/zoo-project/zoo-kernel/service_internal_js.c	(revision 329)
@@ -103,6 +103,6 @@
    * Load the first part of the ZOO-API
    */
-  char api0[strlen(tmpm1->value)+strlen(ntmp)+15];
-  sprintf(api0,"%s/%sZOO-proj4js.js",ntmp,tmpm1->value);
+  char api0[strlen(tmpm1->value)+strlen(ntmp)+16];
+  sprintf(api0,"%s/%s/ZOO-proj4js.js",ntmp,tmpm1->value);
 #ifdef JS_DEBUG
   fprintf(stderr,"Trying to load %s\n",api0);
@@ -112,5 +112,5 @@
 
   char api1[strlen(tmpm1->value)+strlen(ntmp)+11];
-  sprintf(api1,"%s/%sZOO-api.js",ntmp,tmpm1->value);
+  sprintf(api1,"%s/%s/ZOO-api.js",ntmp,tmpm1->value);
 #ifdef JS_DEBUG
   fprintf(stderr,"Trying to load %s\n",api1);
@@ -126,7 +126,7 @@
   map* tmpm2=getMap(s->content,"serviceProvider");
 
-  char filename[strlen(tmpm1->value)+strlen(tmpm2->value)+strlen(ntmp)+2];
-  sprintf(filename,"%s/%s%s",ntmp,tmpm1->value,tmpm2->value);
-  filename[strlen(tmpm1->value)+strlen(tmpm2->value)+strlen(ntmp)+1]=0;
+  char filename[strlen(tmpm1->value)+strlen(tmpm2->value)+strlen(ntmp)+3];
+  sprintf(filename,"%s/%s/%s",ntmp,tmpm1->value,tmpm2->value);
+  filename[strlen(tmpm1->value)+strlen(tmpm2->value)+strlen(ntmp)+2]=0;
 #ifdef JS_DEBUG
   fprintf(stderr,"FILENAME %s\n",filename);
Index: /trunk/zoo-project/zoo-kernel/zoo_loader.c
===================================================================
--- /trunk/zoo-project/zoo-kernel/zoo_loader.c	(revision 328)
+++ /trunk/zoo-project/zoo-kernel/zoo_loader.c	(revision 329)
@@ -282,4 +282,26 @@
       xmlCleanupParser();
     }
+
+    char *token,*saveptr;
+    token=strtok_r(cgiQueryString,"&",&saveptr);
+    while(token!=NULL){
+      char *token1,*saveptr1;
+      char *name=NULL;
+      char *value=NULL;
+      token1=strtok_r(token,"=",&saveptr1);
+      while(token1!=NULL){
+	if(name==NULL)
+	  name=strdup(token1);
+	else
+	  value=strdup(token1);
+	token1=strtok_r(NULL,"=",&saveptr1);
+      }
+      if(strcasecmp(name,"metapath")==0)
+	addToMap(tmpMap,name,value);
+      free(name);
+      free(value);
+      token=strtok_r(NULL,"&",&saveptr);
+    }
+    
   }
 
