Changeset 471


Ignore:
Timestamp:
May 10, 2014, 4:23:03 PM (11 years ago)
Author:
djay
Message:

Remove leaks from DescribeProcess? and JavaScript? support. Fix wrong ulinet update on previous commit. Use the new updateStatus/setOutputValue functions as described in #88 from longProcess. Add default value for QREncode service in ZCFG. Fix name of profile service in the ZCFG file.

Location:
trunk/zoo-project
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/zoo-project/zoo-kernel/service.h

    r469 r471  
    423423    if(hasKey(m,n)==false){
    424424      map* _cursor=m;
    425       while(_cursor->next!=NULL)
    426         _cursor=_cursor->next;
    427       _cursor->next=createMap(n,v);
     425      if(_cursor->next!=NULL){
     426        addToMap(_cursor->next,n,v);
     427      }else
     428        _cursor->next=createMap(n,v);
    428429    }
    429430    else{
     
    455456        }
    456457        else{
    457           if(tmp1->value!=NULL)
    458             free(tmp1->value);
    459           tmp1->value=zStrdup(tmp->value);
     458          addToMap(*mo,tmp->name,tmp->value);
    460459        }
    461460      }
     
    480479  }
    481480
    482   static map* getMapOrFill(map* m,const char *key,char* value){
    483     map* tmp=m;
     481  static map* getMapOrFill(map** m,const char *key,char* value){
     482    map* tmp=*m;
    484483    map* tmpMap=getMap(tmp,key);
    485484    if(tmpMap==NULL){
    486485      if(tmp!=NULL)
    487         addToMap(tmp,key,value);
     486        addToMap(*m,key,value);
    488487      else
    489         tmp=createMap(key,value);
    490       tmpMap=getMap(tmp,key);
     488        (*m)=createMap(key,value);
     489      tmpMap=getMap(*m,key);
    491490    }
    492491    return tmpMap;
     
    611610      fprintf(stderr,"%s\n",tmpSize->value);
    612611#endif
    613       map* ptr=getMapOrFill(m,tmp,(char *)"");
     612      map* ptr=getMapOrFill(&m,tmp,(char *)"");
    614613      free(ptr->value);
    615614      ptr->value=(char*)malloc((atoi(tmpSize->value)+1)*sizeof(char));
  • trunk/zoo-project/zoo-kernel/service_internal.c

    r470 r471  
    7777static HANDLE hMapObjectG = NULL;  // handle to file mapping
    7878
    79 void updateStatus(maps *conf){
     79int _updateStatus(maps *conf){
    8080  LPWSTR lpszTmp;
    8181  BOOL fInit;
     
    9494  if (hMapObjectG == NULL){
    9595    fprintf(stderr,"Unable to create share memory segment %s !! \n",tmpMap->value);
    96     return ;
     96    return -2;
    9797  }
    9898  fInit = (GetLastError() != ERROR_ALREADY_EXISTS);
     
    106106  if (lpvMemG == NULL){
    107107    fprintf(stderr,"Unable to create or access the shared memory segment %s !! \n",tmpMap->value);
    108     return ;
     108    return -1;
    109109  }
    110110  memset(lpvMemG, '\0', SHMEMSIZE);
     
    120120  *lpszTmp++ = '\0';
    121121  free(final_string);
     122  return 0;
    122123}
    123124
     
    200201}
    201202
    202 void updateStatus(maps *conf){
     203int _updateStatus(maps *conf){
    203204  int shmid,i;
    204205  key_t key;
     
    212213      fprintf(stderr,"shmget failed to create new Shared memory segment\n");
    213214#endif
     215      return -2;
    214216    }else{
    215217      if ((shm = (char*) shmat(shmid, NULL, 0)) == (char *) -1) {
     
    217219        fprintf(stderr,"shmat failed to update value\n");
    218220#endif
     221        return -1;
    219222      }
    220223      else{
     
    235238    }
    236239  }
     240  return 0;
    237241}
    238242
     
    293297    else
    294298      setMapInMaps(conf,"lenv","status","15");
    295     updateStatus(conf);
     299    _updateStatus(conf);
    296300  }
    297301  freeMaps(&conf);
     
    904908  }
    905909
    906   nc1 = xmlNewNode(NULL, BAD_CAST "DataInputs");
    907   elements* e=serv->inputs;
    908   printFullDescription(e,"Input",ns_ows,nc1);
    909   xmlAddChild(nc,nc1);
     910  if(serv->inputs!=NULL){
     911    nc1 = xmlNewNode(NULL, BAD_CAST "DataInputs");
     912    elements* e=serv->inputs;
     913    printFullDescription(e,"Input",ns_ows,nc1);
     914    xmlAddChild(nc,nc1);
     915  }
    910916
    911917  nc1 = xmlNewNode(NULL, BAD_CAST "ProcessOutputs");
    912   e=serv->outputs;
     918  elements* e=serv->outputs;
    913919  printFullDescription(e,"Output",ns_ows,nc1);
    914920  xmlAddChild(nc,nc1);
     
    934940  orderedFields[12]="rangeSpace";
    935941
    936   xmlNodePtr nc2,nc3,nc4,nc5,nc6,nc7,nc8;
     942  xmlNodePtr nc2,nc3,nc4,nc5,nc6,nc7,nc8,nc9;
    937943  elements* e=elem;
     944
    938945  map* tmp1=NULL;
    939946  while(e!=NULL){
     
    941948    int isAnyValue=1;
    942949    nc2 = xmlNewNode(NULL, BAD_CAST type);
    943     tmp1=getMap(e->content,"minOccurs");
    944     if(tmp1){
    945       xmlNewProp(nc2,BAD_CAST tmp1->name,BAD_CAST tmp1->value);
    946     }
    947     tmp1=getMap(e->content,"maxOccurs");
    948     if(tmp1){
    949       xmlNewProp(nc2,BAD_CAST tmp1->name,BAD_CAST tmp1->value);
     950    if(strncmp(type,"Input",5)==0){
     951      tmp1=getMap(e->content,"minOccurs");
     952      if(tmp1!=NULL){
     953        xmlNewProp(nc2,BAD_CAST tmp1->name,BAD_CAST tmp1->value);
     954      }else
     955        xmlNewProp(nc2,BAD_CAST "minOccurs",BAD_CAST "0");
     956      tmp1=getMap(e->content,"maxOccurs");
     957      if(tmp1!=NULL){
     958        if(strcasecmp(tmp1->value,"unbounded")!=0)
     959          xmlNewProp(nc2,BAD_CAST tmp1->name,BAD_CAST tmp1->value);
     960        else
     961          xmlNewProp(nc2,BAD_CAST "maxOccurs",BAD_CAST "1000");
     962      }else
     963        xmlNewProp(nc2,BAD_CAST "maxOccurs",BAD_CAST "1");
    950964    }
    951965
    952966    printDescription(nc2,ns_ows,e->name,e->content);
    953967
     968    /**
     969     * Build the (Literal/Complex/BoundingBox)Data node
     970     */
    954971    if(strncmp(type,"Output",6)==0){
    955972      if(strncasecmp(e->format,"LITERALDATA",strlen(e->format))==0)
     
    972989        nc3 = xmlNewNode(NULL, BAD_CAST e->format);
    973990    }
     991
    974992    iotype* _tmp0=NULL;
    975993    iotype* _tmp=e->defaults;
     
    977995    bool hasDefault=false;
    978996    bool hasUOM=false;
     997    bool hasUOM1=false;
    979998    if(_tmp!=NULL){
    980999      if(strcmp(e->format,"LiteralOutput")==0 ||
     
    9871006              strcmp(e->format,"BoundingBoxData")==0){
    9881007        datatype=2;
    989         //nc4 = xmlNewNode(NULL, BAD_CAST "BoundingBoxOutput");
    9901008        nc5 = xmlNewNode(NULL, BAD_CAST "Default");
    9911009      }
     
    9961014     
    9971015      tmp1=_tmp->content;
    998       int avcnt=0;
    999       int dcnt=0;
    1000       int oI=0;
    1001       for(oI=0;oI<13;oI++)
    1002         if((tmp1=getMap(_tmp->content,orderedFields[oI]))!=NULL){
    1003           //while(tmp1!=NULL){
    1004 #ifdef DEBUG
    1005           printf("DATATYPE DEFAULT ? %s\n",tmp1->name);
    1006 #endif
    1007           if(strncasecmp(tmp1->name,"DataType",8)==0){
    1008             nc6 = xmlNewNode(ns_ows, BAD_CAST "DataType");
    1009             xmlAddChild(nc6,xmlNewText(BAD_CAST tmp1->value));
    1010             char tmp[1024];
    1011             sprintf(tmp,"http://www.w3.org/TR/xmlschema-2/#%s",tmp1->value);
    1012             xmlNewNsProp(nc6,ns_ows,BAD_CAST "reference",BAD_CAST tmp);
    1013             xmlAddChild(nc3,nc6);
    1014             tmp1=tmp1->next;
    1015             datatype=1;
    1016             continue;
     1016
     1017      if((tmp1=getMap(_tmp->content,"DataType"))!=NULL){
     1018        nc8 = xmlNewNode(ns_ows, BAD_CAST "DataType");
     1019        xmlAddChild(nc8,xmlNewText(BAD_CAST tmp1->value));
     1020        char tmp[1024];
     1021        sprintf(tmp,"http://www.w3.org/TR/xmlschema-2/#%s",tmp1->value);
     1022        xmlNewNsProp(nc8,ns_ows,BAD_CAST "reference",BAD_CAST tmp);
     1023        xmlAddChild(nc3,nc8);
     1024        datatype=1;
     1025      }
     1026     
     1027      if(strncmp(type,"Input",5)==0){
     1028
     1029        if((tmp1=getMap(_tmp->content,"AllowedValues"))!=NULL){
     1030          nc6 = xmlNewNode(ns_ows, BAD_CAST "AllowedValues");
     1031          char *token,*saveptr1;
     1032          token=strtok_r(tmp1->value,",",&saveptr1);
     1033          while(token!=NULL){
     1034            nc7 = xmlNewNode(ns_ows, BAD_CAST "Value");
     1035            char *tmps=strdup(token);
     1036            tmps[strlen(tmps)]=0;
     1037            xmlAddChild(nc7,xmlNewText(BAD_CAST tmps));
     1038            free(tmps);
     1039            xmlAddChild(nc6,nc7);
     1040            token=strtok_r(NULL,",",&saveptr1);
    10171041          }
    1018           if(strcmp(tmp1->name,"asReference")!=0 &&
    1019              strncasecmp(tmp1->name,"DataType",8)!=0 &&
    1020              strcasecmp(tmp1->name,"extension")!=0 &&
    1021              strcasecmp(tmp1->name,"value")!=0 &&
    1022              strncasecmp(tmp1->name,"AllowedValues",13)!=0&&
    1023              strncasecmp(tmp1->name,"range",5)!=0){
    1024             if(datatype!=1){
    1025               char *tmp2=zCapitalize1(tmp1->name);
    1026               nc6 = xmlNewNode(NULL, BAD_CAST tmp2);
    1027               free(tmp2);
    1028             }
    1029             else{
    1030               char *tmp2=zCapitalize(tmp1->name);
    1031               nc6 = xmlNewNode(ns_ows, BAD_CAST tmp2);
    1032               free(tmp2);
    1033             }
    1034             xmlAddChild(nc6,xmlNewText(BAD_CAST tmp1->value));
    1035             xmlAddChild(nc5,nc6);
    1036             hasUOM=true;
    1037           }else
    1038             if(strncmp(type,"Input",5)==0){
    1039 
    1040               if(strcmp(tmp1->name,"value")==0){
    1041                 nc7 = xmlNewNode(NULL, BAD_CAST "DefaultValue");
    1042                 xmlAddChild(nc7,xmlNewText(BAD_CAST tmp1->value));
    1043                 default1=1;
    1044                 hasDefault=true;
    1045               }
    1046               if(strncasecmp(tmp1->name,"AllowedValues",13)==0){
    1047                 nc6 = xmlNewNode(ns_ows, BAD_CAST "AllowedValues");
    1048                 char *token,*saveptr1;
    1049                 token=strtok_r(tmp1->value,",",&saveptr1);
    1050                 while(token!=NULL){
    1051                   nc7 = xmlNewNode(ns_ows, BAD_CAST "Value");
    1052                   char *tmps=strdup(token);
    1053                   tmps[strlen(tmps)]=0;
    1054                   xmlAddChild(nc7,xmlNewText(BAD_CAST tmps));
    1055                   xmlAddChild(nc6,nc7);
    1056                   token=strtok_r(NULL,",",&saveptr1);
     1042          if(getMap(_tmp->content,"range")!=NULL ||
     1043             getMap(_tmp->content,"rangeMin")!=NULL ||
     1044             getMap(_tmp->content,"rangeMax")!=NULL ||
     1045             getMap(_tmp->content,"rangeClosure")!=NULL )
     1046            goto doRange;
     1047          xmlAddChild(nc3,nc6);
     1048          isAnyValue=-1;
     1049        }
     1050
     1051        tmp1=getMap(_tmp->content,"range");
     1052        if(tmp1==NULL)
     1053          tmp1=getMap(_tmp->content,"rangeMin");
     1054        if(tmp1==NULL)
     1055          tmp1=getMap(_tmp->content,"rangeMax");
     1056       
     1057        if(tmp1!=NULL && isAnyValue==1){
     1058          nc6 = xmlNewNode(ns_ows, BAD_CAST "AllowedValues");
     1059        doRange:
     1060         
     1061          /**
     1062           * Range: Table 46 OGC Web Services Common Standard
     1063           */
     1064          nc8 = xmlNewNode(ns_ows, BAD_CAST "Range");
     1065         
     1066          map* tmp0=getMap(tmp1,"range");
     1067          if(tmp0!=NULL){
     1068            char* pToken;
     1069            char* orig=zStrdup(tmp0->value);
     1070            /**
     1071             * RangeClosure: Table 47 OGC Web Services Common Standard
     1072             */
     1073            char *tmp="closed";
     1074            if(orig[0]=='[' && orig[strlen(orig)-1]=='[')
     1075              tmp="closed-open";
     1076            else
     1077              if(orig[0]==']' && orig[strlen(orig)-1]==']')
     1078                tmp="open-closed";
     1079              else
     1080                if(orig[0]==']' && orig[strlen(orig)-1]=='[')
     1081                  tmp="open";
     1082            xmlNewNsProp(nc8,ns_ows,BAD_CAST "rangeClosure",BAD_CAST tmp);
     1083            pToken=strtok(orig,",");
     1084            int nci0=0;
     1085            while(pToken!=NULL){
     1086              char *tmpStr=(char*) malloc((strlen(pToken))*sizeof(char));
     1087              if(nci0==0){
     1088                nc7 = xmlNewNode(ns_ows, BAD_CAST "MinimumValue");
     1089                int nci=1;
     1090                for(nci=1;nci<strlen(pToken);nci++){
     1091                  tmpStr[nci-1]=pToken[nci];
    10571092                }
    1058                 if(getMap(_tmp->content,"range")!=NULL ||
    1059                    getMap(_tmp->content,"rangeMin")!=NULL ||
    1060                    getMap(_tmp->content,"rangeMax")!=NULL ||
    1061                    getMap(_tmp->content,"rangeClosure")!=NULL )
    1062                   goto doRange;
    1063                 xmlAddChild(nc3,nc6);
    1064                 isAnyValue=-1;
    1065               }
    1066               if(strncasecmp(tmp1->name,"range",5)==0){
    1067                 if(isAnyValue==1){
    1068                   nc6 = xmlNewNode(ns_ows, BAD_CAST "AllowedValues");
    1069                 doRange:
    1070                  
    1071                   /**
    1072                    * Range: Table 46 OGC Web Services Common Standard
    1073                    */
    1074                   nc8 = xmlNewNode(ns_ows, BAD_CAST "Range");
    1075 
    1076                   map* tmp0=getMap(tmp1,"range");
    1077                   if(tmp0!=NULL){
    1078                     char* pToken;
    1079                     char* orig=zStrdup(tmp0->value);
    1080                     /**
    1081                      * RangeClosure: Table 47 OGC Web Services Common Standard
    1082                      */
    1083                     char *tmp="closed";
    1084                     if(orig[0]=='[' && orig[strlen(orig)-1]=='[')
    1085                       tmp="closed-open";
    1086                     else
    1087                       if(orig[0]==']' && orig[strlen(orig)-1]==']')
    1088                         tmp="open-closed";
    1089                       else
    1090                         if(orig[0]==']' && orig[strlen(orig)-1]=='[')
    1091                           tmp="open";
    1092                     xmlNewNsProp(nc8,ns_ows,BAD_CAST "rangeClosure",BAD_CAST tmp);
    1093                     pToken=strtok(orig,",");
    1094                     int nci0=0;
    1095                     while(pToken!=NULL){
    1096                       char *tmpStr=(char*) malloc((strlen(pToken))*sizeof(char));
    1097                       if(nci0==0){
    1098                         nc7 = xmlNewNode(ns_ows, BAD_CAST "MinimumValue");
    1099                         int nci=1;
    1100                         for(nci=1;nci<strlen(pToken);nci++){
    1101                           tmpStr[nci-1]=pToken[nci];
    1102                         }
    1103                       }else{
    1104                         nc7 = xmlNewNode(ns_ows, BAD_CAST "MaximumValue");
    1105                         int nci=0;
    1106                         for(nci=0;nci<strlen(pToken)-1;nci++){
    1107                           tmpStr[nci]=pToken[nci];
    1108                         }
    1109                       }
    1110                       xmlAddChild(nc7,xmlNewText(BAD_CAST tmpStr));
    1111                       xmlAddChild(nc8,nc7);
    1112                       nci0++;
    1113                       pToken = strtok(NULL,",");
    1114                     }               
    1115                     if(getMap(tmp1,"rangeSpacing")==NULL){
    1116                       nc7 = xmlNewNode(ns_ows, BAD_CAST "Spacing");
    1117                       xmlAddChild(nc7,xmlNewText(BAD_CAST "1"));
    1118                       xmlAddChild(nc8,nc7);
    1119                     }
    1120                   }else{
    1121 
    1122                   tmp0=getMap(tmp1,"rangeMin");
    1123                   if(tmp0!=NULL){
    1124                     nc7 = xmlNewNode(ns_ows, BAD_CAST "MinimumValue");
    1125                     xmlAddChild(nc7,xmlNewText(BAD_CAST tmp0->value));
    1126                     xmlAddChild(nc8,nc7);
    1127                   }else{
    1128                     nc7 = xmlNewNode(ns_ows, BAD_CAST "MinimumValue");
    1129                     xmlAddChild(nc8,nc7);
    1130                   }
    1131                   tmp0=getMap(tmp1,"rangeMax");
    1132                   if(tmp0!=NULL){
    1133                     nc7 = xmlNewNode(ns_ows, BAD_CAST "MaximumValue");
    1134                     xmlAddChild(nc7,xmlNewText(BAD_CAST tmp0->value));
    1135                     xmlAddChild(nc8,nc7);
    1136                   }else{
    1137                     nc7 = xmlNewNode(ns_ows, BAD_CAST "MaximumValue");
    1138                     xmlAddChild(nc8,nc7);
    1139                   }
    1140                   tmp0=getMap(tmp1,"rangeSpacing");
    1141                   if(tmp0!=NULL){
    1142                     nc7 = xmlNewNode(ns_ows, BAD_CAST "Spacing");
    1143                     xmlAddChild(nc7,xmlNewText(BAD_CAST tmp0->value));
    1144                     xmlAddChild(nc8,nc7);
    1145                   }
    1146                   tmp0=getMap(tmp1,"rangeClosure");
    1147                   if(tmp0!=NULL){
    1148                     char *tmp="closed";
    1149                     if(strcasecmp(tmp0->value,"co")==0)
    1150                       tmp="closed-open";
    1151                     else
    1152                       if(strcasecmp(tmp0->value,"oc")==0)
    1153                         tmp="open-closed";
    1154                       else
    1155                         if(strcasecmp(tmp0->value,"o")==0)
    1156                           tmp="open";
    1157                     xmlNewNsProp(nc8,ns_ows,BAD_CAST "rangeClosure",BAD_CAST tmp);
    1158                   }else
    1159                     xmlNewNsProp(nc8,ns_ows,BAD_CAST "rangeClosure",BAD_CAST "closed");
    1160                   }
    1161                   if(_tmp0==NULL){
    1162                     xmlAddChild(nc6,nc8);
    1163                     _tmp0=e->supported;
    1164                     tmp1=_tmp0->content;
    1165                     goto doRange;
    1166                   }else{
    1167                     _tmp0=_tmp0->next;
    1168                     if(_tmp0!=NULL){
    1169                       xmlAddChild(nc6,nc8);
    1170                       tmp1=_tmp0->content;
    1171                       goto doRange;
    1172                     }
    1173                  
    1174                   }
    1175                   xmlAddChild(nc6,nc8);
    1176                   xmlAddChild(nc3,nc6);
    1177                   isAnyValue=-1;
     1093                }else{
     1094                nc7 = xmlNewNode(ns_ows, BAD_CAST "MaximumValue");
     1095                int nci=0;
     1096                for(nci=0;nci<strlen(pToken)-1;nci++){
     1097                  tmpStr[nci]=pToken[nci];
    11781098                }
    11791099              }
     1100              xmlAddChild(nc7,xmlNewText(BAD_CAST tmpStr));
     1101              free(tmpStr);
     1102              xmlAddChild(nc8,nc7);
     1103              nci0++;
     1104              pToken = strtok(NULL,",");
     1105            }               
     1106            if(getMap(tmp1,"rangeSpacing")==NULL){
     1107              nc7 = xmlNewNode(ns_ows, BAD_CAST "Spacing");
     1108              xmlAddChild(nc7,xmlNewText(BAD_CAST "1"));
     1109              xmlAddChild(nc8,nc7);
    11801110            }
    1181           tmp1=tmp1->next;
    1182           if(datatype!=2){
    1183             if(hasUOM==true){
    1184               xmlAddChild(nc4,nc5);
    1185               xmlAddChild(nc3,nc4);
     1111            free(orig);
     1112          }else{
     1113           
     1114            tmp0=getMap(tmp1,"rangeMin");
     1115            if(tmp0!=NULL){
     1116              nc7 = xmlNewNode(ns_ows, BAD_CAST "MinimumValue");
     1117              xmlAddChild(nc7,xmlNewText(BAD_CAST tmp0->value));
     1118              xmlAddChild(nc8,nc7);
     1119            }else{
     1120              nc7 = xmlNewNode(ns_ows, BAD_CAST "MinimumValue");
     1121              xmlAddChild(nc8,nc7);
    11861122            }
     1123            tmp0=getMap(tmp1,"rangeMax");
     1124            if(tmp0!=NULL){
     1125              nc7 = xmlNewNode(ns_ows, BAD_CAST "MaximumValue");
     1126              xmlAddChild(nc7,xmlNewText(BAD_CAST tmp0->value));
     1127              xmlAddChild(nc8,nc7);
     1128            }else{
     1129              nc7 = xmlNewNode(ns_ows, BAD_CAST "MaximumValue");
     1130              xmlAddChild(nc8,nc7);
     1131            }
     1132            tmp0=getMap(tmp1,"rangeSpacing");
     1133            if(tmp0!=NULL){
     1134              nc7 = xmlNewNode(ns_ows, BAD_CAST "Spacing");
     1135              xmlAddChild(nc7,xmlNewText(BAD_CAST tmp0->value));
     1136              xmlAddChild(nc8,nc7);
     1137            }
     1138            tmp0=getMap(tmp1,"rangeClosure");
     1139            if(tmp0!=NULL){
     1140              char *tmp="closed";
     1141              if(strcasecmp(tmp0->value,"co")==0)
     1142                tmp="closed-open";
     1143              else
     1144                if(strcasecmp(tmp0->value,"oc")==0)
     1145                  tmp="open-closed";
     1146                else
     1147                  if(strcasecmp(tmp0->value,"o")==0)
     1148                    tmp="open";
     1149              xmlNewNsProp(nc8,ns_ows,BAD_CAST "rangeClosure",BAD_CAST tmp);
     1150            }else
     1151              xmlNewNsProp(nc8,ns_ows,BAD_CAST "rangeClosure",BAD_CAST "closed");
     1152          }
     1153          if(_tmp0==NULL){
     1154            xmlAddChild(nc6,nc8);
     1155            _tmp0=e->supported;
     1156            tmp1=_tmp0->content;
     1157            goto doRange;
    11871158          }else{
    1188             xmlAddChild(nc3,nc5);
    1189           }
    1190           if(strncmp(type,"Input",5)==0){
    1191             if(datatype==1 && isAnyValue==1 && default1>0){
    1192               xmlAddChild(nc3,nc7);
     1159            _tmp0=_tmp0->next;
     1160            if(_tmp0!=NULL){
     1161              xmlAddChild(nc6,nc8);
     1162              tmp1=_tmp0->content;
     1163              goto doRange;
    11931164            }
    11941165          }
    1195          
    1196         }
    1197       if(strncmp(type,"Input",5)==0){
    1198         if(datatype==1 && isAnyValue==1 && avcnt==0){
    1199           xmlAddChild(nc3,xmlNewNode(ns_ows, BAD_CAST "AnyValue"));
    1200           hasDefault=true;
    1201           avcnt++;
    1202         }
    1203       }
     1166          xmlAddChild(nc6,nc8);
     1167          xmlAddChild(nc3,nc6);
     1168          isAnyValue=-1;
     1169        }
     1170       
     1171      }
     1172   
    12041173     
     1174    int avcnt=0;
     1175    int dcnt=0;
     1176    int oI=0;
     1177    for(oI=0;oI<13;oI++)
     1178      if((tmp1=getMap(_tmp->content,orderedFields[oI]))!=NULL){
     1179#ifdef DEBUG
     1180        printf("DATATYPE DEFAULT ? %s\n",tmp1->name);
     1181#endif
     1182        if(strcmp(tmp1->name,"asReference")!=0 &&
     1183           strncasecmp(tmp1->name,"DataType",8)!=0 &&
     1184           strcasecmp(tmp1->name,"extension")!=0 &&
     1185           strcasecmp(tmp1->name,"value")!=0 &&
     1186           strcasecmp(tmp1->name,"AllowedValues")!=0 &&
     1187           strncasecmp(tmp1->name,"range",5)!=0){
     1188          if(datatype!=1){
     1189            char *tmp2=zCapitalize1(tmp1->name);
     1190            nc9 = xmlNewNode(NULL, BAD_CAST tmp2);
     1191            free(tmp2);
     1192          }
     1193          else{
     1194            char *tmp2=zCapitalize(tmp1->name);
     1195            nc9 = xmlNewNode(ns_ows, BAD_CAST tmp2);
     1196            free(tmp2);
     1197          }
     1198          xmlAddChild(nc9,xmlNewText(BAD_CAST tmp1->value));
     1199          xmlAddChild(nc5,nc9);
     1200          if(strcasecmp(tmp1->name,"uom")==0)
     1201            hasUOM1=true;
     1202          hasUOM=true;
     1203        }else
     1204         
     1205          tmp1=tmp1->next;
     1206      }
     1207   
     1208   
     1209      if(datatype!=2){
     1210        if(hasUOM==true){
     1211          xmlAddChild(nc4,nc5);
     1212          xmlAddChild(nc3,nc4);
     1213        }else{
     1214          if(hasUOM1==false){
     1215            xmlFreeNode(nc5);
     1216            if(datatype==1)
     1217              xmlFreeNode(nc4);
     1218          }
     1219        }
     1220      }else{
     1221        xmlAddChild(nc3,nc5);
     1222      }
     1223     
     1224      if(datatype!=1 && default1<0){
     1225        xmlFreeNode(nc5);
     1226        if(datatype!=2)
     1227          xmlFreeNode(nc4);
     1228      }
     1229
    12051230      map* metadata=e->metadata;
    12061231      xmlNodePtr n;
     
    12091234
    12101235      while(metadata!=NULL){
    1211         nc6=xmlNewNode(ns_ows, BAD_CAST "MetaData");
     1236        nc6=xmlNewNode(ns_ows, BAD_CAST "Metadata");
    12121237        xmlNewNsProp(nc6,ns_xlink,BAD_CAST metadata->name,BAD_CAST metadata->value);
    12131238        xmlAddChild(nc2,nc6);
    12141239        metadata=metadata->next;
    12151240      }
     1241
    12161242    }
    12171243
    12181244    _tmp=e->supported;
    1219     if(_tmp==NULL && (getMap(e->defaults->content,"uom")!=NULL || datatype!=1))
     1245    if(_tmp==NULL && datatype!=1)
    12201246      _tmp=e->defaults;
    12211247
    12221248    int hasSupported=-1;
     1249
    12231250    while(_tmp!=NULL){
    12241251      if(hasSupported<0){
     
    12411268#endif
    12421269          if(strcmp(tmp1->name,"asReference")!=0 &&
     1270             strcmp(tmp1->name,"value")!=0 &&
    12431271             strcmp(tmp1->name,"DataType")!=0 &&
    12441272             strcasecmp(tmp1->name,"extension")!=0){
     
    12581286              while(tmps){
    12591287                xmlAddChild(nc6,xmlNewText(BAD_CAST tmps));
    1260                 xmlAddChild(nc5,nc6);
    12611288                tmps=strtok_r(NULL,",",&tmpv);
    12621289                if(tmps){
     
    12691296            else{
    12701297              xmlAddChild(nc6,xmlNewText(BAD_CAST tmp1->value));
    1271               xmlAddChild(nc5,nc6);
    12721298            }
     1299            xmlAddChild(nc5,nc6);
    12731300          }
    12741301          tmp1=tmp1->next;
    12751302        }
    12761303      if(hasSupported<=0){
    1277         if(datatype!=2){
     1304        if(datatype==0){
    12781305          xmlAddChild(nc4,nc5);
    12791306          xmlAddChild(nc3,nc4);
    1280         }else
    1281           xmlAddChild(nc3,nc5);
     1307        }else{
     1308          if(datatype!=1)
     1309            xmlAddChild(nc3,nc5);
     1310        }
    12821311        hasSupported=1;
    12831312      }
    12841313      else
    1285         if(datatype!=2){
     1314        if(datatype==0){
    12861315          xmlAddChild(nc4,nc5);
     1316          xmlAddChild(nc3,nc4);
    12871317        }
    12881318        else
    1289           xmlAddChild(nc3,nc5);
     1319          if(datatype!=1)
     1320            xmlAddChild(nc3,nc5);
     1321
    12901322      _tmp=_tmp->next;
    12911323    }
     1324
     1325    if(hasSupported==0){
     1326      if(datatype==0)
     1327        xmlFreeNode(nc4);
     1328      xmlFreeNode(nc5);
     1329    }
     1330
     1331    _tmp=e->defaults;
     1332    if(datatype==1 && hasUOM1==true){
     1333      xmlAddChild(nc4,nc5);
     1334      xmlAddChild(nc3,nc4);
     1335    }
     1336
     1337    if(datatype==1 &&
     1338       getMap(_tmp->content,"AllowedValues")==NULL &&
     1339       getMap(_tmp->content,"range")==NULL &&
     1340       getMap(_tmp->content,"rangeMin")==NULL &&
     1341       getMap(_tmp->content,"rangeMax")==NULL &&
     1342       getMap(_tmp->content,"rangeClosure")==NULL ){
     1343      tmp1=getMap(_tmp->content,"dataType");
     1344      if(tmp1!=NULL)
     1345        if(strcasecmp(tmp1->value,"boolean")==0){
     1346          nc6 = xmlNewNode(ns_ows, BAD_CAST "AllowedValues");
     1347          nc7 = xmlNewNode(ns_ows, BAD_CAST "Value");
     1348          xmlAddChild(nc7,xmlNewText(BAD_CAST "true"));
     1349          xmlAddChild(nc6,nc7);
     1350          nc7 = xmlNewNode(ns_ows, BAD_CAST "Value");
     1351          xmlAddChild(nc7,xmlNewText(BAD_CAST "false"));
     1352          xmlAddChild(nc6,nc7);
     1353          xmlAddChild(nc3,nc6);
     1354        }
     1355      xmlAddChild(nc3,xmlNewNode(ns_ows, BAD_CAST "AnyValue"));
     1356    }
     1357   
     1358    if((tmp1=getMap(_tmp->content,"value"))!=NULL){
     1359      nc7 = xmlNewNode(NULL, BAD_CAST "DefaultValue");
     1360      xmlAddChild(nc7,xmlNewText(BAD_CAST tmp1->value));
     1361      xmlAddChild(nc3,nc7);
     1362    }
     1363   
    12921364    xmlAddChild(nc2,nc3);
    1293    
    1294     if(datatype!=2 && hasUOM==true){
    1295       xmlAddChild(nc3,nc4);
    1296       xmlAddChild(nc2,nc3);
    1297     }/*else if(datatype!=2){
    1298       if(hasDefault!=true && strncmp(type,"Input",5)==0 && isAnyValue==1)
    1299         xmlAddChild(nc3,xmlNewNode(ns_ows, BAD_CAST "AnyValue"));
    1300         }*/
    13011365   
    13021366    xmlAddChild(nc1,nc2);
     
    15681632      freeMap(&errormap);
    15691633      free(errormap);
     1634      xmlFreeDoc(doc);
    15701635      xmlCleanupParser();
    15711636      zooXmlCleanupNs();
     
    18001865                               NULL,NULL, 0);
    18011866        testMap=getMap(m->content,"Reference");
    1802         loadRemoteFile(m,m->content,hInternet,testMap->value);
     1867        loadRemoteFile(&m,&m->content,hInternet,testMap->value);
    18031868        InternetCloseHandle(hInternet);
    18041869      }
     
    19972062  xmlCleanupParser();
    19982063  zooXmlCleanupNs();
    1999   setMapInMaps(m,"lenv","hasPrinted","true");
     2064  if(m!=NULL)
     2065    setMapInMaps(m,"lenv","hasPrinted","true");
    20002066}
    20012067
     
    27662832#endif
    27672833    FILE* fo=fopen(fname,"w+");
     2834    if(fo==NULL){
     2835      fprintf (stderr, "Failed to open %s for writting: %s\n",fname, strerror(errno));
     2836      return;
     2837    }
    27682838    fwrite(content,sizeof(char),length,fo);
    27692839    fclose(fo);
     
    28072877 * Try to load file from cache or download a remote file if not in cache
    28082878 */
    2809 int loadRemoteFile(maps* m,map* content,HINTERNET hInternet,char *url){
     2879int loadRemoteFile(maps** m,map** content,HINTERNET hInternet,char *url){
    28102880  HINTERNET res;
    28112881  char* fcontent;
    2812   char* cached=isInCache(m,url);
     2882  char* cached=isInCache(*m,url);
    28132883  char *mimeType=NULL;
    28142884  int fsize;
     
    28382908    fcontent=(char*)malloc((res.nDataLen+1)*sizeof(char));
    28392909    if(fcontent == NULL){
    2840       return errorException(m, _("Unable to allocate memory."), "InternalError",NULL);
     2910      return errorException(*m, _("Unable to allocate memory."), "InternalError",NULL);
    28412911    }
    28422912    size_t dwRead;
     
    28472917  }
    28482918  if(fsize==0){
    2849     return errorException(m, _("Unable to download the file."), "InternalError",NULL);
     2919    return errorException(*m, _("Unable to download the file."), "InternalError",NULL);
    28502920  }
    28512921
    28522922  if(mimeType!=NULL){
    2853     addToMap(content,"fmimeType",mimeType);
     2923    addToMap(*content,"fmimeType",mimeType);
    28542924  }
    28552925
     
    28652935  char ltmp1[256];
    28662936  sprintf(ltmp1,"%d",fsize);
    2867   addToMap(content,"size",ltmp1);
     2937  addToMap(*content,"size",ltmp1);
    28682938  if(cached==NULL)
    2869     addToCache(m,url,fcontent,mimeType,fsize);
     2939    addToCache(*m,url,fcontent,mimeType,fsize);
    28702940  else{
    28712941    free(fcontent);
     
    29653035}
    29663036
     3037
     3038int updateStatus( maps* conf, const int percentCompleted, const char* message ){
     3039  char tmp[4];
     3040  snprintf(tmp,4,"%d",percentCompleted);
     3041  setMapInMaps( conf, "lenv", "status", tmp );
     3042  setMapInMaps( conf, "lenv", "message", message);
     3043  return _updateStatus( conf );
     3044}
     3045
     3046char* getInputValue( maps* inputs, const char* parameterName, size_t* numberOfBytes){
     3047  map* res=getMapFromMaps(inputs,parameterName,"value");
     3048  if(res!=NULL){
     3049    map* size=getMapFromMaps(inputs,parameterName,"size");
     3050    if(size!=NULL){
     3051      *numberOfBytes=(size_t)atoi(size->value);
     3052      return res->value;
     3053    }else{
     3054      *numberOfBytes=strlen(res->value);
     3055      return res->value;
     3056    }
     3057  }
     3058  return NULL;
     3059}
     3060
     3061int  setOutputValue( maps* outputs, const char* parameterName, char* data, size_t numberOfBytes ){
     3062  if(numberOfBytes==-1){
     3063    setMapInMaps(outputs,parameterName,"value",data);
     3064  }else{
     3065    char size[1024];
     3066    map* tmp=getMapFromMaps(outputs,parameterName,"value");
     3067    free(tmp->value);
     3068    tmp->value=(char*) malloc((numberOfBytes+1)*sizeof(char));
     3069    memcpy(tmp->value,data,numberOfBytes);
     3070    sprintf(size,"%d",numberOfBytes);
     3071    setMapInMaps(outputs,parameterName,"size",size);
     3072  }
     3073  return 0;
     3074}
  • trunk/zoo-project/zoo-kernel/service_internal.h

    r469 r471  
    3131#define TIME_SIZE 40
    3232
     33#include "fcgi_stdio.h"
    3334#include <libintl.h>
    3435#include <locale.h>
     
    9697  void printHeaders(maps*);
    9798  void unhandleStatus(maps*);
    98   void updateStatus(maps*);
     99  int _updateStatus(maps*);
    99100  char* getStatus(int);
    100101
     
    143144  void addToCache(maps*,char*,char*,char*,int);
    144145  char* isInCache(maps*,char*);
    145   int loadRemoteFile(maps*,map*,HINTERNET,char*);
     146  int loadRemoteFile(maps**,map**,HINTERNET,char*);
    146147
    147148#ifdef USE_MS
     
    149150#endif
    150151  void parseIdentifier(maps*,char*,char*,char*);
     152  int updateStatus( maps*,const int,const char*);
     153  char* getInputValue( maps*,const char*,size_t*);
     154  int  setOutputValue( maps*, const char*, char*, size_t);
    151155
    152156#ifdef __cplusplus
  • trunk/zoo-project/zoo-kernel/service_internal_js.c

    r453 r471  
    3939  for(i=0;i<argc;i++){
    4040    JSString* jsmsg = JS_ValueToString(cx,argv[i]);
    41     fprintf(stderr,"[ZOO-API:JS] %s\n",JS_EncodeString(cx,jsmsg));
     41    char *tmp=JS_EncodeString(cx,jsmsg);
     42    fprintf(stderr,"[ZOO-API:JS] %s\n",tmp);
     43    free(tmp);
    4244  }
    4345  JS_MaybeGC(cx);
     
    6971#endif
    7072    JSObject *api_script1=loadZooApiFile(cx,JS_GetGlobalObject(cx),api0);
     73    free(api0);
    7174  }
    7275  JS_MaybeGC(cx);
     
    158161#endif
    159162  JSObject *api_script1=loadZooApiFile(cx,global,api0);
     163  free(api0);
    160164  fflush(stderr);
    161165
     
    166170#endif
    167171  JSObject *api_script2=loadZooApiFile(cx,global,api1);
     172  free(api1);
    168173  fflush(stderr);
    169174
     
    183188  struct stat file_status;
    184189  stat(filename, &file_status);
    185   char *source=(char*)malloc(file_status.st_size);
     190  //char *source=(char*)malloc(file_status.st_size);
    186191  uint16 lineno;
    187192  jsval rval;
     
    194199    char tmp1[1024];
    195200    sprintf(tmp1,"Unable to load JavaScript file %s",filename);
     201    free(filename);
    196202    map* err=createMap("text",tmp1);
    197     addMapToMap(&err,createMap("code","NoApplicableCode"));
     203    addToMap(err,"code","NoApplicableCode");
    198204    printExceptionReportResponse(mc,err);
     205    freeMap(&err);
     206    free(err);
     207    JS_MaybeGC(cx);
    199208    JS_DestroyContext(cx);
    200209    JS_DestroyRuntime(rt);
    201210    JS_ShutDown();
    202     exit(-1);
    203   }
     211    return -1;
     212  }
     213 
    204214
    205215  /* Call a function in obj's scope. */
     
    243253    freeMap(&err);
    244254    free(err);
     255    free(filename);
     256    JS_MaybeGC(cx);
    245257    JS_DestroyContext(cx);
    246258    JS_DestroyRuntime(rt);
    247259    JS_ShutDown();
    248260    // Should return -1 here but the unallocation won't work from zoo_service_loader.c line 1847
    249     exit(-1);
     261    return -1;
    250262  }
    251263
     
    344356  JS_DestroyRuntime(rt);
    345357  JS_ShutDown();
     358  free(filename);
    346359#ifdef JS_DEBUG
    347360  fprintf(stderr,"Returned value %d\n",res);
     
    481494        jsmsg = JS_ValueToString(cx,vp);
    482495        len1 = JS_GetStringLength(jsmsg);
    483 
     496       
     497        tmp=JS_EncodeString(cx,jsmsg);
    484498        tres=(maps*)malloc(MAPS_SIZE);
    485         tres->name=zStrdup(JS_EncodeString(cx,jsmsg));
     499        tres->name=zStrdup(tmp);
    486500        tres->content=NULL;
    487501        tres->next=NULL;
    488502
    489503        jsval nvp=JSVAL_NULL;
    490         if((JS_GetProperty(cx, tt, JS_EncodeString(cx,jsmsg), &nvp)==JS_FALSE)){
    491 #ifdef JS_DEBUG
    492           fprintf(stderr,"Enumerate id : %d => %s => No more value\n",oi,JS_EncodeString(cx,jsmsg));
     504        if((JS_GetProperty(cx, tt, tmp, &nvp)==JS_FALSE)){
     505#ifdef JS_DEBUG
     506          fprintf(stderr,"Enumerate id : %d => %s => No more value\n",oi,tmp);
    493507#endif
    494508        }
    495        
     509        free(tmp);
    496510        JSObject *nvp1=JSVAL_TO_OBJECT(JSVAL_NULL);
    497511        JS_ValueToObject(cx,nvp,&nvp1);
     
    510524               
    511525      }
     526      JS_DestroyIdArray(cx,idp);
    512527    }
    513528  }
     
    550565        jsmsg = JS_ValueToString(cx,vp);
    551566        len1 = JS_GetStringLength(jsmsg);
    552 #ifdef JS_DEBUG
    553         fprintf(stderr,"Enumerate id : %d => %s\n",oi,JS_EncodeString(cx,jsmsg));
     567        tmp=JS_EncodeString(cx,jsmsg);
     568#ifdef JS_DEBUG
     569        fprintf(stderr,"Enumerate id : %d => %s\n",oi,tmp);
    554570#endif
    555571        jsval nvp=JSVAL_NULL;
    556         if((JS_GetProperty(cx, JSVAL_TO_OBJECT(tmp1), JS_EncodeString(cx,jsmsg), &nvp)==JS_FALSE)){
    557 #ifdef JS_DEBUG
    558           fprintf(stderr,"Enumerate id : %d => %s => No more value\n",oi,JS_EncodeString(cx,jsmsg));
     572        if((JS_GetProperty(cx, JSVAL_TO_OBJECT(tmp1), tmp, &nvp)==JS_FALSE)){
     573#ifdef JS_DEBUG
     574          fprintf(stderr,"Enumerate id : %d => %s => No more value\n",oi,tmp);
    559575#endif
    560576        }
    561        
     577        free(tmp);
    562578        if(JSVAL_IS_OBJECT(nvp)){
    563579#ifdef JS_DEBUG
     
    571587        if(JSVAL_IS_OBJECT(nvp1j)){
    572588          JSString *jsmsg1;
     589          char *tmp1, *tmp2;
    573590          JSObject *nvp2=JSVAL_TO_OBJECT(JSVAL_NULL);
    574591          jsmsg1 = JS_ValueToString(cx,nvp1j);
    575592          len1 = JS_GetStringLength(jsmsg1);
    576 #ifdef JS_DEBUG
    577           fprintf(stderr,"JSVAL NVP1J IS OBJECT %s = %s\n",JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
    578 #endif
    579           if(strcasecmp(JS_EncodeString(cx,jsmsg1),"[object Object]")==0){
    580             tres->name=zStrdup(JS_EncodeString(cx,jsmsg));
     593          tmp1=JS_EncodeString(cx,jsmsg1);
     594          tmp2=JS_EncodeString(cx,jsmsg);
     595#ifdef JS_DEBUG
     596          fprintf(stderr,"JSVAL NVP1J IS OBJECT %s = %s\n",JS_EncodeString(cx,jsmsg),tmp1);
     597#endif
     598          if(strcasecmp(tmp1,"[object Object]")==0){
     599            tres->name=zStrdup(tmp2);
    581600            tres->content=mapFromJSObject(cx,nvp1j);
    582601          }
    583602          else
    584             if(strcasecmp(JS_EncodeString(cx,jsmsg),"name")==0){
    585               tres->name=zStrdup(JS_EncodeString(cx,jsmsg1));
     603            if(strcasecmp(tmp2,"name")==0){
     604              tres->name=zStrdup(tmp1);
    586605            }
    587606            else{
    588607              if(tres->content==NULL)
    589                 tres->content=createMap(JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     608                tres->content=createMap(tmp2,tmp1);
    590609              else
    591                 addToMap(tres->content,JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     610                addToMap(tres->content,tmp2,tmp1);
    592611            }
     612          free(tmp1);
     613          free(tmp2);
    593614        }
    594615#ifdef JS_DEBUG
     
    607628      free(tres);
    608629      tres=NULL;
    609 
     630      JS_DestroyIdArray(cx,idp);
    610631    }
    611632  }
     
    633654      JSString* str;
    634655      JS_IdToValue(cx,id,&vp);
    635       char *c, *tmp;
     656      char *c, *tmp, *tmp1;
    636657      JSString *jsmsg,*jsmsg1;
    637658      size_t len,len1;
     
    639660      len = JS_GetStringLength(jsmsg);
    640661      jsval nvp;
    641       JS_GetProperty(cx, JSVAL_TO_OBJECT(t), JS_EncodeString(cx,jsmsg), &nvp);
     662      tmp=JS_EncodeString(cx,jsmsg);
     663      JS_GetProperty(cx, JSVAL_TO_OBJECT(t), tmp, &nvp);
    642664      jsmsg1 = JS_ValueToString(cx,nvp);
    643665      len1 = JS_GetStringLength(jsmsg1);
    644 #ifdef JS_DEBUG
    645       fprintf(stderr,"Enumerate id : %d [ %s => %s ]\n",index,JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     666      tmp1=JS_EncodeString(cx,jsmsg1);
     667#ifdef JS_DEBUG
     668      fprintf(stderr,"Enumerate id : %d [ %s => %s ]\n",index,tmp,tmp1);
    646669#endif
    647670      if(res!=NULL){
    648671#ifdef JS_DEBUG
    649         fprintf(stderr,"%s - %s\n",JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
    650 #endif
    651         addToMap(res,JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     672        fprintf(stderr,"%s - %s\n",tmp,tmp1);
     673#endif
     674        addToMap(res,tmp,tmp1);
    652675      }
    653676      else{
    654         res=createMap(JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     677        res=createMap(tmp,tmp1);
    655678        res->next=NULL;
    656679      }
     680      free(tmp);
     681      free(tmp1);
    657682#ifdef JS_DEBUG
    658683      dumpMap(res);
    659684#endif
    660685    }
     686    JS_DestroyIdArray(cx,idp);
    661687  }
    662688#ifdef JS_DEBUG
  • trunk/zoo-project/zoo-kernel/service_internal_python.c

    r469 r471  
    389389        PyObject* value=PyString_FromStringAndSize(tmp->value,atoi(size->value));
    390390        if(PyDict_SetItem(res,name,value)<0){
     391          Py_DECREF(value);
    391392          fprintf(stderr,"Unable to set key value pair...");
    392393          return NULL;
    393394        }
     395        Py_DECREF(value);
    394396      }
    395397      else{
    396398        PyObject* value=PyString_FromString(tmp->value);
    397399        if(PyDict_SetItem(res,name,value)<0){
     400          Py_DECREF(value);
    398401          fprintf(stderr,"Unable to set key value pair...");
    399402          return NULL;
    400403        }
     404        Py_DECREF(value);
    401405      }
    402406    }
     
    405409        PyObject* value=PyString_FromString(tmp->value);
    406410        if(PyDict_SetItem(res,name,value)<0){
     411          Py_DECREF(value);
    407412          fprintf(stderr,"Unable to set key value pair...");
    408413          return NULL;
    409414        }
     415        Py_DECREF(value);
    410416      }
    411417    }
     
    446452    free(cursor->content);
    447453    free(cursor);
     454    Py_DECREF(key);
    448455#ifdef DEBUG
    449456    dumpMaps(res);
     
    489496      addToMap(res,"size",sin);
    490497    }else{
     498      char* lkey=PyString_AsString(key);
     499      char* lvalue=PyString_AsString(value);
    491500      if(res!=NULL){
    492501        if(PyString_Size(value)>0)
    493           addToMap(res,PyString_AsString(key),PyString_AsString(value));
     502          addToMap(res,lkey,lvalue);
    494503      }
    495504      else{
    496505        if(PyString_Size(value)>0)
    497           res=createMap(PyString_AsString(key),PyString_AsString(value));
    498       }
    499     }
     506          res=createMap(lkey,lvalue);
     507      }
     508    }
     509    Py_DECREF(value);
     510    Py_DECREF(key);
    500511  }
    501512  return res;
     
    554565    else
    555566      setMapInMaps(conf,"lenv","status","15");
    556     updateStatus(conf);
     567    _updateStatus(conf);
    557568  }
    558569  freeMaps(&conf);
  • trunk/zoo-project/zoo-kernel/ulinet.c

    r470 r471  
    170170  ret.mimeType = NULL;
    171171
    172   ret.handle=curl_share_init();
    173 
    174   curl_share_setopt(ret.handle, CURLOPT_COOKIEFILE, "ALL");
     172  curl_global_init(CURL_GLOBAL_ALL|CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32);
     173  ret.handle=curl_easy_init();
     174
     175  curl_easy_setopt(ret.handle, CURLOPT_COOKIEFILE, "ALL");
    175176#ifndef TIGER
    176   curl_share_setopt(ret.handle, CURLOPT_COOKIELIST, "ALL");
    177 #endif
    178   curl_share_setopt(ret.handle, CURLOPT_USERAGENT, lpszAgent);
    179  
    180   curl_share_setopt(ret.handle,CURLOPT_FOLLOWLOCATION,1);
    181   curl_share_setopt(ret.handle,CURLOPT_MAXREDIRS,3);
     177  curl_easy_setopt(ret.handle, CURLOPT_COOKIELIST, "ALL");
     178#endif
     179  curl_easy_setopt(ret.handle, CURLOPT_USERAGENT, lpszAgent);
     180 
     181  curl_easy_setopt(ret.handle,CURLOPT_FOLLOWLOCATION,1);
     182  curl_easy_setopt(ret.handle,CURLOPT_MAXREDIRS,3);
    182183 
    183184  header.memory=NULL;
    184185  header.size = 0;
    185186
    186   curl_share_setopt(ret.handle, CURLOPT_HEADERFUNCTION, header_write_data);
    187   curl_share_setopt(ret.handle, CURLOPT_WRITEHEADER, (void *)&header);
    188 
    189 #ifdef MSG_LAF_VERBOSE
    190   curl_share_setopt(ret.handle, CURLOPT_VERBOSE, 1);
     187  curl_easy_setopt(ret.handle, CURLOPT_HEADERFUNCTION, header_write_data);
     188  curl_easy_setopt(ret.handle, CURLOPT_WRITEHEADER, (void *)&header);
     189
     190#ifdef MSG_LAF_VERBOSE
     191  curl_easy_setopt(ret.handle, CURLOPT_VERBOSE, 1);
    191192#endif
    192193
     
    206207  }
    207208  if(handle.handle)
    208     curl_share_cleanup(handle.handle);
     209    curl_easy_cleanup(handle.handle);
    209210  curl_global_cleanup();
    210211}
     
    222223    case INTERNET_FLAG_NO_CACHE_WRITE:   
    223224      hInternet.hasCacheFile=-1;
    224       curl_share_setopt(hInternet.handle, CURLOPT_WRITEFUNCTION, write_data_into);
    225       curl_share_setopt(hInternet.handle, CURLOPT_WRITEDATA, &hInternet);
     225      curl_easy_setopt(hInternet.handle, CURLOPT_WRITEFUNCTION, write_data_into);
     226      curl_easy_setopt(hInternet.handle, CURLOPT_WRITEDATA, &hInternet);
    226227      break;
    227228    default:
     
    236237   
    237238      hInternet.hasCacheFile=1;
    238       curl_share_setopt(hInternet.handle, CURLOPT_WRITEFUNCTION, NULL);
    239       curl_share_setopt(hInternet.handle, CURLOPT_WRITEDATA, hInternet.file);
     239      curl_easy_setopt(hInternet.handle, CURLOPT_WRITEFUNCTION, NULL);
     240      curl_easy_setopt(hInternet.handle, CURLOPT_WRITEDATA, hInternet.file);
    240241      hInternet.nDataLen=0;
    241242      break;
     
    250251#endif
    251252    //curl_easy_setopt(hInternet.handle,CURLOPT_COOKIE,lpszHeaders);
    252     curl_share_setopt(hInternet.handle,CURLOPT_POST,1);
     253    curl_easy_setopt(hInternet.handle,CURLOPT_POST,1);
    253254#ifdef ULINET_DEBUG
    254255    fprintf(stderr,"** (%s) %d **\n",lpszHeaders,dwHeadersLength);
    255     curl_share_setopt(hInternet.handle,CURLOPT_VERBOSE,1);
    256 #endif
    257     curl_share_setopt(hInternet.handle,CURLOPT_POSTFIELDS,lpszHeaders);
     256    curl_easy_setopt(hInternet.handle,CURLOPT_VERBOSE,1);
     257#endif
     258    curl_easy_setopt(hInternet.handle,CURLOPT_POSTFIELDS,lpszHeaders);
    258259    //curl_easy_setopt(hInternet.handle,CURLOPT_POSTFIELDSIZE,dwHeadersLength+1);
    259260    if(hInternet.header!=NULL)
    260       curl_share_setopt(hInternet.handle,CURLOPT_HTTPHEADER,hInternet.header);
    261   }
    262 
    263   curl_share_setopt(hInternet.handle,CURLOPT_URL,lpszUrl);
     261      curl_easy_setopt(hInternet.handle,CURLOPT_HTTPHEADER,hInternet.header);
     262  }
     263
     264  curl_easy_setopt(hInternet.handle,CURLOPT_URL,lpszUrl);
    264265  curl_easy_perform(hInternet.handle);
    265266  curl_easy_getinfo(hInternet.handle,CURLINFO_CONTENT_TYPE,&hInternet.mimeType);
     
    273274  memset(&CCookie[0],0,1024);
    274275#ifndef TIGER
    275   curl_share_setopt(hInternet.handle, CURLOPT_COOKIELIST, "ALL");
     276  curl_easy_setopt(hInternet.handle, CURLOPT_COOKIELIST, "ALL");
    276277#endif
    277278  return 1;
  • trunk/zoo-project/zoo-kernel/ulinet.h

    r470 r471  
    2626#define _ULINET_H
    2727
    28 #include "stdio.h"
     28#include "fcgi_stdio.h"
    2929#include <stdlib.h>
    3030#include <fcntl.h>
  • trunk/zoo-project/zoo-kernel/zoo_service_loader.c

    r469 r471  
    504504      printExceptionReportResponse(m,tmps1);
    505505      *eres=-1;
     506      freeMap(&tmps1);
     507      free(tmps1);
    506508    }
    507509  }
     
    683685  _getcwd(ntmp,1024);
    684686#endif
    685   r_inputs=getMapOrFill(request_inputs,"metapath","");
     687  r_inputs=getMapOrFill(&request_inputs,"metapath","");
    686688
    687689
     
    783785    freeMaps(&m);
    784786    free(m);
     787    if(request_inputs!=NULL){
     788      freeMap(&request_inputs);
     789      free(request_inputs);
     790    }
    785791    return 1;
    786792  }
     
    972978            setMapInMaps(m,"lenv","level","0");
    973979          }
     980          free(corig);
    974981         
    975982          memset(buff,0,256);
     
    13951402#endif
    13961403                {
    1397                   if(loadRemoteFile(m,tmpmaps->content,hInternet,tmpx2)<0){
     1404                  if(loadRemoteFile(&m,&tmpmaps->content,hInternet,tmpx2)<0){
    13981405                    freeMaps(&m);
    13991406                    free(m);
     
    15571564                  if(!(ltmp!=NULL && strncmp(ltmp->value,"POST",4)==0)
    15581565                     && CHECK_INET_HANDLE(hInternet)){
    1559                     if(loadRemoteFile(m,tmpmaps->content,hInternet,(char*)val)!=0){
     1566                    if(loadRemoteFile(&m,&tmpmaps->content,hInternet,(char*)val)!=0){
    15601567                      freeMaps(&m);
    15611568                      free(m);
  • trunk/zoo-project/zoo-services/gdal/profile/cgi-env/GdalExtractProfile.zcfg

    r106 r471  
    66 statusSupported = true
    77 serviceType = C
    8  serviceProvider = gdal_profile_service.zo
     8 serviceProvider = profile_service.zo
    99 <MetaData>
    1010   title = My Demo
  • trunk/zoo-project/zoo-services/qrencode/Makefile

    r385 r471  
    55
    66cgi-env/qrencode.zo: qrenc-service.c
    7         g++ -DZOO_SERVICE_PROVIDER ${CFLAGS} -shared -fpic -o cgi-env/qrencode.zo ./qrenc-service.c -lqrencode ${GDAL_LIBS} ${MACOS_LD_FLAGS}
     7        g++ -DZOO_SERVICE_PROVIDER ${CFLAGS} -shared -fpic -o cgi-env/qrencode.zo ./qrenc-service.c -lqrencode ${GDAL_LIBS} -lpng ${MACOS_LD_FLAGS}
    88
    99clean:
  • trunk/zoo-project/zoo-services/qrencode/cgi-env/QREncode.zcfg

    r385 r471  
    2929   <LiteralData>
    3030    dataType = string
    31     <Default />
     31    <Default>
     32     value=000000
     33    </Default>
    3234   </LiteralData>
    3335  [bgcolor]
     
    3840   <LiteralData>
    3941    dataType = string
    40     <Default />
     42    <Default>
     43     value=ffffff
     44    </Default>
    4145   </LiteralData>
    4246  [size]
     
    4751   <LiteralData>
    4852    dataType = integer
    49     <Default />
     53    <Default>
     54     value=3
     55    </Default>
    5056   </LiteralData>
    5157 </DataInputs>
  • trunk/zoo-project/zoo-services/utils/status/service.c

    r467 r471  
    104104       */
    105105      char *tmpStr=getStatus(atoi(tmpMap->value));
     106      fprintf(stderr,"DEBUG: %s \n",tmpStr);
    106107      if(tmpStr!=NULL && strncmp(tmpStr,"-1",2)!=0){
    107108        char *tmpStr1=strdup(tmpStr);
     
    121122        setMapInMaps(outputs,"Result","value",(char*)xmlbuff);
    122123        xmlFree(xmlbuff);
    123         free(tmpStr);
    124124        free(tmpStr1);
    125125        free(tmpStr0);
     
    154154    int i=0;
    155155    while(i<100){
    156       char tmp[4];
    157156      char message[10];
    158       sprintf(tmp,"%i",i);
    159       map* tmpMap=NULL;
    160       tmpMap=getMapFromMaps(conf,"lenv","sid");
    161       if(tmpMap!=NULL)
    162         fprintf(stderr,"Status %s %s\n",tmpMap->value,tmp);
    163157      sprintf(message,"Step %d",i);
    164       setMapInMaps(conf,"lenv","status",tmp);
    165       setMapInMaps(conf,"lenv","message",message);
    166       updateStatus(conf);
     158      updateStatus(conf,i,message);
    167159#ifndef WIN32
    168160      sleep(1);
     
    172164      i+=5;
    173165    }
    174     setMapInMaps(outputs,"Result","value","\"Running long process successfully\"");
     166    setOutputValue(outputs,"Result","\"Long process run successfully\"",-1);
    175167    return SERVICE_SUCCEEDED;
    176168  }
Note: See TracChangeset for help on using the changeset viewer.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png