Changeset 862 for branches/prototype-v0/zoo-project/zoo-services/utils
- Timestamp:
- Feb 1, 2018, 11:27:28 AM (7 years ago)
- Location:
- branches/prototype-v0/zoo-project/zoo-services/utils/hpc
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/prototype-v0/zoo-project/zoo-services/utils/hpc/service.c
r854 r862 2 2 * Author : Gérald FENOY 3 3 * 4 * Copyright 20 08-2009GeoLabs SARL. All rights reserved.4 * Copyright 2017 GeoLabs SARL. All rights reserved. 5 5 * 6 6 * This work was supported by public funds received in the framework of GEOSUD, -
branches/prototype-v0/zoo-project/zoo-services/utils/hpc/service2.c
r854 r862 2 2 * Author : Gérald FENOY 3 3 * 4 * Copyright 2008-2009 GeoLabs SARL. All rights reserved. 5 * 4 * Copyright 2017 GeoLabs SARL. All rights reserved. 5 * 6 * This work was supported by public funds received in the framework of GEOSUD, 7 * a project (ANR-10-EQPX-20) of the program "Investissements d'Avenir" managed 8 * by the French National Research Agency 9 * 6 10 * This work was supported by public funds received in the framework of GEOSUD, 7 11 * a project (ANR-10-EQPX-20) of the program "Investissements d'Avenir" managed … … 42 46 43 47 #include <dirent.h> 48 #include <string.h> 49 #include <cerrno> 50 44 51 extern "C" { 52 53 /** 54 * Retrieve the error message which occured when trying to remove a file 55 * (return values can be EACCES, EBUSY, EFAULT, EIO, EISDIR, ELOOP, 56 * ENAMETOOLONG, ENOENT, ENOMEM, ENOTDIR, EPERM, EROFS, UNKNOWN). 57 * 58 * @param errn 59 * @result a string corresponding to the error number 60 */ 61 char* fetchErrno(int errn){ 62 switch(errn){ 63 case EACCES: 64 return "EACCES"; 65 case EBUSY: 66 return "EBUSY"; 67 case EFAULT: 68 return "EFAULT"; 69 case EIO: 70 return "EIO"; 71 case EISDIR: 72 return "EISDIR"; 73 case ELOOP: 74 return "ELOOP"; 75 case ENAMETOOLONG: 76 return "ENAMETOOLONG"; 77 case ENOENT: 78 return "ENOENT"; 79 case ENOMEM: 80 return "ENOMEM"; 81 case ENOTDIR: 82 return "ENOTDIR"; 83 case EPERM: 84 return "EPERM"; 85 case EROFS: 86 return "EROFS"; 87 default: 88 return "UNKNOWN"; 89 } 90 } 45 91 46 92 /** … … 78 124 */ 79 125 int tryDeleteDataFile(const char* storage,const char* filename){ 80 char* fullpath=(char*)malloc((strlen(storage)+strlen(filename)+2)*sizeof(char)); 81 sprintf(fullpath,"%s/%s",storage,filename); 126 char* fullpath=NULL; 127 if(filename!=NULL){ 128 fullpath=(char*)malloc((strlen(storage)+strlen(filename)+2)*sizeof(char)); 129 sprintf(fullpath,"%s/%s",storage,filename); 130 } 131 else 132 fullpath=zStrdup(storage); 82 133 if(unlink(fullpath)==0){ 83 134 // TODO store the filename_full in the deletedfiles 84 fprintf(stderr,"#### DeleteData #### %s %d %s has been successfully deleted\n",__FILE__,__LINE__, filename);135 fprintf(stderr,"#### DeleteData #### %s %d %s has been successfully deleted\n",__FILE__,__LINE__,(strlen(filename)>0?filename:fullpath)); 85 136 }else{ 86 fprintf(stderr,"#### DeleteData #### unable to delete %s \n",fullpath);137 fprintf(stderr,"#### DeleteData #### unable to delete %s %s \n",fullpath,fetchErrno(errno)); 87 138 } 88 139 free(fullpath); … … 138 189 } 139 190 if(fcontent!=NULL && strcasecmp(fcontent,"SHARED")!=0){ 140 // Delete associated zcm and zcp191 // Delete associated zcm, zcp and maps files 141 192 tryDeleteCacheFile(cacheDir->value,filename->value,"zca"); 142 193 tryDeleteCacheFile(cacheDir->value,filename->value,"zcm"); 143 194 tryDeleteCacheFile(cacheDir->value,filename->value,"zcp"); 144 // Delete ZOO_DATA_<input>_<sid>.data and <input>_<sid>.map 195 tryDeleteCacheFile(tmpPath->value,filename->value,"maps"); 196 // Delete <input>_<sid>.map 145 197 char* datafile=(char*)malloc((strlen(jobid->value)+strlen(ioname->value)+19)*sizeof(char)); 146 sprintf(datafile,"ZOO_DATA_%s_%s.data",ioname->value,jobid->value);147 tryDeleteDataFile(dataPath->value,datafile);148 free(datafile);149 datafile=(char*)malloc((strlen(jobid->value)+strlen(ioname->value)+19)*sizeof(char));150 198 sprintf(datafile,"%s_%s.map",ioname->value,jobid->value); 151 199 tryDeleteDataFile(dataPath->value,datafile); … … 160 208 char tmp1[8]; 161 209 snprintf(tmp1,7,"%s",filename->value); 162 if(strcasecmp(tmp1,"output")==0){ 163 tryDeleteDataFile(tmpPath->value,filename->value); 210 if(strcasecmp(tmp1,"output")==0 || strcasecmp(tmp1,"input_")==0){ 211 trydeletedatafile(tmppath->value,filename->value); 212 char *tmp=zStrdup(filename->value); 213 tmp[strlen(tmp)-strlen(strrchr(tmp,'.'))]=0; 214 char *mapsfile=(char*)malloc((strlen(tmp)+6)*sizeof(char)); 215 sprintf(mapsfile,"%s.maps",tmp); 216 char* mapPath=(char*)malloc((strlen(tmpPath->value)+strlen(mapsfile)+2)*sizeof(char)); 217 sprintf(mapPath,"%s/%s",tmpPath->value,mapsfile); 218 FILE* myMapsfile=fopen(mapPath,"r"); 219 if(myMapsfile!=NULL){ 220 char *buffer=(char*)malloc(1024*sizeof(char)); 221 while(fgets(buffer, 1024, myMapsfile) != NULL){ 222 buffer[strlen(buffer)-1]=0; 223 tryDeleteDataFile(buffer,NULL); 224 } 225 free(buffer); 226 fclose(myMapsfile); 227 } 228 tryDeleteDataFile(mapPath,NULL); 229 free(mapPath); 230 free(mapsfile); 164 231 // Delete ZOO_DATA_<output>_<sid>.data and <output>_<sid>.map 165 232 char* datafile=(char*)malloc((strlen(jobid->value)+strlen(ioname->value)+19)*sizeof(char));
Note: See TracChangeset
for help on using the changeset viewer.