diff options
author | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-09-04 19:01:57 +0800 |
---|---|---|
committer | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-09-04 19:01:57 +0800 |
commit | 9c6563c6e1d6e54655e59b828d10e9713655ba84 (patch) | |
tree | 863365730b8e53c45448bd2336bb3b45f56eac3a /mbbsd/bbs.c | |
parent | 9f9f9619a9fe96a172ec444373224625a3f09df6 (diff) | |
download | pttbbs-9c6563c6e1d6e54655e59b828d10e9713655ba84.tar pttbbs-9c6563c6e1d6e54655e59b828d10e9713655ba84.tar.gz pttbbs-9c6563c6e1d6e54655e59b828d10e9713655ba84.tar.bz2 pttbbs-9c6563c6e1d6e54655e59b828d10e9713655ba84.tar.lz pttbbs-9c6563c6e1d6e54655e59b828d10e9713655ba84.tar.xz pttbbs-9c6563c6e1d6e54655e59b828d10e9713655ba84.tar.zst pttbbs-9c6563c6e1d6e54655e59b828d10e9713655ba84.zip |
read 8k once instead of 128bytes,
reduce system calls.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1157 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/bbs.c')
-rw-r--r-- | mbbsd/bbs.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c index 50a5eee3..27c8ab25 100644 --- a/mbbsd/bbs.c +++ b/mbbsd/bbs.c @@ -659,16 +659,18 @@ do_generalboardreply(fileheader_t * fhdr) int getindex(char *fpath, char *fname, int size) { - int fd, now = 0; - fileheader_t fhdr; +#define READSIZE 64 // 8192 / sizeof(fileheader_t) + int fd, i, len, now = 1; /* now starts from 1 */ + fileheader_t fhdrs[READSIZE]; if ((fd = open(fpath, O_RDONLY, 0)) != -1) { - while ((read(fd, &fhdr, size) == size)) { - now++; - if (!strcmp(fhdr.filename, fname)) { - close(fd); - return now; - } + while( (len = read(fd, fhdrs, sizeof(fhdrs))) > 0 ){ + len /= sizeof(fileheader_t); + for( i = 0 ; i < len ; ++i, ++now ) + if (!strcmp(fhdrs[i].filename, fname)) { + close(fd); + return now; + } } close(fd); } |