回文章列表
作者TonyQ.bbs@bbs.wretch.cc (沉默是金) 看板: itoc
標題Re: 關於砍文章
時間無名小站 (2007/04/29 Sun 20:09:31)
※ 引述《guessi (沒)》之銘言:
> 小d刪文 判斷是否為板主刪文
> 板主刪文 -> deleted
> 自行山文 -> junk
> 這邊就請依自己情況修改囉 :)

    小小淺見,我認為今天不是應該更改刪除的模式 ( bybm ),
    而是將目標版面獨立出來,如此會更有彈性語意上也更OK。


    我會比較prefer以下的作法

────────────────────────────────
: post.c  : move_post(hdr, folder, by_bm)

static inline int       /* 回傳文章 size 去扣錢 */
move_post(hdr, folder,
by_bm)  /* 將 hdr 從 folder 搬到別的板 */
  HDR *hdr;
  char *folder;
  int by_bm;
{
  int xmode;
  char *board;

  xmode = hdr->xmode;

#ifdef
HAVE_REFUSEMARK
    board = by_bm && !(xmode & POST_RESTRICT) ? BN_DELETED :BN_JUNK;
    /* 加密文章丟去 junk */
#else
    board = by_bm ? BN_DELETED :BN_JUNK;
#endif

  return move_post_to(hdr, folder, by_bm,board);
}

────────────────────────────────
新增 post.c  : move_post_to(hdr, folder, by_bm,board)

/* 20070429 by Bone */
static inline int       /* 回傳文章 size 去扣錢*/
move_post_to(hdr, folder, by_bm,board)  /* 將 hdr 從 folder 搬到別的板 */
  HDR *hdr;
  char *folder,*board;
  int by_bm;
{
  HDR post;
  int xmode;

 char fpath[64], fnew[64];
  struct stat st;

  xmode = hdr->xmode;

 hdr_fpath(fpath, folder, hdr);

  if (!(xmode & POST_BOTTOM))   /* 置底文被砍不用 move_post */
  {

    brd_fpath(fnew, board, fn_dir);
    hdr_stamp(fnew, HDR_LINK | 'A', &post, fpath);

    /* 直接複製 trailing data:owner(含)以下所有欄位 */

    memcpy(post.owner, hdr->owner, sizeof(HDR) -
      (sizeof(post.chrono) + sizeof(post.xmode) +
        sizeof(post.xid) + sizeof(post.xname)));

    if (by_bm)
      sprintf(post.title, "%-13s%.59s", cuser.userid, hdr->title);

    rec_bot(fnew, &post, sizeof(HDR));

 btime_update(brd_bno(board));
  }

  by_bm = stat(fpath, &st) ? 0 : st.st_size;

  unlink(fpath);
  btime_update(currbno);
  cancel_post(hdr);

  return by_bm;
}

────────────────────────────────
static void
delpost(xo, hdr)
  XO *xo;
  HDR *hdr;
{
    move_post_to(hdr,
xo->dir, 1,BN_DELETED);
}
────────────────────────────────
static void
junkpost(xo, hdr)
  XO *xo;
  HDR *hdr;
{
    move_post_to(hdr, xo->dir, 1, BN_JUNK);
}
────────────────────────────────

: src/maple/post.c:post_prune()

- ret = xo_prune(xo, sizeof(HDR), vfypost, delpost);  /* 大D送進delete */
+ ret = xo_prune(xo, sizeof(HDR), vfypost, jnkpost);  /* 大D 送進junk */

: src/maple/post.c:post_delete()

- pos = move_post(hdr, xo->dir, by_BM);

/*  要修改小d有兩個方式 , 一個是進 move_post 改 board
    就保持
        pos = move_post(hdr, xo->dir, by_BM);
*/

/*  另一個是直接改用 delpost or junkpost
    pos = junkpost(xo, hdr);   //送到junk版
    pos = delpost(xo, hdr);    //送到delete版
*/


--
以上,我認為會比較符合語意。^^

bbs不好瀏覽的話,我有放在以下網址
http://tony1223.no-ip.info/post.c

直接搜尋function name瀏覽吧^^
--
夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子
之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下
矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以
喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦將知止知止220-134-27-68.HINET-IP.hinet.net
TonyQ 07/04/29 20:10:15  220.134.27.68 修改這篇文章
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻