作者hpo14.bbs@ntust.org (離心) 看板: itoc
標題[修正] 切換看板屬性時刪除板友名單
時間資工清流站 (2008/02/10 Sun 23:58:29)
我原本是使用精華區的去改,發現改了之後無效。
今天仔細看了 code 之後,發現精華區的 code 位置放錯
導致有放跟沒放一樣 ~~~ @@
另,我順便加了判斷,若看板有設定名單,才詢問要不要刪除,
反之,則不做板友名單刪除動作
> - 舊版程式碼 --------------------------------------------------------------
: src/so/manage.c:post_brdlevel()
if (memcmp(&newbrd, oldbrd, sizeof(BRD)) && vans(msg_sure_ny) == 'y')
{
memcpy(oldbrd, &newbrd, sizeof(BRD));
// 就是因為先做了上面這行,使得 old 跟 new 內容一樣,導致下面無效
rec_put(FN_BRD, &newbrd, sizeof(BRD), currbno, NULL);
+ if (vans("是否清除好友/水桶名單(Y/N)?[N] ") == 'y')
+ {
+ if ((oldbrd->readlevel == 0 &&
+ (newbrd.readlevel == PERM_BOARD || newbrd.readlevel == PERM_SYSOP)) ||
+ (newbrd.readlevel == 0 &&
+ (oldbrd->readlevel == PERM_BOARD || oldbrd->readlevel == PERM_SYSOP)))
+ {
+ static void bpal_cache();
+ char fpath[64];
+ brd_fpath(fpath, currboard, fn_pal);
+ unlink(fpath);
+ bpal_cache();
+ }
+ }
}
> - 修正後 ------------------------------------------------------------------
: src/so/manage.c:post_brdlevel()
if (memcmp(&newbrd, oldbrd, sizeof(BRD)) && vans(msg_sure_ny) == 'y')
{
- memcpy(oldbrd, &newbrd, sizeof(BRD));
- rec_put(FN_BRD, &newbrd, sizeof(BRD), currbno, NULL);
+ char fpath[64];
+ brd_fpath(fpath, currboard, fn_pal);
- if (vans("是否清除好友/水桶名單[y/N]?[N] ") == 'y')
+ if (dashf(fpath) && vans("是否清除好友/水桶名單[y/N]?[N] ") == 'y')
{
if ((oldbrd->readlevel == 0 &&
(newbrd.readlevel == PERM_BOARD || newbrd.readlevel == PERM_SYSOP)) ||
(newbrd.readlevel == 0 &&
(oldbrd->readlevel == PERM_BOARD || oldbrd->readlevel == PERM_SYSOP)))
{
static void bpal_cache();
unlink(fpath);
bpal_cache();
}
}
+ memcpy(oldbrd, &newbrd, sizeof(BRD));
+ rec_put(FN_BRD, &newbrd, sizeof(BRD), currbno, NULL);
}
黃色的部份不知道可不可以這樣判斷 :p
不行的話就改用別種方式吧 @@"
--
>> 台灣科技大學 資工清流站 # ntust.org #
>> From: 61-59-78-243.adsl.static.seed.net.tw