If fails to download, it will reuse the local copy
parent
bba9693138
commit
f2a4447bd3
52
src/rhosts.c
52
src/rhosts.c
|
|
@ -259,7 +259,9 @@ int download_libcurl(char *e){
|
||||||
// Download the file
|
// Download the file
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
if(res != CURLE_OK){
|
if(res != CURLE_OK){
|
||||||
printf("Failed to download the file %d", res);
|
printf("Failed to download the file: %d\n", res);
|
||||||
|
fflush(stdin);
|
||||||
|
copy_old_download(e);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
|
|
@ -283,3 +285,51 @@ int parse_download(char *buff, size_t size, size_t nmemb){
|
||||||
fclose(tmpf);
|
fclose(tmpf);
|
||||||
return nmemb;
|
return nmemb;
|
||||||
}
|
}
|
||||||
|
// Checks the hosts file for a download section matching the url
|
||||||
|
// then copies it to the tmp file
|
||||||
|
int copy_old_download(char *url){
|
||||||
|
FILE *hostsf;
|
||||||
|
FILE *tmpf;
|
||||||
|
hostsf = fopen(HOSTSLOCATION, "r");
|
||||||
|
if (hostsf == NULL){return 1;}
|
||||||
|
tmpf = fopen(TMPLOCATION,"a");
|
||||||
|
if (tmpf == NULL){
|
||||||
|
fclose(hostsf);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
char buff[MAXSTRSIZE] = "";
|
||||||
|
char search[MAXSTRSIZE] = "# rhosts download - ";
|
||||||
|
strncat(search,url,MAXSTRSIZE - 21);
|
||||||
|
char c = '\0';
|
||||||
|
|
||||||
|
do{
|
||||||
|
c = fgetc(hostsf);
|
||||||
|
while(c != '\n' && c != EOF && strlen(buff) < MAXSTRSIZE){
|
||||||
|
strncat(buff, &c, 1);
|
||||||
|
c = fgetc(hostsf);
|
||||||
|
}
|
||||||
|
strncat(buff, &c, 1);
|
||||||
|
if(strncmp(buff,search, strlen(search)) == 0){
|
||||||
|
printf("Found a local match for %s\n",url);
|
||||||
|
c = EOF;
|
||||||
|
}
|
||||||
|
buff[0] = '\0';
|
||||||
|
}while(c !=EOF);
|
||||||
|
do{
|
||||||
|
do{
|
||||||
|
c = fgetc(hostsf);
|
||||||
|
if (c != EOF)
|
||||||
|
strncat(buff, &c, 1);
|
||||||
|
} while(c != '\n' && c != EOF && strlen(buff) < MAXSTRSIZE);
|
||||||
|
if(strncmp(buff,"# rhosts", 8) != 0){
|
||||||
|
fputs(buff, tmpf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
c = EOF;
|
||||||
|
buff[0] = '\0';
|
||||||
|
}while(c !=EOF);
|
||||||
|
|
||||||
|
fclose(hostsf);
|
||||||
|
fclose(tmpf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue