作者itoc.bbs@cpu.tfcis.org (核心動力) 看板: itoc
標題Re: 關於"連署系統"
時間動力核心 (2007/03/13 Tue 00:40:58)
※ 引述《guessi (沒)》之銘言:
> 做了 ◇ [功能] xover.c 進入 newboard 板就進連署機
> 希望 newboard 看板未讀燈號依據連署內容顯示
> 想法: 判斷連署機制內 有"任一"連署不為"NBRD_FINISH"則顯示"ICON_UNREAD_BRD"
: board.c:nbrd_unread() 新增函式在 btime_refresh() 前面
static int
nbrd_unread(folder)
char *folder;
{
NBRD nbrd;
int fd;
int rc = 0;
if ((fd = open(folder, O_RDONLY)) >= 0)
{
while (read(fd, &nbrd, sizeof(NBRD)) == sizeof(NBRD))
{
if (!(nbrd.mode & NBRD_FINISH))
{
rc = 1;
break;
}
}
close(fd);
}
return rc;
}
: board.c:btime_refresh()
if (brd->btime < 0)
{
int fd, fsize;
char folder[64];
struct stat st;
brd->btime = 1;
+ if (!strcmp(brd->brdname, "newboard"))
+ {
+ sprintf(folder, "run/newbrd/%s", fn_dir);
+ brd->bpost = rec_num(folder, sizeof(NBRD));
+ brd->blast = nbrd_unread(folder) ? time(NULL) : 0;
+ return;
+ }
brd_fpath(folder, brd->brdname, fn_dir);
: ──────────────────────────────────── :
然後在 newbrd.c 裡面所有會更動 NBRD_FINISH 旗標的地方
都加上 btime_update()
: newbrd.c:nbrd_add()
rec_add(dir, &nbrd, sizeof(NBRD));
+ btime_update(brd_bno("newboard"));
: newbrd.c:nbrd_reply()
if (!(nbrd->mode & NBRD_FINISH))
{
nbrd->mode ^= NBRD_FINISH;
currchrono = nbrd->btime;
rec_put(xo->dir, nbrd, sizeof(NBRD), xo->pos, cmpbtime);
+ btime_update(brd_bno("newboard"));
}
...
...
currchrono = nbrd->btime;
rec_ref(xo->dir, nbrd, sizeof(NBRD), xo->pos, cmpbtime, addreply);
+ btime_update(brd_bno("newboard"));
: newbrd.c:nbrd_finish()
nbrd->mode ^= NBRD_FINISH;
currchrono = nbrd->btime;
rec_put(xo->dir, nbrd, sizeof(NBRD), xo->pos, cmpbtime);
+ btime_update(brd_bno("newboard"));
: newbrd.c:nbrd_open()
nbrd->mode ^= NBRD_FINISH;
currchrono = nbrd->btime;
rec_put(xo->dir, nbrd, sizeof(NBRD), xo->pos, cmpbtime);
+ btime_update(brd_bno("newboard"));
: newbrd.c:nbrd_delete()
rec_del(xo->dir, sizeof(NBRD), xo->pos, cmpbtime);
+ btime_update(brd_bno("newboard"));
--
=[﹎:�摃�◣��:﹎ Origin ]|[ ���O���� cpu.tfcis.org ]|[�搟說�﹎:]=
=[﹊:�摃�╱��:﹊ Author ]|[218-168-194-169.dynamic.hi]|[���插�﹊:]=