summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2009-07-09 00:27:32 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2009-07-09 00:27:32 +0800
commit94d9d70f7c201721323f8ee54593047d21f79782 (patch)
tree2ce3e9e41d1de2f7b7e0ebba55e5092386fa18fd
parent577baad7c4800892551535cbdc1d885bcf80b054 (diff)
downloadpttbbs-94d9d70f7c201721323f8ee54593047d21f79782.tar
pttbbs-94d9d70f7c201721323f8ee54593047d21f79782.tar.gz
pttbbs-94d9d70f7c201721323f8ee54593047d21f79782.tar.bz2
pttbbs-94d9d70f7c201721323f8ee54593047d21f79782.tar.lz
pttbbs-94d9d70f7c201721323f8ee54593047d21f79782.tar.xz
pttbbs-94d9d70f7c201721323f8ee54593047d21f79782.tar.zst
pttbbs-94d9d70f7c201721323f8ee54593047d21f79782.zip
* code refine
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4729 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--mbbsd/announce.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/mbbsd/announce.c b/mbbsd/announce.c
index 8298f158..ed1e7cea 100644
--- a/mbbsd/announce.c
+++ b/mbbsd/announce.c
@@ -1143,17 +1143,16 @@ a_where_am_i(const menu_t *root, int current_idx, const char *current_title)
return 0;
}
-int a_parse_zindexes(const char *sidx, a_menu_session_t *sess)
+int a_parse_zindexes(const char *s, a_menu_session_t *sess)
{
int i = 0;
- const char *s = sidx;
memset(sess->z_indexes, 0, sizeof(sess->z_indexes));
- if (strpbrk(sidx, "0123456789") == NULL)
+ if (strpbrk(s, "0123456789") == NULL)
return -1;
while (NULL != (s = strpbrk(s, "0123456789")) &&
- i < _DIM(sess->z_indexes) )
+ i+1 < _DIM(sess->z_indexes) )
{
sess->z_indexes[i] = atoi(s);
// only increase index
@@ -1245,12 +1244,7 @@ a_menu_rec(const char *maintitle, const char *path,
if (preselect && !*preselect)
preselect = NULL;
- if (preselect)
- {
- me.now = *preselect-1;
- } else {
- me.now = 0;
- }
+ me.now = preselect ? (*preselect -1) : 0;
for (;;) {
if (me.now >= me.num)
@@ -1285,14 +1279,15 @@ a_menu_rec(const char *maintitle, const char *path,
int n = a_multi_search_num(isascii(ch) && isdigit(ch) ? ch : '\0', sess);
me.page = A_INVALID_PAGE;
if (n > 0)
+ {
me.now = n-1;
- else if (n < 0)
- vmsg("¿é¤J¿ù»~¡C");
- else if (sess->z_indexes[0])
+ me.page = 10000; // I don't know what's the magic value 10000...
+ }
+ else if (n == 0 && sess->z_indexes[0])
{
// n == 0, check new preselects
preselect = sess->z_indexes;
- me.now = *preselect-1;
+ me.now = *preselect - 1;
}
continue;
}