summaryrefslogtreecommitdiffstats
path: root/mbbsd/bbs.c
diff options
context:
space:
mode:
authorin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2003-09-04 19:01:57 +0800
committerin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2003-09-04 19:01:57 +0800
commit9c6563c6e1d6e54655e59b828d10e9713655ba84 (patch)
tree863365730b8e53c45448bd2336bb3b45f56eac3a /mbbsd/bbs.c
parent9f9f9619a9fe96a172ec444373224625a3f09df6 (diff)
downloadpttbbs-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.c18
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);
}