summaryrefslogtreecommitdiffstats
path: root/mbbsd/bbs.c
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-04-09 12:17:35 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-04-09 12:17:35 +0800
commit5f4c0ce8c7d09a05b86097ad923bcbd84cc3d9c3 (patch)
treee19965f3c6c0cf7acaed3949117f3e66ec2a39b1 /mbbsd/bbs.c
parent0fcff566e893ab1046e7319fe436ea6b1bb93e05 (diff)
downloadpttbbs-5f4c0ce8c7d09a05b86097ad923bcbd84cc3d9c3.tar
pttbbs-5f4c0ce8c7d09a05b86097ad923bcbd84cc3d9c3.tar.gz
pttbbs-5f4c0ce8c7d09a05b86097ad923bcbd84cc3d9c3.tar.bz2
pttbbs-5f4c0ce8c7d09a05b86097ad923bcbd84cc3d9c3.tar.lz
pttbbs-5f4c0ce8c7d09a05b86097ad923bcbd84cc3d9c3.tar.xz
pttbbs-5f4c0ce8c7d09a05b86097ad923bcbd84cc3d9c3.tar.zst
pttbbs-5f4c0ce8c7d09a05b86097ad923bcbd84cc3d9c3.zip
- bbs: fixed: BM can skip PostRestriction check for x-crosspost.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4106 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/bbs.c')
-rw-r--r--mbbsd/bbs.c27
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;
}