summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/modes.h6
-rw-r--r--mbbsd/bbs.c8
-rw-r--r--mbbsd/pmore.c13
3 files changed, 23 insertions, 4 deletions
diff --git a/include/modes.h b/include/modes.h
index 24b8a01a..18eb9487 100644
--- a/include/modes.h
+++ b/include/modes.h
@@ -2,6 +2,7 @@
#ifndef INCLUDE_MODES_H
#define INCLUDE_MODES_H
+/* common return values of read.c */
#define DONOTHING 0 /* Read menu command return states */
#define FULLUPDATE 1 /* Entire screen was destroyed in this oper */
#define PARTUPDATE 2 /* Only the top three lines were destroyed */
@@ -16,6 +17,11 @@
#define READ_SKIP 12
#define HEADERS_RELOAD 13
+// values returned by pager
+#define RET_DOREPLY (999)
+#define RET_DORECOMMEND (998)
+#define RET_DOQUERYINFO (997)
+
/* user 操作狀態與模式 */
#define IDLE 0
#define MMENU 1 /* menu mode */
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c
index e24f0e4f..5baeb752 100644
--- a/mbbsd/bbs.c
+++ b/mbbsd/bbs.c
@@ -13,6 +13,7 @@
static int recommend(int ent, fileheader_t * fhdr, const char *direct);
static int do_add_recommend(const char *direct, fileheader_t *fhdr,
int ent, const char *buf, int type);
+static int view_postinfo(int ent, const fileheader_t * fhdr, const char *direct, int crs_ln);
#ifdef ASSESS
static char * const badpost_reason[] = {
@@ -1865,12 +1866,15 @@ read_post(int ent, fileheader_t * fhdr, const char *direct)
clear();
vmsg("此文章無內容");
return FULLUPDATE;
- case 999:
+ case RET_DOREPLY:
do_reply(fhdr);
return FULLUPDATE;
- case 998:
+ case RET_DORECOMMEND:
recommend(ent, fhdr, direct);
return FULLUPDATE;
+ case RET_DOQUERYINFO:
+ view_postinfo(ent, fhdr, direct, b_lines-3);
+ return FULLUPDATE;
}
if(more_result)
return more_result;
diff --git a/mbbsd/pmore.c b/mbbsd/pmore.c
index fe39a389..87544bf0 100644
--- a/mbbsd/pmore.c
+++ b/mbbsd/pmore.c
@@ -2040,15 +2040,24 @@ pmore(char *fpath, int promptend)
ch = igetch();
switch (ch) {
/* ------------------ EXITING KEYS ------------------ */
+#ifdef RET_DOREPLY
case 'r': case 'R':
case 'Y': case 'y':
- flExit = 1, retval = 999;
+ flExit = 1, retval = RET_DOREPLY;
break;
+#endif
+#ifdef RET_DORECOMMEND
// recommend
case '%':
case 'X':
- flExit = 1, retval = 998;
+ flExit = 1, retval = RET_DORECOMMEND;
+ break;
+#endif
+#ifdef RET_DOQUERYINFO
+ case 'Q': // info query interface
+ flExit = 1, retval = RET_DOQUERYINFO;
break;
+#endif
case 'A':
flExit = 1, retval = AUTHOR_PREV;
break;