回文章列表
作者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
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻