diff options
Diffstat (limited to 'mbbsd/bbs.c')
-rw-r--r-- | mbbsd/bbs.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c index 86443d6c..05aa4e21 100644 --- a/mbbsd/bbs.c +++ b/mbbsd/bbs.c @@ -375,9 +375,13 @@ CheckPostPerm(void) int CheckPostRestriction(int bid) { boardheader_t *bp; - if ((currmode & MODE_BOARD) || HasUserPerm(PERM_SYSOP)) + if (HasUserPerm(PERM_SYSOP)) return 1; assert(0<=bid-1 && bid-1<MAX_BOARD); + + // XXX currmode 是目前看板不是 bid... + if (is_BM_cache(bid)) + return 1; bp = getbcache(bid); // check first-login @@ -652,7 +656,7 @@ cancelpost(const fileheader_t *fh, int by_BM, char *newpath) if(!fh->filename[0]) return; setbfile(fn1, currboard, fh->filename); if ((fin = fopen(fn1, "r"))) { - brd = by_BM ? "deleted" : "junk"; + brd = by_BM ? BN_DELETED : BN_JUNK; memcpy(&postfile, fh, sizeof(fileheader_t)); setbpath(newpath, brd); @@ -1715,7 +1719,7 @@ cp_IsHiddenBoard(boardheader_t *bp) static int cross_post(int ent, fileheader_t * fhdr, const char *direct) { - char xboard[20], fname[80], xfpath[80], xtitle[80]; + char xboard[20], fname[PATHLEN], xfpath[PATHLEN], xtitle[80]; char inputbuf[10], genbuf[200], genbuf2[4]; fileheader_t xfile; FILE *xptr; @@ -1728,6 +1732,13 @@ cross_post(int ent, fileheader_t * fhdr, const char *direct) if (bp && (bp->brdattr & BRD_VOTEBOARD) ) return FULLUPDATE; + setbfile(fname, currboard, fhdr->filename); + if (!dashf(fname)) + { + vmsg("檔案已不存在。"); + return FULLUPDATE; + } + #ifdef USE_AUTOCPLOG // anti-crosspost spammers // @@ -1774,16 +1785,16 @@ cross_post(int ent, fileheader_t * fhdr, const char *direct) xbid = getbnum(xboard); assert(0<=xbid-1 && xbid-1<MAX_BOARD); - // check target postperm - if (!CheckPostRestriction(xbid)) + if (xbid == currbid) { - vmsg("你不夠資深喔! (可在目的看板內按 i 查看限制)"); + vmsg("同板不需轉錄。"); return FULLUPDATE; } - if (xbid == currbid) + // check target postperm + if (!CheckPostRestriction(xbid)) { - vmsg("同板不需轉錄。"); + vmsg("你不夠資深喔! (可在目的看板內按 i 查看限制)"); return FULLUPDATE; } |