summaryrefslogtreecommitdiffstats
path: root/mbbsd/read.c
diff options
context:
space:
mode:
authorvictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2003-12-16 00:39:44 +0800
committervictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2003-12-16 00:39:44 +0800
commite72e1b5e84b76761878f3099f772597b6a23f558 (patch)
tree8eceb1e28daacdb6bd46d05c8f6dd74d218be560 /mbbsd/read.c
parentdfeaae1c3095de44306a00562c041fa8b090e64d (diff)
downloadpttbbs-e72e1b5e84b76761878f3099f772597b6a23f558.tar
pttbbs-e72e1b5e84b76761878f3099f772597b6a23f558.tar.gz
pttbbs-e72e1b5e84b76761878f3099f772597b6a23f558.tar.bz2
pttbbs-e72e1b5e84b76761878f3099f772597b6a23f558.tar.lz
pttbbs-e72e1b5e84b76761878f3099f772597b6a23f558.tar.xz
pttbbs-e72e1b5e84b76761878f3099f772597b6a23f558.tar.zst
pttbbs-e72e1b5e84b76761878f3099f772597b6a23f558.zip
O(1) key-func mapping in i_read_key
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1410 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/read.c')
-rw-r--r--mbbsd/read.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/mbbsd/read.c b/mbbsd/read.c
index bcb596af..fd28bcea 100644
--- a/mbbsd/read.c
+++ b/mbbsd/read.c
@@ -581,7 +581,7 @@ select_read(keeploc_t * locmem, int sr_mode)
static int
i_read_key(onekey_t * rcmdlist, keeploc_t * locmem, int ch, int bid)
{
- int i, mode = DONOTHING;
+ int mode = DONOTHING;
switch (ch) {
case 'q':
@@ -783,13 +783,9 @@ i_read_key(onekey_t * rcmdlist, keeploc_t * locmem, int ch, int bid)
default:
if( ch == 'h' && currmode & (MODE_ETC | MODE_DIGEST) )
return DONOTHING;
- for (i = 0; rcmdlist[i].fptr; i++) {
- if (rcmdlist[i].key == ch) {
- mode = (*(rcmdlist[i].fptr)) (locmem->crs_ln,
- &headers[locmem->crs_ln -
- locmem->top_ln], currdirect);
- break;
- }
+ if (ch > 0 && ch < onekey_size) {
+ mode = (*(rcmdlist[ch - 1]))(locmem->crs_ln, &headers[locmem->crs_ln - locmem->top_ln], currdirect);
+ break;
}
}
return mode;