Changeset 890


Ignore:
Timestamp:
Jan 9, 2019, 4:11:59 PM (2 years ago)
Author:
djay
Message:

Make this ZOO-Kernel working properly on windows platform again.

Location:
branches/prototype-v0/zoo-project/zoo-kernel
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • branches/prototype-v0/zoo-project/zoo-kernel/caching.c

    r888 r890  
    4949  for(i = 0; i < len; i++){
    5050    if(i>0){
    51       char *tmp=strdup(fresult);
     51      char *tmp=zStrdup(fresult);
    5252      sprintf(fresult,"%s%02x", tmp,result[i]);
    5353      free(tmp);
     
    7373  int bytes;
    7474  int dlen=65536;
    75   unsigned char data[dlen+1];
     75  unsigned char data[65537];
    7676  FILE *inFile = fopen (file, "rb");
    7777  EVP_DigestInit(md5ctx, EVP_md5());
     
    356356 */
    357357char* isInCache(maps* conf,char* request){
     358  map* tmpUrl=getMapFromMaps(conf,"main","tmpUrl");
    358359  map* tmpM=getMapFromMaps(conf,"main","cacheDir");
    359   if(tmpM!=NULL){
    360     if(strncasecmp(request,"file://",7)==0){
    361       char* tmpStr=zStrdup(request+7);
    362       fprintf(stderr,"**** %s %d %s \n",__FILE__,__LINE__,tmpStr);
    363       return tmpStr;
    364     }
    365     else{
    366       char* myRequest=getFilenameForRequest(conf,request);
    367       char* md5str=getMd5(myRequest);
    368       free(myRequest);
    369 #ifdef DEBUG
    370       fprintf(stderr,"MD5STR : (%s)\n\n",md5str);
    371 #endif
    372       char* fname=(char*)malloc(sizeof(char)*(strlen(tmpM->value)+strlen(md5str)+6));
    373       sprintf(fname,"%s/%s.zca",tmpM->value,md5str);
    374       struct stat f_status;
    375       int s=stat(fname, &f_status);
    376       if(s==0 && f_status.st_size>0){
    377         free(md5str);
    378         return fname;
    379       }
     360  if(tmpM==NULL)
     361    tmpM=getMapFromMaps(conf,"main","tmpPath");
     362  if(strstr(request,tmpUrl->value)!=NULL){
     363    map* tmpPath=getMapFromMaps(conf,"main","tmpPath");
     364    char* tmpStr=strstr(request,tmpUrl->value);
     365    char* tmpStr1=zStrdup(tmpStr+strlen(tmpUrl->value));
     366    char* res=(char*) malloc((strlen(tmpPath->value)+strlen(tmpStr1)+2)*sizeof(char));
     367    sprintf(res,"%s/%s",tmpPath->value,tmpStr1);
     368    free(tmpStr1);
     369    return res;
     370  }
     371#ifdef MS_FORCE_LOCAL_FILE_USE
     372  map* msUrl=getMapFromMaps(conf,"main","mapserverAddress");
     373  if(msUrl!=NULL && strstr(request,msUrl->value)!=NULL){
     374    char *tmpStr=strstr(request,"?");
     375    char *cursor=zStrdup(tmpStr+1);
     376    char *token, *saveptr;
     377    token = strtok_r (cursor, "&", &saveptr);
     378    while(token!=NULL){
     379      char *token1, *saveptr1;
     380      token1 = strtok_r (token, "=", &saveptr1);
     381      char *name=NULL;
     382      while(token1!=NULL){
     383        if(name==NULL)
     384          name=zStrdup(token1);
     385        else
     386          if(strcasecmp(name,"map")==0){
     387            mapObj *myMap=msLoadMap(token1,NULL);
     388            char * res=zStrdup(myMap->layers[0]->data);
     389            free(name);
     390            free(cursor);
     391            msFreeMap(myMap);
     392            return res;
     393          }
     394        token1 = strtok_r (NULL, "=", &saveptr1);
     395      }
     396      token = strtok_r (NULL, "&", &saveptr);
     397    }
     398    free(cursor);
     399  }
     400#endif 
     401  if(strncasecmp(request,"file://",7)==0){
     402    char* tmpStr=zStrdup(request+7);
     403    fprintf(stderr,"**** %s %d %s \n",__FILE__,__LINE__,tmpStr);
     404    return tmpStr;
     405  }
     406  else{
     407    char* myRequest=getFilenameForRequest(conf,request);
     408    char* md5str=getMd5(myRequest);
     409    free(myRequest);
     410#ifdef DEBUG
     411    fprintf(stderr,"MD5STR : (%s)\n\n",md5str);
     412#endif
     413    char* fname=(char*)malloc(sizeof(char)*(strlen(tmpM->value)+strlen(md5str)+6));
     414    sprintf(fname,"%s/%s.zca",tmpM->value,md5str);
     415    zStatStruct f_status;
     416    int s=zStat(fname, &f_status);
     417    if(s==0 && f_status.st_size>0){
    380418      free(md5str);
    381       free(fname);
    382     }
     419      return fname;
     420    }
     421    free(md5str);
     422    free(fname);
    383423  }
    384424  return NULL;
     
    609649 */
    610650void addRequestToQueue(maps** m,HINTERNET* hInternet,const char* url,bool req){
    611   hInternet->waitingRequests[hInternet->nb]=strdup(url);
     651  hInternet->waitingRequests[hInternet->nb]=zStrdup(url);
    612652  if(req)
    613653    InternetOpenUrl(hInternet,hInternet->waitingRequests[hInternet->nb],NULL,0,INTERNET_FLAG_NO_CACHE_WRITE,0,*m);
     
    648688
    649689  if(cached!=NULL){
    650     struct stat f_status;
    651     int s=stat(cached, &f_status);
     690    zStatStruct f_status;
     691    int s=zStat(cached, &f_status);
    652692    if(s==0){
    653693      zooLock* lck=lockFile(*m,cached,'r');
     
    668708    }
    669709    cached[strlen(cached)-1]='m';
    670     s=stat(cached, &f_status);
     710    s=zStat(cached, &f_status);
    671711    if(s==0){
    672712      zooLock* lck=lockFile(*m,cached,'r');
     
    681721    }
    682722    cached[strlen(cached)-1]='p';
    683     s=stat(cached, &f_status);
     723    s=zStat(cached, &f_status);
    684724    if(s==0){
    685725      zooLock* lck=lockFile(*m,cached,'r');
     
    728768    addToMap(*content,"isCached","true");
    729769    map* tmp=getMapFromMaps(*m,"main","cacheDir");
    730     if(tmp!=NULL){
     770    map* tmp1=getMap((*content),"cache_file");
     771    if(tmp!=NULL && tmp1==NULL){
    731772      map *c=getMap((*content),"xlink:href");
    732773      if(strncasecmp(c->value,"file://",7)!=0){
  • branches/prototype-v0/zoo-project/zoo-kernel/request_parser.c

    r880 r890  
    154154      addToMap(cursor->content,"base64_value",tmp->value);
    155155      int size=0;
    156       char *s=strdup(tmp->value);
     156      char *s=zStrdup(tmp->value);
    157157      free(tmp->value);
    158158      tmp->value=base64d(s,strlen(s),&size);
     
    174174          addToMap(cursor->content,key,tmp->value);
    175175          int size=0;
    176           char *s=strdup(tmp->value);
     176          char *s=zStrdup(tmp->value);
    177177          free(tmp->value);
    178178          tmp->value=base64d(s,strlen(s),&size);
     
    795795#endif
    796796                                bInternet.waitingRequests[0] =
    797                                   strdup ((char *) val);
     797                                  zStrdup ((char *) val);
    798798                                res1 =
    799799                                  InternetOpenUrl (&bInternet,
     
    18061806#endif
    18071807                  targetFile =
    1808                     open (storageNameOnServer, O_RDWR | O_CREAT | O_TRUNC,
     1808                    zOpen (storageNameOnServer, O_RDWR | O_CREAT | O_TRUNC,
    18091809                          S_IRWXU | S_IRGRP | S_IROTH);
    18101810                  if (targetFile < 0)
     
    18261826                  addToMap (tmpReqI->content, "lref", storageNameOnServer);
    18271827                  cgiFormFileClose (file);
    1828                   close (targetFile);
     1828                  zClose (targetFile);
    18291829                  free(fileNameOnServer);
    18301830                  free(storageNameOnServer);
  • branches/prototype-v0/zoo-project/zoo-kernel/response_print.c

    r888 r890  
    7979    }
    8080    if(prefix!=NULL){
    81       char* tmp0=strdup(serv->name);
     81      char* tmp0=zStrdup(serv->name);
    8282      free(serv->name);
    8383      serv->name=(char*)malloc((strlen(prefix)+strlen(tmp0)+1)*sizeof(char));
     
    183183    nbNs++;
    184184    currId=0;
    185     nsName[currId]=strdup(name);
     185    nsName[currId]=zStrdup(name);
    186186    usedNs[currId]=xmlNewNs(nr,BAD_CAST url,BAD_CAST name);
    187187  }else{
     
    190190      nbNs++;
    191191      currId=nbNs-1;
    192       nsName[currId]=strdup(name);
     192      nsName[currId]=zStrdup(name);
    193193      usedNs[currId]=xmlNewNs(nr,BAD_CAST url,BAD_CAST name);
    194194    }
     
    255255  if(soap!=NULL && strcasecmp(soap->value,"true")==0){
    256256    int lNbNs=nbNs;
    257     nsName[lNbNs]=strdup("soap");
     257    nsName[lNbNs]=zStrdup("soap");
    258258    usedNs[lNbNs]=xmlNewNs(NULL,BAD_CAST "http://www.w3.org/2003/05/soap-envelope",BAD_CAST "soap");
    259259    nbNs++;
    260260    xmlNodePtr nr = xmlNewNode(usedNs[lNbNs], BAD_CAST "Envelope");
    261     nsName[nbNs]=strdup("soap");
     261    nsName[nbNs]=zStrdup("soap");
    262262    usedNs[nbNs]=xmlNewNs(nr,BAD_CAST "http://www.w3.org/2003/05/soap-envelope",BAD_CAST "soap");
    263263    nbNs++;
    264     nsName[nbNs]=strdup("xsi");
     264    nsName[nbNs]=zStrdup("xsi");
    265265    usedNs[nbNs]=xmlNewNs(nr,BAD_CAST "http://www.w3.org/2001/XMLSchema-instance",BAD_CAST "xsi");
    266266    nbNs++;
     
    594594    map* tmp=getMap(toto1->content,"serverAddress");
    595595    if(tmp!=NULL){
    596       SERVICE_URL = strdup(tmp->value);
     596      SERVICE_URL = zStrdup(tmp->value);
    597597    }
    598598    else
    599       SERVICE_URL = strdup("not_defined");
     599      SERVICE_URL = zStrdup("not_defined");
    600600  }
    601601  else
    602     SERVICE_URL = strdup("not_defined");
     602    SERVICE_URL = zStrdup("not_defined");
    603603
    604604  for(j=0;j<nbSupportedRequests;j++){
     
    12691269            while(token!=NULL){
    12701270              nc7 = xmlNewNode(ns_ows, BAD_CAST "Value");
    1271               char *tmps=strdup(token);
     1271              char *tmps=zStrdup(token);
    12721272              tmps[strlen(tmps)]=0;
    12731273              nc8 = xmlNewText(BAD_CAST tmps);
     
    17461746      while(cursor!=NULL){
    17471747        elements* ccursor=cursor;
    1748         char* tmp=strdup(ccursor->name);
     1748        char* tmp=zStrdup(ccursor->name);
    17491749        free(ccursor->name);
    17501750        ccursor->name=(char*)malloc((strlen(tmp)+strlen(e->name)+2)*sizeof(char));
     
    26712671      else
    26722672        sprintf(session_file_path,"%s",strstr(_tmp->value,"=")+1);
    2673       sessId=strdup(session_file_path);
     2673      sessId=zStrdup(session_file_path);
    26742674    }else{
    26752675      maps* t=getMaps(m,"senv");
     
    26772677      while(p!=NULL){
    26782678        if(strstr(p->name,"ID")!=NULL){
    2679           sessId=strdup(p->value);
     2679          sessId=zStrdup(p->value);
    26802680          break;
    26812681        }
  • branches/prototype-v0/zoo-project/zoo-kernel/server_internal.c

    r862 r890  
    367367 */
    368368void readGeneratedFile(maps* m,map* content,char* filename){
     369  char rsize[1024];
    369370  FILE * file=fopen(filename,"rb");
    370371  if(file==NULL){
     
    374375  fseek(file, 0, SEEK_END);
    375376  long count = ftell(file);
     377  sprintf(rsize,"%lld",ftell(file));
    376378  rewind(file);
    377   struct stat file_status;
    378   stat(filename, &file_status);
    379379  if(getMap(content,"storage")==NULL){
    380380    map* tmpMap1=getMap(content,"value");
     
    391391    tmpMap1->value[count]=0;
    392392  }
    393   fclose(file);
    394   char rsize[1000];
    395   sprintf(rsize,"%ld",count);
     393  fclose(file); 
    396394  addToMap(content,"size",rsize);
    397395}
     
    760758              map* tmpV=getMap(tmpI->content,"value");
    761759              if(tmpV!=NULL){
    762                 char *tmpVS=strdup(tmpV->value);
     760                char *tmpVS=zStrdup(tmpV->value);
    763761                map* tmp=parseBoundingBox(tmpVS);
    764762                free(tmpVS);
     
    797795              map* length=getMap(tmpMaps->content,"length");
    798796              int i;
    799               char *tcn=strdup(tmpContent->name);
     797              char *tcn=zStrdup(tmpContent->name);
    800798              for(i=1;i<atoi(length->value);i++){
    801799#ifdef DEBUG
     
    10071005          char* tmpStr=_getStatus(conf,pid);
    10081006          if(tmpStr!=NULL && strncmp(tmpStr,"-1",2)!=0){
    1009             char *tmpStr1=strdup(tmpStr);
    1010             char *tmpStr0=strdup(strstr(tmpStr,"|")+1);
     1007            char *tmpStr1=zStrdup(tmpStr);
     1008            char *tmpStr0=zStrdup(strstr(tmpStr,"|")+1);
    10111009            free(tmpStr);
    10121010            tmpStr1[strlen(tmpStr1)-strlen(tmpStr0)-1]='\0';
     
    10431041          char* tmpStr=_getStatus(conf,pid);
    10441042          if(tmpStr!=NULL && strncmp(tmpStr,"-1",2)!=0){
    1045             char *tmpStr1=strdup(tmpStr);
    1046             char *tmpStr0=strdup(strstr(tmpStr,"|")+1);
     1043            char *tmpStr1=zStrdup(tmpStr);
     1044            char *tmpStr0=zStrdup(strstr(tmpStr,"|")+1);
    10471045            free(tmpStr);
    10481046            tmpStr1[strlen(tmpStr1)-strlen(tmpStr0)-1]='\0';
  • branches/prototype-v0/zoo-project/zoo-kernel/service.c

    r881 r890  
    759759  map* toload=getMap(in,"to_load");
    760760  if(toload!=NULL && strcasecmp(toload->value,"false")==0){
     761#ifdef DEBUG
    761762    fprintf(stderr,"NO LOAD %s %d \n",__FILE__,__LINE__);
     763#endif
    762764    return ;
    763765  }
  • branches/prototype-v0/zoo-project/zoo-kernel/service.h

    r881 r890  
    4343#define zStrdup _strdup
    4444#define zMkdir _mkdir
     45#define zGetpid _getpid
    4546#define zOpen _open
     47#define zClose _close
     48#define zUnlink _unlink
     49#define zDup _dup
     50#define zDup2 _dup2
    4651#define zWrite _write
    4752#define zSleep Sleep
     
    6570}
    6671
     72#define zStatStruct struct _stati64
     73#define zStat _stati64
     74
    6775#else
    6876/**
     
    7886 */
    7987#define zOpen open
     88/**
     89 * The crossplatform close alias
     90 */
     91#define zClose close
     92/**
     93 * The crossplatform unlink alias
     94 */
     95#define zUnlink unlink
     96/**
     97 * The crossplatform dup alias
     98 */
     99#define zDup dup
     100/**
     101 * The crossplatform dup2 alias
     102 */
     103#define zDup2 dup2
    80104/**
    81105 * The crossplatform write alias
     
    97121 */
    98122#define ztimeval timeval
     123/**
     124 * The crossplatform getpid alias
     125 */
     126#define zGetpid getpid
     127
     128#define zStatStruct struct stat64
     129#define zStat stat64
     130
    99131#endif
    100132
  • branches/prototype-v0/zoo-project/zoo-kernel/service_internal.c

    r877 r890  
    3131#include "service_internal.h"
    3232
    33 #ifndef TRUE
    34 #define TRUE 1
    35 #endif
    36 #ifndef FALSE
    37 #define FALSE -1
    38 #endif
    39 
    4033#ifdef WIN32
    41 // cf. https://stackoverflow.com/questions/3168504/lockfileex-read-write-upgrade-downgrade
    42 // only works for (SEEK_SET, start=0, len=0) file locking.
     34// ref. https://docs.microsoft.com/en-us/windows/desktop/fileio/locking-and-unlocking-byte-ranges-in-files
    4335__inline int fcntl(int fd, int cmd, ...)
    4436{
    45     va_list a;
    46     va_start(a, cmd);
    47     switch(cmd)
     37  va_list a;
     38  va_start(a, cmd);
     39  switch(cmd)
    4840    {
    4941    case F_SETLK:
    50         {
    51             struct flock *l = va_arg(a, struct flock*);
    52             switch(l->l_type)
    53             {
    54             case F_RDLCK:
    55                 {
    56                     LPOVERLAPPED o = { 0 };
    57                     HANDLE h = (HANDLE)_get_osfhandle(fd);
    58                     if (l->l_whence != SEEK_SET || l->l_start != 0 || l->l_len != 0)
    59                     {
    60                         _set_errno(ENOTSUP);
    61                         return -1;
    62                     }
    63                     if (!LockFileEx(h, LOCKFILE_FAIL_IMMEDIATELY, 0, 0, 1, o)) // read lock
    64                     {
    65                         unsigned long x = GetLastError();
    66                         _set_errno(GetLastError() == ERROR_LOCK_VIOLATION ? EAGAIN : EBADF);
    67                         return -1;
    68                     }
    69                     UnlockFile(h, 0, 0, 1, 1); // write lock
    70                 }
    71                 break;
    72             case F_WRLCK:
    73                 {
    74                     LPOVERLAPPED o = { 0 };
    75                     HANDLE h = (HANDLE)_get_osfhandle(fd);
    76                     if (l->l_whence != SEEK_SET || l->l_start != 0 || l->l_len != 0)
    77                     {
    78                         _set_errno(ENOTSUP);
    79                         return -1;
    80                     }
    81                     if (!LockFileEx(h, LOCKFILE_FAIL_IMMEDIATELY|LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 1, o)) // write lock
    82                     {
    83                         unsigned long x = GetLastError();
    84                         _set_errno(GetLastError() == ERROR_LOCK_VIOLATION ? EAGAIN : EBADF);
    85                         return -1;
    86                     }
    87                     UnlockFile(h, 0, 0, 0, 1); // read lock
    88                 }
    89                 break;
    90             case F_UNLCK:
    91                 {
    92                     HANDLE h = (HANDLE)_get_osfhandle(fd);
    93                     if (l->l_whence != SEEK_SET || l->l_start != 0 || l->l_len != 0)
    94                     {
    95                         _set_errno(ENOTSUP);
    96                         return -1;
    97                     }
    98                     UnlockFile(h, 0, 0, 0, 1); // read lock
    99                     UnlockFile(h, 0, 0, 1, 1); // write lock
    100                 }
    101                 break;
    102             default:
    103                 _set_errno(ENOTSUP);
    104                 return -1;
    105             }
    106         }
    107         break;
    108     case F_SETLKW:
    109         {
    110             struct flock *l = va_arg(a, struct flock*);
    111             switch(l->l_type)
    112             {
    113             case F_RDLCK:
    114                 {
    115                     LPOVERLAPPED o = { 0 };
    116                     HANDLE h = (HANDLE)_get_osfhandle(fd);
    117                     if (l->l_whence != SEEK_SET || l->l_start != 0 || l->l_len != 0)
    118                     {
    119                         _set_errno(ENOTSUP);
    120                         return -1;
    121                     }
    122                     if(!LockFileEx(h, 0, 0, 0, 1, o)) // read lock
    123                     {
    124                         unsigned long x = GetLastError();
    125                         return -1;
    126                     }
    127                     UnlockFile(h, 0, 0, 1, 1); // write lock
    128                 }
    129                 break;
    130             case F_WRLCK:
    131                 {
    132                     LPOVERLAPPED o = { 0 };
    133                     HANDLE h = (HANDLE)_get_osfhandle(fd);
    134                     if (l->l_whence != SEEK_SET || l->l_start != 0 || l->l_len != 0)
    135                     {
    136                         _set_errno(ENOTSUP);
    137                         return -1;
    138                     }
    139                     if (!LockFileEx(h, LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 1, o)) // write lock
    140                     {
    141                         unsigned long x = GetLastError();
    142                         return -1;
    143                     }
    144                     UnlockFile(h, 0, 0, 0, 1); // read lock
    145                 }
    146                 break;
    147             case F_UNLCK:
    148                 {
    149                     flock *l = va_arg(a, flock*);
    150                     HANDLE h = (HANDLE)_get_osfhandle(fd);
    151                     if (l->l_whence != SEEK_SET || l->l_start != 0 || l->l_len != 0)
    152                     {
    153                         _set_errno(ENOTSUP);
    154                         return -1;
    155                     }
    156                     UnlockFile(h, 0, 0, 0, 1); // read lock
    157                     UnlockFile(h, 0, 0, 1, 1); // write lock
    158                 }
    159                 break;
    160             default:
    161                 _set_errno(ENOTSUP);
    162                 return -1;
    163             }
    164         }
    165         break;
     42      {
     43        HANDLE h = (HANDLE)_get_osfhandle(fd);
     44        struct flock* l= va_arg(a, struct flock*);
     45        OVERLAPPED sOverlapped;
     46        sOverlapped.Offset = 0;
     47        sOverlapped.OffsetHigh = 0;
     48        switch(l->l_type)
     49          {
     50          case F_RDLCK:
     51            {
     52              if (!LockFileEx(h, LOCKFILE_FAIL_IMMEDIATELY, 0, l->l_len, 0, &sOverlapped))
     53                {
     54                  _set_errno(GetLastError() == ERROR_LOCK_VIOLATION ? EAGAIN : EBADF);
     55                  return -1;
     56                }
     57            }
     58            break;
     59          case F_WRLCK:
     60            {
     61              if (!LockFileEx(h, LOCKFILE_FAIL_IMMEDIATELY|LOCKFILE_EXCLUSIVE_LOCK, 0, l->l_len, 0, &sOverlapped))
     62                {
     63                  _set_errno(GetLastError() == ERROR_LOCK_VIOLATION ? EAGAIN : EBADF);
     64                  return -1;
     65                }
     66            }
     67            break;
     68          case F_UNLCK:
     69            {
     70              UnlockFileEx(h, 0, l->l_len, 0, &sOverlapped);
     71            }
     72            break;
     73          default:
     74            _set_errno(ENOTSUP);
     75            return -1;
     76          }
     77      }
     78      break;
    16679    default:
    167         _set_errno(ENOTSUP);
    168         return -1;
    169     }
    170 
    171     return 0;
    172 }
    173 #endif
    174 
     80      _set_errno(ENOTSUP);
     81      return -1;
     82    }
     83  return 0;
     84}
     85#endif
    17586#define ERROR_MSG_MAX_LENGTH 1024
    17687
     
    197108    if(itn<ZOO_LOCK_MAX_RETRY){
    198109      itn++;
    199       fprintf(stderr,"(%d) Wait for write lock on %s, tried %d times (sleep) ... \n",getpid(),myLock->filename,itn);
     110#ifdef DEBUG
     111      fprintf(stderr,"(%d) Wait for write lock on %s, tried %d times (sleep) ... \n",zGetpid(),myLock->filename,itn);
    200112      fflush(stderr);
     113#endif
    201114      zSleep(5);
    202115      free(myLock->filename);
     
    216129    myLock->lockfile=fopen(myLock->filename,local_mode);
    217130    char tmp[512];
    218     sprintf(tmp,"%d",getpid());
     131    sprintf(tmp,"%d",zGetpid());
    219132    if(myLock->lockfile==NULL){
    220133      myLock->lockfile=fopen(myLock->filename,"w+");
     
    249162            return NULL;
    250163          }
    251           fprintf(stderr,"(%d) Wait for lock on  %s, tried %d times ... \n",getpid(),myLock->filename,cnt);
     164#ifdef DEBUG
     165          fprintf(stderr,"(%d) Wait for lock on  %s, tried %d times ... \n",zGetpid(),myLock->filename,cnt);
    252166          fflush(stderr);
     167#endif
    253168          zSleep(1);
    254169          cnt++;
     
    265180        else
    266181          tmp="The system has run out of file lock resources; there are already too many file locks in place.";
     182#ifdef DEBUG
    267183      fprintf(stderr,"Unable to get the lock on %s due to the following error: %s\n",myLock->filename,tmp);
     184#endif
    268185      return NULL;
    269186    }
     
    285202    if(res==-1)
    286203      return res;
     204    fclose(s->lockfile);
     205#ifndef WIN32
    287206    // Check if there is any process locking a file and delete the lock if not.
    288207    s->lock.l_type = F_WRLCK;
    289208    if(fcntl(fileno(s->lockfile), F_GETLK, &s->lock)!=-1 && s->lock.l_type == F_UNLCK){
    290       unlink(s->filename);
    291     }
    292     fclose(s->lockfile);
     209#endif
     210      zUnlink(s->filename);
     211#ifndef WIN32
     212    }
     213#endif
    293214    free(s->filename);
    294215    free(s);
     
    507428                     * sizeof (char));
    508429  sprintf (fbkpid, "%s/%s.status", r_inputs->value, usid->value);
    509   unlink(fbkpid);
     430  zUnlink(fbkpid);
    510431  free(fbkpid);
    511432}
  • branches/prototype-v0/zoo-project/zoo-kernel/service_internal_ms.c

    r888 r890  
    11621162      char tmpMm[100],tmpMp[100];
    11631163      sprintf(tmpMm,"%.3f %.3f",pdfMin,pdfMax);
    1164       sprintf(tmpMp,"SCALE_%d=%.3f,%.3f",iBand+1,pdfMean-(2*pdfStdDev),pdfMean+(2*pdfStdDev));
     1164      if(pdfMin!=pdfMax)
     1165        sprintf(tmpMp,"SCALE_%d=%.3f,%.3f",iBand+1,pdfMean-(2*pdfStdDev),pdfMean+(2*pdfStdDev));
     1166      /*else
     1167        sprintf(tmpMp,"SCALE_%d=%.3f,%.3f",iBand+1,pdfMin,pdfMax);*/
    11651168      char tmpI[31];     
    11661169      sprintf(tmpI,"%s_interval",tmpN);
  • branches/prototype-v0/zoo-project/zoo-kernel/service_internal_python.c

    r863 r890  
    201201  char* toto=(char*)malloc((strlen(pythonpath)+12)*sizeof(char));
    202202  sprintf(toto,"PYTHONPATH=%s",pythonpath);
    203   putenv(toto);
     203  _putenv(toto);
    204204  free(toto);
    205205#endif
  • branches/prototype-v0/zoo-project/zoo-kernel/sqlapi.c

    r865 r890  
    419419    for( int iField = 0; iField < poFeature->GetFieldCount(); iField++ ){
    420420      if( poFeature->IsFieldSet( iField ) ){
    421         tmp1=strdup(poFeature->GetFieldAsString( iField ));
     421        tmp1=zStrdup(poFeature->GetFieldAsString( iField ));
    422422      }
    423423      else
     
    463463        for( int iField = 0; iField < poFeature->GetFieldCount(); iField++ ){
    464464          if( poFeature->IsFieldSet( iField ) ){
    465             tmp1=strdup(poFeature->GetFieldAsString( iField ));
     465            tmp1=zStrdup(poFeature->GetFieldAsString( iField ));
    466466            hasRes=1;
    467467          }
  • branches/prototype-v0/zoo-project/zoo-kernel/sshapi.c

    r888 r890  
    161161    if (hpc_public_key != NULL) {
    162162      public_key = hpc_public_key->value;
    163       private_key = strdup(hpc_public_key->value);
     163      private_key = zStrdup(hpc_public_key->value);
    164164      private_key[strlen(public_key)-4]=0;
    165165    }else{
  • branches/prototype-v0/zoo-project/zoo-kernel/ulinet.c

    r871 r890  
    238238  HINTERNET ret;
    239239  ret.handle=curl_multi_init();
    240   ret.agent=strdup(lpszAgent);
     240  ret.agent=zStrdup(lpszAgent);
    241241  ret.nb=0;
    242242  ret.waitingRequests[ret.nb] = NULL;
     
    269269char* getProvenance(maps* conf,const char* url){
    270270  map* sharedCache=getMapFromMaps(conf,"security","shared");
     271  char *res="OTHER";
     272  char *paths[2]={
     273    "mapserverAddress",
     274    "tmpUrl"
     275  };
    271276  if(sharedCache!=NULL){
    272     char *res=NULL;
    273277    char *hosts=sharedCache->value;
    274278    char *curs=strtok(hosts,",");
    275279    while(curs!=NULL){
    276       if(strstr(url,curs)==NULL)
    277         res="OTHER";
    278       else{
    279         res="SHARED";
    280         return res;
     280      if(strstr(url,curs)==NULL){
     281        return "SHARED";
    281282      }
    282283      curs=strtok(NULL,",");
    283284    }
    284     return res;
    285   }
    286   return "OTHER";
     285  }
     286  for(int i=0;i<2;i++){
     287    sharedCache=getMapFromMaps(conf,"main",paths[i]);
     288    if(sharedCache!=NULL){
     289      if(strstr(url,sharedCache->value)!=NULL){
     290        return "LOCAL";
     291      }
     292    }
     293  }
     294  return res;
    287295}
    288296
     
    482490#endif
    483491
    484   if(memUse!=NULL && strcasecmp(memUse->value,"load")==0)
     492  if(memUse==NULL || strcasecmp(memuse->value,"load")==0)
    485493    ldwFlags=INTERNET_FLAG_NO_CACHE_WRITE;
    486494 
     
    502510        sprintf(filename,"/tmp/ZOO_Cache%s", tmpUuid);
    503511      else
    504         sprintf(filename,"/%s/ZOO_Cache%s", tmpPath->value,tmpUuid);
     512        sprintf(filename,"%s/ZOO_Cache%s", tmpPath->value,tmpUuid);
    505513      free(tmpUuid);
    506       hInternet->ihandle[hInternet->nb].filename=strdup(filename);
     514      hInternet->ihandle[hInternet->nb].filename=zStrdup(filename);
    507515      hInternet->ihandle[hInternet->nb].file=fopen(hInternet->ihandle[hInternet->nb].filename,"w+");
    508516      hInternet->ihandle[hInternet->nb].hasCacheFile=1;
     
    524532    curl_easy_setopt(hInternet->ihandle[hInternet->nb].handle,CURLOPT_VERBOSE,1);
    525533#endif
    526     hInternet->ihandle[hInternet->nb].post=strdup(lpszHeaders);
     534    hInternet->ihandle[hInternet->nb].post=zStrdup(lpszHeaders);
    527535    curl_easy_setopt(hInternet->ihandle[hInternet->nb].handle,CURLOPT_POSTFIELDS,hInternet->ihandle[hInternet->nb].post);
    528536    curl_easy_setopt(hInternet->ihandle[hInternet->nb].handle,CURLOPT_POSTFIELDSIZE,(long)dwHeadersLength);
     
    602610    curl_easy_getinfo(hInternet->ihandle[i].handle,CURLINFO_CONTENT_TYPE,&tmp);
    603611    if(tmp!=NULL)
    604       hInternet->ihandle[i].mimeType=strdup(tmp);
     612      hInternet->ihandle[i].mimeType=zStrdup(tmp);
    605613    curl_easy_getinfo(hInternet->ihandle[i].handle,CURLINFO_RESPONSE_CODE,&hInternet->ihandle[i].code);
    606614    curl_multi_remove_handle(hInternet->handle, hInternet->ihandle[i].handle);
     
    618626 */
    619627int freeCookieList(HINTERNET hInternet){
    620   hInternet.ihandle[hInternet.nb].cookie=strdup("");
     628  hInternet.ihandle[hInternet.nb].cookie=zStrdup("");
    621629#ifndef TIGER
    622630  curl_easy_setopt(hInternet.ihandle[hInternet.nb].handle, CURLOPT_COOKIELIST, "ALL");
  • branches/prototype-v0/zoo-project/zoo-kernel/zoo_service_loader.c

    r882 r890  
    340340              if (s1 == NULL)
    341341                {
    342                   dup2 (saved_stdout, fileno (stdout));
     342                  zDup2 (saved_stdout, fileno (stdout));
    343343                  errorException (m, _("Unable to allocate memory"),
    344344                                  "InternalError", NULL);
     
    361361                    sprintf (tmp01, _("Unable to parse the ZCFG file: %s."),
    362362                             dp->d_name);
    363                   dup2 (saved_stdout, fileno (stdout));
     363                  zDup2 (saved_stdout, fileno (stdout));
    364364                  errorException (m, tmp01, "InternalError", NULL);
    365365                  return -1;
     
    11011101      char tmp1[13];
    11021102      sprintf (tmp1, "LC_ALL=%s", tmp);
    1103       putenv (tmp1);
     1103      _putenv (tmp1);
    11041104#endif
    11051105      free (tmp);
     
    11131113      char tmp1[13];
    11141114      sprintf (tmp1, "LC_ALL=en_US");
    1115       putenv (tmp1);
     1115      _putenv (tmp1);
    11161116#endif
    11171117      setMapInMaps (m, "main", "language", "en-US");
     
    11231123  char tmp1[17];
    11241124  sprintf (tmp1, "LC_NUMERIC=C");
    1125   putenv (tmp1);
     1125  _putenv (tmp1);
    11261126#endif
    11271127  bind_textdomain_codeset ("zoo-kernel", "UTF-8");
     
    13061306  registry* zooRegistry=NULL;
    13071307  if(reg!=NULL){
    1308     int saved_stdout = dup (fileno (stdout));
    1309     dup2 (fileno (stderr), fileno (stdout));
     1308    int saved_stdout = zDup (fileno (stdout));
     1309    zDup2 (fileno (stderr), fileno (stdout));
    13101310    if(createRegistry (m,&zooRegistry,reg->value)<0){
    13111311      map *message=getMapFromMaps(m,"lenv","message");
    13121312      map *type=getMapFromMaps(m,"lenv","type");
    1313       dup2 (saved_stdout, fileno (stdout));
     1313      zDup2 (saved_stdout, fileno (stdout));
    13141314      errorException (m, message->value,
    13151315                      type->value, NULL);
    13161316      return 0;
    13171317    }
    1318     dup2 (saved_stdout, fileno (stdout));
    1319     close(saved_stdout);
     1318    zDup2 (saved_stdout, fileno (stdout));
     1319    zClose(saved_stdout);
    13201320  }
    13211321
     
    13311331       * has been found in the zcfg and then printed on stdout
    13321332       */
    1333       int saved_stdout = dup (fileno (stdout));
    1334       dup2 (fileno (stderr), fileno (stdout));
     1333      int saved_stdout = zDup (fileno (stdout));
     1334      zDup2 (fileno (stderr), fileno (stdout));
    13351335
    13361336      maps* imports = getMaps(m, IMPORTSERVICE);
     
    13711371        }
    13721372      fflush (stdout);
    1373       dup2 (saved_stdout, fileno (stdout));
     1373      zDup2 (saved_stdout, fileno (stdout));
    13741374#ifdef META_DB
    13751375      fetchServicesFromDb(zooRegistry,m,doc,n,printGetCapabilitiesForProcess,1);
    13761376      close_sql(m,0);
    13771377#endif     
    1378       printDocument (m, doc, getpid ());
     1378      printDocument (m, doc, zGetpid ());
    13791379      freeMaps (&m);
    13801380      free (m);
     
    14661466            char *orig = zStrdup (r_inputs->value);
    14671467
    1468             int saved_stdout = dup (fileno (stdout));
    1469             dup2 (fileno (stderr), fileno (stdout));
     1468            int saved_stdout = zDup (fileno (stdout));
     1469            zDup2 (fileno (stderr), fileno (stdout));
    14701470            if (strcasecmp ("all", orig) == 0)
    14711471              {
     
    15351535                                sprintf (tmp01, _("Unable to parse the ZCFG file: %s."), import->value);
    15361536                             
    1537                               dup2 (saved_stdout, fileno (stdout));
     1537                              zDup2 (saved_stdout, fileno (stdout));
    15381538                              errorException (m, tmp01, "InternalError", NULL);
    15391539                             
     
    16021602                                       ("Unable to parse the ZCFG file for the following ZOO-Service: %s."),
    16031603                                       tmps);
    1604                             dup2 (saved_stdout, fileno (stdout));
     1604                            zDup2 (saved_stdout, fileno (stdout));
    16051605                            errorException (m, tmp01, "InvalidParameterValue",
    16061606                                            "identifier");
     
    16741674                                  if (s1 == NULL)
    16751675                                    {
    1676                                       dup2 (saved_stdout, fileno (stdout));
     1676                                      zDup2 (saved_stdout, fileno (stdout));
    16771677                                      return errorException (m,
    16781678                                                             _
     
    17051705                                                 ("Unable to parse the ZCFG file: %s."),
    17061706                                                 dp->d_name);
    1707                                       dup2 (saved_stdout, fileno (stdout));
     1707                                      zDup2 (saved_stdout, fileno (stdout));
    17081708                                      errorException (m, tmp01, "InternalError",
    17091709                                                      NULL);
     
    17571757                                   _("Unable to parse the ZCFG file: %s."),
    17581758                                   buff);
    1759                         dup2 (saved_stdout, fileno (stdout));
     1759                        zDup2 (saved_stdout, fileno (stdout));
    17601760                        errorException (m, tmp01, "InvalidParameterValue",
    17611761                                        "Identifier");
     
    17821782            closedir (dirp);
    17831783            fflush (stdout);
    1784             dup2 (saved_stdout, fileno (stdout));
     1784            zDup2 (saved_stdout, fileno (stdout));
    17851785            free (orig);
    1786             printDocument (m, doc, getpid ());
     1786            printDocument (m, doc, zGetpid ());
    17871787            freeMaps (&m);
    17881788            free (m);
     
    19421942      }
    19431943
    1944     int saved_stdout = dup (fileno (stdout));
    1945     dup2 (fileno (stderr), fileno (stdout));
     1944    int saved_stdout = zDup (fileno (stdout));
     1945    zDup2 (fileno (stderr), fileno (stdout));
    19461946    t = readServiceFile (m, tmps1, &s1, r_inputs->value);
    19471947    fprintf(stderr,"%d %s %d",t,__FILE__,__LINE__);
     
    19581958    }
    19591959    fflush (stdout);
    1960     dup2 (saved_stdout, fileno (stdout));
     1960    zDup2 (saved_stdout, fileno (stdout));
    19611961    if (t < 0)
    19621962      {
     
    19751975        return 0;
    19761976      }
    1977     close (saved_stdout);
     1977    zClose (saved_stdout);
    19781978#ifdef META_DB
    19791979  }
     
    20582058                     2) * sizeof (char));
    20592059          sprintf (toto, "%s=%s", mapcs->name, mapcs->value);
    2060           putenv (toto);
     2060          _putenv (toto);
    20612061#ifdef DEBUG
    20622062          fflush (stderr);
     
    21552155
    21562156  int eres = SERVICE_STARTED;
    2157   int cpid = getpid ();
     2157  int cpid = zGetpid ();
    21582158
    21592159  // Create a map containing a copy of the request map
     
    22412241          if (istat == 0 && file_status.st_size > 0)
    22422242            {
    2243               int saved_stdout = dup (fileno (stdout));
    2244               dup2 (fileno (stderr), fileno (stdout));
     2243              int saved_stdout = zDup (fileno (stdout));
     2244              zDup2 (fileno (stderr), fileno (stdout));
    22452245              conf_read (session_file_path, tmpSess);
    22462246              addMapsToMaps (&m, tmpSess);
    22472247              freeMaps (&tmpSess);
    22482248              fflush(stdout);
    2249               dup2 (saved_stdout, fileno (stdout));
    2250               close(saved_stdout);
     2249              zDup2 (saved_stdout, fileno (stdout));
     2250              zClose(saved_stdout);
    22512251            }
    22522252          free (tmpSess);
     
    22712271
    22722272  _tmpMaps = createMaps("renv");
    2273   for (; s; ei++) {
     2273if(orig!=NULL)
     2274  for (;
     2275#ifdef WIN32
     2276       *s;
     2277       s++
     2278#else
     2279       s;
     2280       ei++
     2281#endif
     2282       ) {
    22742283    if(strstr(s,"=")!=NULL && strlen(strstr(s,"="))>1){
    22752284      int len=strlen(s);
     
    22852294      free(tmpName);
    22862295    }
    2287 #ifdef WIN32
    2288     s++;
    2289 #else
     2296#ifndef WIN32
    22902297    s = *(orig+ei);
    22912298#endif
     
    22972304  freeMaps (&_tmpMaps);
    22982305  free (_tmpMaps);
    2299  
     2306#ifdef WIN32
     2307  FreeEnvironmentStrings((LPCH)orig);
     2308#endif
    23002309  if(postRequest!=NULL)
    23012310    setMapInMaps (m, "renv", "xrequest", postRequest->value);
     
    23892398#ifdef DEBUG
    23902399          fprintf (stderr, "father pid continue (origin %d) %d ...\n", cpid,
    2391                    getpid ());
     2400                   zGetpid ());
    23922401#endif
    23932402          eres = SERVICE_ACCEPTED;
     
    24172426          bmap->content=createMap("usid",usid->value);
    24182427          addToMap(bmap->content,"sid",tmpm->value);
    2419           addIntToMap(bmap->content,"pid",getpid());
     2428          addIntToMap(bmap->content,"pid",zGetpid());
    24202429         
    24212430          // Create PID file referencing the OS process identifier
     
    24282437
    24292438          f0 = freopen (fbkpid, "w+",stdout);
    2430           printf("%d",getpid());
     2439          printf("%d",zGetpid());
    24312440          fflush(stdout);
    24322441
     
    24602469          fprintf (stderr, "RUN IN BACKGROUND MODE \n");
    24612470          fprintf (stderr, "son pid continue (origin %d) %d ...\n", cpid,
    2462                    getpid ());
     2471                   zGetpid ());
    24632472          fprintf (stderr, "\nFILE TO STORE DATA %s\n", r_inputs->value);
    24642473#endif
     
    25392548#endif
    25402549#endif
    2541             unlink (fbkpid);
     2550            zUnlink (fbkpid);
    25422551            unhandleStatus (m);
    25432552#ifdef RELY_ON_DB
     
    26172626#endif
    26182627
    2619   if (((int) getpid ()) != cpid || cgiSid != NULL)
     2628  if (((int) zGetpid ()) != cpid || cgiSid != NULL)
    26202629    {
    26212630      if (eres == SERVICE_SUCCEEDED)
     
    26332642      if(dumpBackFinalFile(m,fbkp,fbkp1)<0)
    26342643        return -1;
    2635       unlink (fbkpid);
     2644      zUnlink (fbkpid);
    26362645      switch(eres){
    26372646      default:
     
    26572666      freeMaps(&bmap);
    26582667      free(bmap);
    2659       unlink (fbkp1);
     2668      zUnlink (fbkp1);
    26602669      unhandleStatus (m);
    26612670#ifdef RELY_ON_DB
     
    26762685      fflush(stderr);
    26772686      fclose (stderr);
    2678       unlink (flog);
     2687      zUnlink (flog);
    26792688      free (flog);
    26802689    }
     
    27052714#endif
    27062715
    2707   if (((int) getpid ()) != cpid || cgiSid != NULL)
     2716  if (((int) zGetpid ()) != cpid || cgiSid != NULL)
    27082717    {
    27092718      exit (0);
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