diff options
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); } |