summaryrefslogtreecommitdiffstats
path: root/mbbsd/bbs.c
diff options
context:
space:
mode:
Diffstat (limited to 'mbbsd/bbs.c')
-rw-r--r--mbbsd/bbs.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c
index 1f03f831..8802699a 100644
--- a/mbbsd/bbs.c
+++ b/mbbsd/bbs.c
@@ -1643,6 +1643,17 @@ edit_post(int ent, fileheader_t * fhdr, const char *direct)
#define UPDATE_USEREC (currmode |= MODE_DIRTY)
static int
+cp_IsHiddenBoard(boardheader_t *bp)
+{
+ // rules: see HasBoardPerm().
+ if ((bp->brdattr & BRD_HIDE) && (bp->brdattr & BRD_POSTMASK))
+ return 1;
+ if (bp->level && !(bp->brdattr & BRD_POSTMASK))
+ return 1;
+ return 0;
+}
+
+static int
cross_post(int ent, fileheader_t * fhdr, const char *direct)
{
char xboard[20], fname[80], xfpath[80], xtitle[80];
@@ -1790,7 +1801,7 @@ cross_post(int ent, fileheader_t * fhdr, const char *direct)
write_header(xptr, save_title);
currboard = save_currboard;
- if ((bp->brdattr & BRD_HIDE) && (bp->brdattr & BRD_POSTMASK))
+ if (cp_IsHiddenBoard(bp))
{
/* invisible board */
fprintf(xptr, "※ [本文轉錄自某隱形看板]\n\n");
@@ -1816,7 +1827,7 @@ cross_post(int ent, fileheader_t * fhdr, const char *direct)
assert(0<=bid-1 && bid-1<MAX_BOARD);
bp = getbcache(bid);
- if ((bp->brdattr & BRD_HIDE) && (bp->brdattr & BRD_POSTMASK))
+ if (cp_IsHiddenBoard(bp))
{
strcpy(bname, "某隱形看板");
} else {