From e72e1b5e84b76761878f3099f772597b6a23f558 Mon Sep 17 00:00:00 2001 From: victor Date: Mon, 15 Dec 2003 16:39:44 +0000 Subject: 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 --- mbbsd/read.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'mbbsd/read.c') 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; -- cgit v1.2.3