diff options
author | (no author) <(no author)@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-09-04 16:13:43 +0800 |
---|---|---|
committer | (no author) <(no author)@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2003-09-04 16:13:43 +0800 |
commit | 157642992e5f2d5dc367b6905a7d453a4ea66845 (patch) | |
tree | e04f35001131f3a84cbe477d4be908da0063e335 /mbbsd/read.c | |
parent | a81645961f0ab104dc8b09825aa9379083308c14 (diff) | |
download | pttbbs-157642992e5f2d5dc367b6905a7d453a4ea66845.tar pttbbs-157642992e5f2d5dc367b6905a7d453a4ea66845.tar.gz pttbbs-157642992e5f2d5dc367b6905a7d453a4ea66845.tar.bz2 pttbbs-157642992e5f2d5dc367b6905a7d453a4ea66845.tar.lz pttbbs-157642992e5f2d5dc367b6905a7d453a4ea66845.tar.xz pttbbs-157642992e5f2d5dc367b6905a7d453a4ea66845.tar.zst pttbbs-157642992e5f2d5dc367b6905a7d453a4ea66845.zip |
add get_record_keep().
we don't need to open/close the same file every time in title search mode.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1155 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/read.c')
-rw-r--r-- | mbbsd/read.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/mbbsd/read.c b/mbbsd/read.c index 009b6912..1542ace5 100644 --- a/mbbsd/read.c +++ b/mbbsd/read.c @@ -289,6 +289,7 @@ thread(keeploc_t * locmem, int stype) register int now, pos, match, near = 0; fileheader_t fh; int circulate_flag = 1; /* circulate at end or begin */ + int fd = -1; match = hit_thread = 0; now = pos = locmem->crs_ln; @@ -357,10 +358,15 @@ thread(keeploc_t * locmem, int stype) do { if (!circulate_flag || stype & RS_RELATED) { if (stype & RS_FORWARD) { - if (++now > last_line) + if (++now > last_line){ + if( fd != -1 ) + close(fd); return DONOTHING; + } } else { - if (--now <= 0 || now < pos - 300) { + if (--now <= 0 || now < pos - 200) { + if( fd ) + close(fd); if ((stype & RS_FIRST) && (near)) { hit_thread = 1; return cursor_pos(locmem, near, 10); @@ -376,7 +382,7 @@ thread(keeploc_t * locmem, int stype) now = last_line; } - get_record(currdirect, &fh, sizeof(fileheader_t), now); + get_record_keep(currdirect, &fh, sizeof(fileheader_t), now, &fd); if (fh.owner[0] == '-') continue; @@ -384,6 +390,8 @@ thread(keeploc_t * locmem, int stype) if (stype & RS_THREAD) { if (strncasecmp(fh.title, str_reply, 3)) { hit_thread = 1; + if( fd ) + close(fd); return cursor_pos(locmem, now, 10); } continue; @@ -411,6 +419,8 @@ thread(keeploc_t * locmem, int stype) } } while (now != pos); + if( fd != -1 ) + close(fd); return match; } |