看板Maple
标 题Re: 关於 t 标签功能...
发信站清华资讯(枫桥驿站) (Thu May 2 09:59:10 2002)
转信站Ptt!news.cs.nthu!maple
※ 引述《chunhan (Hook Club)》之铭言:
> 站内不少版主是用 t 标签文章後, 最後再按 ctrl+d 将一些垃圾post 删除,
> 可是 t 文章後, 若不小心出了板再进入後, 就什麽都没有了ㄟ ><~
> 有无办法重新进入版面後, 文章还保留 t 的状态 (也就是前面有个 * 号),
> 方便板主不小心进出後还可以继续管理板务呢 ?
看板中被板主按 n 设为待砍的文章
再按 ^n,系统就会自动把所有待砍文章清除
(按键不喜欢的话自己改)
> hdr.h
#define POST_LABEL 0x00002000 /* 标记待砍的 */
> post.c post_attr()
attr = brh_unread(fhdr->chrono) ? 0 : 0x20;
mode &= (bbstate & STAT_BOARD) ? ~0 : ~POST_GEM; /* Thor:一般user看不到G */
if (mode &= (POST_MARKED | POST_GEM))
attr |= (mode == POST_MARKED ? 'M' : (mode == POST_GEM ? 'G' : 'B'));
+ else if (mode & POST_LABEL)
+ attr |= 'T';
else if (!attr)
attr = '+';
> post.c 新增这二只函式
static int
post_label(xo)
XO *xo;
{
if (bbstate & STAT_BOARD)
{
HDR *hdr;
int pos, cur, xmode;
pos = xo->pos;
cur = pos - xo->top;
hdr = (HDR *) xo_pool + cur;
xmode = hdr->xmode;
if (xmode & POST_MARKED) /* mark 不能待砍 */
return XO_NONE;
hdr->xmode = xmode ^ POST_LABEL;
#ifdef HAVE_XYPOST
rec_put(xo->dir, hdr, sizeof(HDR), xo->key == XZ_XPOST ? hdr->xid : pos);
#else
rec_put(xo->dir, hdr, sizeof(HDR), pos);
#endif
move(3 + cur, 7);
outc(post_attr(hdr));
}
return XO_NONE;
}
static int
post_prune(xo)
XO *xo;
{
int fdr, fsize, xmode;
char fnew[80], fold[80], *folder;
HDR *hdr;
FILE *fpw;
if (!(bbstate & STAT_BOARD))
return XO_NONE;
if (vans("确定要删除待砍文章吗(Y/N)?[N] ") != 'y')
return XO_FOOT;
folder = xo->dir;
if ((fdr = open(folder, O_RDONLY)) < 0)
return XO_FOOT;
if (!(fpw = f_new(folder, fnew)))
{
close(fdr);
return XO_FOOT;
}
/* itoc.020307.注解: 顺便有清 POST_CANCEL, POST_DELETE 整理版面的功用 */
fsize = 0;
mgets(-1);
while (hdr = mread(fdr, sizeof(HDR)))
{
xmode = hdr->xmode;
if (xmode & (POST_CANCEL | POST_DELETE)) /* 已删除 */
continue;
if (!(xmode & POST_LABEL))
{
if ((fwrite(hdr, sizeof(HDR), 1, fpw) != 1))
{
close(fdr);
fclose(fpw);
unlink(fnew);
return XO_FOOT;
}
fsize++;
}
else
{
/* 连线砍信 */
cancel_post(hdr);
hdr_fpath(fold, folder, hdr);
unlink(fold);
}
}
close(fdr);
fclose(fpw);
sprintf(fold, "%s.o", folder);
rename(folder, fold);
if (fsize)
rename(fnew, folder);
else
unlink(fnew);
return XO_LOAD;
}
> post.c post_cb[]
'n', post_label,
Ctrl('N'), post_prune,
> post.c xpost_cb[]
'n', post_label,
> @board.hlp
(D/^D/^N) 删除范围/标签/待砍 (m/i) 标记/待砍
--
※ Origin: 枫桥驿站<bbs.cs.nthu.edu.tw> ◆ From: nctu5566.Dorm3.NCTU.edu.tw
1F:→ jimmy3206777: かいかあたかまら 02/21 14:51