作者chrisliu.bbs@loli.twbbs.org (ChrisLiu*) 看板: itoc
標題Re: [問題]功能-文章編輯時無法加分
時間蘿莉小站 (2007/02/26 Mon 01:15:13)
※ 引述《allen501pc.bbs@bbs.sa.ncyu.edu.tw (靜養中..)》之銘言:
我覺得有兩個問題
第一個是如同 weiyu.bbs@muse.twbbs.org 所說的沒有存入
第二個則是↓
> :maple/post.c
> :post_edit()
> FILE *fp;
> + int xmode;
> hdr = (HDR *) xo_pool + (xo->pos - xo->top);
> hdr_fpath(fpath, xo->dir, hdr);
> + xmode=hdr->xmode;
> ..
> ..
> else if (cuser.userlevel && !strcmp(hdr->owner, cuser.userid)) /* 原
> 作者修
> 改 */
> {
> + hdr->xmode = xmode ^ POST_NOW_EDIT;
> if (!vedit(fpath, 0)) /* 若非取消則加上修改資訊 */
在 post.c 中, 編輯只有這段程式碼
在編輯文章的過程中, 是在 edit.c : vedit()
也就是這段只是回傳 "編輯是否完成", 而不代表正在編輯的狀態
> {
> if (fp = fopen(fpath, "a"))
> {
> ve_banner(fp, 1);
> fclose(fp);
> }
> }
> + hdr->xmode=xmode;
因此, 即使在這邊寫回 hdr, 也只會變成 "此篇文章已經修改過" 的標記
> }
我想到的作法是: 在 edit.c vedit()
在 if (*fpath) 內剛開始的地方加入
hdr->xmode |= POST_NOW_EDIT;
然後馬上寫回到 .dir 內
最後在
case Ctrl('X'): /* Save and exit */
/* cc = ve_filer(fpath, ve_op & 1); */
cc = ve_filer(fpath, ve_op); /* itoc.010301: 新增 ve_op = -1 時不能儲存 */
if (cc <= 0)
+{
+ hdr->xmode &= ~POST_NOW_EDIT;
+ 寫回 .dir 內
return cc;
+}
ve_mode = mode | cc;
continue;
應該是這樣吧
不過這樣前面要加入讀hdr了
--
我猜 應該是這樣吧... 很少再改程式了, 我是用 2006年五月的程式碼當範本
--
˙ chrisliu -- 61-56-149-51-adsl-tao.STATIC.so-net.net.tw ﹒.˙.
˙ 克里斯劉個人站 ˙ loli.twbbs.org ˙ ────…‥.‧︰.∵.