summaryrefslogtreecommitdiffstats
path: root/mbbsd/cache.c
diff options
context:
space:
mode:
authorvictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-06-01 17:42:35 +0800
committervictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-06-01 17:42:35 +0800
commit31990741fbf7dec987b8319cad65ff942dd4b957 (patch)
tree1bb5fc936192e295f85d21574d571aba3e350521 /mbbsd/cache.c
parentcd668ff9ddda02018617afa7979023984d0ba42b (diff)
downloadpttbbs-victor.screen.tar
pttbbs-victor.screen.tar.gz
pttbbs-victor.screen.tar.bz2
pttbbs-victor.screen.tar.lz
pttbbs-victor.screen.tar.xz
pttbbs-victor.screen.tar.zst
pttbbs-victor.screen.zip
git-svn-id: http://opensvn.csie.org/pttbbs/branches/victor.screen@2041 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/cache.c')
-rw-r--r--mbbsd/cache.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/mbbsd/cache.c b/mbbsd/cache.c
index 842cedad..dcf0c039 100644
--- a/mbbsd/cache.c
+++ b/mbbsd/cache.c
@@ -868,25 +868,28 @@ reload_fcache(void)
FILE *fp;
SHM->Fbusystate = 1;
- bzero(SHM->domain, sizeof(SHM->domain));
if ((fp = fopen("etc/domain_name_query", "r"))) {
- char buf[256], *po;
+ char buf[256], *ip, *mask;
- SHM->top = 0;
+ SHM->home_num = 0;
while (fgets(buf, sizeof(buf), fp)) {
- if (buf[0] && buf[0] != '#' && buf[0] != ' ' &&
- buf[0] != '\n') {
- sscanf(buf, "%s", SHM->domain[SHM->top]); // XXX check buffer size
- po = buf + strlen(SHM->domain[SHM->top]);
- while (*po == ' ' || *po == '\t')
- po++;
- strncpy(SHM->replace[SHM->top], po, 49);
- SHM->replace[SHM->top]
- [strlen(SHM->replace[SHM->top]) - 1] = 0;
- (SHM->top)++;
- if (SHM->top == MAX_FROM)
- break;
+ if (!buf[0] || buf[0] == '#' || buf[0] == ' ' || buf[0] == '\n') {
+ continue;
+ }
+ ip = strtok(buf, " \t");
+ if ((mask = strchr(ip, '/')) != NULL) {
+ SHM->home_ip[SHM->home_num] = ipstr2int(ip);
+ SHM->home_mask[SHM->home_num] = atoi(mask);
}
+ else
+ SHM->home_ip[SHM->home_num] = ipstr2int(ip);
+ ip = strtok(NULL, " \t");
+ strncpy(SHM->home_desc[SHM->home_num], ip, sizeof(SHM->home_desc[SHM->home_num]));
+ SHM->home_desc[SHM->home_num]
+ [strlen(SHM->home_desc[SHM->home_num]) - 1] = 0;
+ (SHM->home_num)++;
+ if (SHM->home_num == MAX_FROM)
+ break;
}
fclose(fp);
}