summaryrefslogtreecommitdiffstats
path: root/mbbsd/read.c
diff options
context:
space:
mode:
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
commit157642992e5f2d5dc367b6905a7d453a4ea66845 (patch)
treee04f35001131f3a84cbe477d4be908da0063e335 /mbbsd/read.c
parenta81645961f0ab104dc8b09825aa9379083308c14 (diff)
downloadpttbbs-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.c16
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;
}