diff options
author | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-06-01 17:42:35 +0800 |
---|---|---|
committer | victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-06-01 17:42:35 +0800 |
commit | 31990741fbf7dec987b8319cad65ff942dd4b957 (patch) | |
tree | 1bb5fc936192e295f85d21574d571aba3e350521 /mbbsd/cache.c | |
parent | cd668ff9ddda02018617afa7979023984d0ba42b (diff) | |
download | pttbbs-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 |
ip/maskvictor.screen
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.c | 33 |
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); } |