|
@ -41,40 +41,37 @@ bool LoadHostList(strpool **hostlist, char *filename) |
|
|
fprintf(stderr, "Could not open %s\n", filename); |
|
|
fprintf(stderr, "Could not open %s\n", filename); |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
if ((r=z_readfile(F,&zbuf,&zsize))==Z_OK) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
printf("zlib compression detected. uncompressed size : %zu\n", zsize); |
|
|
if (is_gzip(F)) |
|
|
|
|
|
{ |
|
|
|
|
|
r = z_readfile(F,&zbuf,&zsize); |
|
|
fclose(F); |
|
|
fclose(F); |
|
|
|
|
|
if (r==Z_OK) |
|
|
p = zbuf; |
|
|
|
|
|
e = zbuf + zsize; |
|
|
|
|
|
while(p<e) |
|
|
|
|
|
{ |
|
|
{ |
|
|
if (!addpool(hostlist,&p,e)) |
|
|
printf("zlib compression detected. uncompressed size : %zu\n", zsize); |
|
|
|
|
|
|
|
|
|
|
|
p = zbuf; |
|
|
|
|
|
e = zbuf + zsize; |
|
|
|
|
|
while(p<e) |
|
|
{ |
|
|
{ |
|
|
fprintf(stderr, "Not enough memory to store host list : %s\n", filename); |
|
|
if (!addpool(hostlist,&p,e)) |
|
|
free(zbuf); |
|
|
{ |
|
|
return false; |
|
|
fprintf(stderr, "Not enough memory to store host list : %s\n", filename); |
|
|
|
|
|
free(zbuf); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
ct++; |
|
|
} |
|
|
} |
|
|
ct++; |
|
|
free(zbuf); |
|
|
} |
|
|
} |
|
|
free(zbuf); |
|
|
else |
|
|
} |
|
|
|
|
|
else if (r!=Z_DATA_ERROR) |
|
|
|
|
|
{ |
|
|
|
|
|
fprintf(stderr, "zlib decompression failed : result %d\n",r); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
if (is_gzip(F)) |
|
|
|
|
|
{ |
|
|
{ |
|
|
fprintf(stderr, "hostlist is gzip but is broken : %s\n",filename); |
|
|
fprintf(stderr, "zlib decompression failed : result %d\n",r); |
|
|
return false; |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
fseek(F,0,SEEK_SET); |
|
|
else |
|
|
|
|
|
{ |
|
|
printf("loading plain text list\n",r); |
|
|
printf("loading plain text list\n",r); |
|
|
|
|
|
|
|
|
while (fgets(s, 256, F)) |
|
|
while (fgets(s, 256, F)) |
|
@ -90,6 +87,7 @@ bool LoadHostList(strpool **hostlist, char *filename) |
|
|
} |
|
|
} |
|
|
fclose(F); |
|
|
fclose(F); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
printf("Loaded %d hosts from %s\n", ct, filename); |
|
|
printf("Loaded %d hosts from %s\n", ct, filename); |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|