#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "global.h"
extern char *badhosts;
int check_badhosts(char *ehost)
{
int ret = 0;
FILE *stream = NULL;
char b[255] = { 0 }, *p = NULL;
if (badhosts == NULL)
return 0;
stream = fopen(badhosts, "r");
if (stream == NULL)
return 0;
ret = 0;
while(1) {
memset((char *)b, 0, 255);
fgets(b, 255, stream);
if (feof(stream))
break;
if (!(*b == '#')) {
for (p = b; *p; p++) {
if ((*p == '\n') || (*p == '\r')) {
*p = '\0';
break;
}
}
if (*b) {
ret = parse_ehost(b, ehost);
if (ret)
break;
}
}
}
fclose(stream);
return ret;
}
int parse_ehost(char *data, char *ehost)
{
int len = 0, elen = 0;
/*
Compare the end of data against ehost
*/
if (*data == '.') {
elen = strlen(ehost);
len = strlen(data);
if (len >= elen)
return 0;
if (!(strcasecmp((ehost + (elen - len)), data)))
return 1;
return 0;
}
/*
Compare the entire string
*/
else {
if (!(strcasecmp(data, ehost)))
return 1;
return 0;
}
}
syntax highlighted by Code2HTML, v. 0.9.1