diff options
author | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2002-11-07 00:25:15 +0800 |
---|---|---|
committer | in2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2002-11-07 00:25:15 +0800 |
commit | 3135cf3e37a4b5fbd7b7b4e7a67b66c47d0e1e3a (patch) | |
tree | 772cecc4731614e9df09367ab0d5f0f8654be4b4 /mbbsd/bbs.c | |
parent | 175ba7e7cf70d131d34fd8c09a3138e7f9dfeea0 (diff) | |
download | pttbbs-3135cf3e37a4b5fbd7b7b4e7a67b66c47d0e1e3a.tar pttbbs-3135cf3e37a4b5fbd7b7b4e7a67b66c47d0e1e3a.tar.gz pttbbs-3135cf3e37a4b5fbd7b7b4e7a67b66c47d0e1e3a.tar.bz2 pttbbs-3135cf3e37a4b5fbd7b7b4e7a67b66c47d0e1e3a.tar.lz pttbbs-3135cf3e37a4b5fbd7b7b4e7a67b66c47d0e1e3a.tar.xz pttbbs-3135cf3e37a4b5fbd7b7b4e7a67b66c47d0e1e3a.tar.zst pttbbs-3135cf3e37a4b5fbd7b7b4e7a67b66c47d0e1e3a.zip |
editlock by flock()
git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk/pttbbs@558 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/bbs.c')
-rw-r--r-- | mbbsd/bbs.c | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c index dbe9936d..f32f5b91 100644 --- a/mbbsd/bbs.c +++ b/mbbsd/bbs.c @@ -1,4 +1,4 @@ -/* $Id: bbs.c,v 1.70 2002/08/25 18:43:36 in2 Exp $ */ +/* $Id: bbs.c,v 1.71 2002/11/06 16:25:14 in2 Exp $ */ #include "bbs.h" static void @@ -718,11 +718,9 @@ edit_post(int ent, fileheader_t * fhdr, char *direct) local_article = fhdr->filemode & FILE_LOCAL; strlcpy(save_title, fhdr->title, sizeof(save_title)); - if( iseditlocking(genbuf, "重複編輯") ) - return FULLUPDATE; - editlock(genbuf); /* rocker.011018: 這裡是不是該檢查一下修改文章後的money和原有的比較? */ if (vedit(genbuf, 0, NULL) != -1) { + lock_substitute_record(direct, fhdr, sizeof(*fhdr), ent, LOCK_EX); setbpath(fpath, currboard); stampfile(fpath, &postfile); unlink(fpath); @@ -749,11 +747,10 @@ edit_post(int ent, fileheader_t * fhdr, char *direct) strlcpy(fhdr->filename, postfile.filename, sizeof(fhdr->filename)); strlcpy(fhdr->title, save_title, sizeof(fhdr->title)); brc_addlist(postfile.filename); - substitute_record(direct, fhdr, sizeof(*fhdr), ent); + lock_substitute_record(direct, fhdr, sizeof(*fhdr), ent, LOCK_UN); /* rocker.011018: 順便更新一下cache */ touchdircache(currbid); } - editunlock(genbuf); return FULLUPDATE; } @@ -1209,21 +1206,19 @@ recommend(int ent, fileheader_t * fhdr, char *direct) boardheader_t *bp; bp = getbcache(currbid); - if (!(currmode & MODE_POST) || !strcmp(fhdr->owner, cuser.userid) || - bp->brdattr & BRD_VOTEBOARD) { + if (!(currmode & MODE_POST) || bp->brdattr & BRD_VOTEBOARD) { move(b_lines - 1, 0); - prints("您因權限不足無法推薦 或 不能推薦自己的文章!"); + prints("您因權限不足無法推薦!"); pressanykey(); return FULLUPDATE; } setdirpath(path, direct, fhdr->filename); - if( iseditlocking(path, "推薦文章") ) - return FULLUPDATE; if (fhdr->recommend > 9 || fhdr->recommend < 0) /* 暫時性的 code 原來舊有值取消 */ fhdr->recommend = 0; +#if 0 #ifndef DEBUG if (!(currmode & MODE_BOARD) && getuser(cuser.userid) && now - xuser.recommend < 60) { @@ -1233,6 +1228,8 @@ recommend(int ent, fileheader_t * fhdr, char *direct) return FULLUPDATE; } #endif +#endif + if (!getdata(b_lines - 2, 0, "推薦語:", path, 40, DOECHO) || !getdata(b_lines - 1, 0, "確定要推薦, 請仔細考慮(Y/N)?[n] ", yn, 5, LCECHO) || yn[0] != 'y') @@ -1243,20 +1240,22 @@ recommend(int ent, fileheader_t * fhdr, char *direct) cuser.userid, path, 51 - strlen(cuser.userid) - strlen(path), " ", fromhost, ptime->tm_mon + 1, ptime->tm_mday); - if( iseditlocking(path, "推薦文章") ) - return FULLUPDATE; + lock_substitute_record(direct, fhdr, sizeof(*fhdr), ent, LOCK_EX); setdirpath(path, direct, fhdr->filename); log_file(path, buf); - if (fhdr->recommend < 9) { + if (!(fhdr->recommend < 9)) + lock_substitute_record(direct, fhdr, sizeof(*fhdr), ent, LOCK_UN); + else{ fhdr->recommend++; cuser.recommend = now; passwd_update(usernum, &cuser); - substitute_record(direct, fhdr, sizeof(*fhdr), ent); + lock_substitute_record(direct, fhdr, sizeof(*fhdr), ent, LOCK_UN); substitute_check(fhdr); touchdircache(currbid); } return FULLUPDATE; } + static int mark_post(int ent, fileheader_t * fhdr, char *direct) { @@ -1370,12 +1369,7 @@ del_post(int ent, fileheader_t * fhdr, char *direct) getdata(1, 0, msg_del_ny, genbuf, 3, LCECHO); if (genbuf[0] == 'y' || genbuf[0] == 'Y') { strlcpy(currfile, fhdr->filename, sizeof(currfile)); - - setbfile(genbuf, currboard, fhdr->filename); - if( iseditlocking(genbuf, "刪除文章") ) - return FULLUPDATE; if (!delete_file(direct, sizeof(fileheader_t), ent, cmpfilename)) { - if (currmode & MODE_SELECT) { /* rocker.011018: 利用reference減低loading */ fileheader_t hdr; |