Changeset 281 for trunk/zoo-kernel/service_internal.c
- Timestamp:
- Jul 27, 2011, 2:28:25 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/zoo-kernel/service_internal.c
r280 r281 2299 2299 } 2300 2300 2301 2301 2302 /** 2302 2303 * Cache a file for a given request … … 2372 2373 return NULL; 2373 2374 } 2375 2376 /** 2377 * loadRemoteFile: 2378 * Try to load file from cache or download a remote file if not in cache 2379 */ 2380 void loadRemoteFile(maps* m,map* content,HINTERNET hInternet,char *url){ 2381 HINTERNET res; 2382 char* fcontent; 2383 char* cached=isInCache(m,url); 2384 int fsize; 2385 if(cached!=NULL){ 2386 fprintf(stderr,"Use cached file: %s\n",cached); 2387 struct stat f_status; 2388 int s=stat(cached, &f_status); 2389 if(s==0){ 2390 fprintf(stderr,"Use cached file: %s\n",cached); 2391 fcontent=(char*)malloc(sizeof(char)*(f_status.st_size+1)); 2392 FILE* f=fopen(cached,"r"); 2393 fread(fcontent,sizeof(char),f_status.st_size,f); 2394 fsize=f_status.st_size; 2395 } 2396 }else{ 2397 res=InternetOpenUrl(hInternet,url,NULL,0,INTERNET_FLAG_NO_CACHE_WRITE,0); 2398 fcontent=(char*)calloc((res.nDataLen+1),sizeof(char)); 2399 if(fcontent == NULL){ 2400 return errorException(m, _("Unable to allocate memory."), "InternalError"); 2401 } 2402 size_t dwRead; 2403 InternetReadFile(res, (LPVOID)fcontent, res.nDataLen, &dwRead); 2404 fcontent[res.nDataLen]=0; 2405 fsize=res.nDataLen; 2406 } 2407 map* tmpMap=getMapOrEmpty(content,"value"); 2408 free(tmpMap->value); 2409 tmpMap->value=(char*)malloc((fsize+1)*sizeof(char)); 2410 memcpy(tmpMap->value,fcontent,(fsize)*sizeof(char)); 2411 char ltmp1[256]; 2412 sprintf(ltmp1,"%d",fsize); 2413 addToMap(content,"size",ltmp1); 2414 if(cached==NULL) 2415 addToCache(m,url,fcontent,fsize); 2416 dumpMap(content); 2417 free(fcontent); 2418 } 2419
Note: See TracChangeset
for help on using the changeset viewer.