作者itoc, 信區: itoc
標題[功能] favor.c xover.c 我的最愛強制加入看板
時間04/04/16
作者: itoc (破解韌體才是王道!) 看板: plan
標題: [功能] 我的最愛強制加入看板
時間: 2004/04/16 Fri 14:29:54 Updated: 2005/07/21
我的最愛強制加入站長指定的看板在置頂
─────────────────────────────────────
先把介面改成有置頂的功能
: modes.h
- #define XO_TALL (b_lines - 3)
+ #define XO_TALL (b_lines - 3 - xo_top)
: global.h
VAR int b_lines; /* bottom line */
+ VAR int xo_top;
: xover.c:xo_load()
void
xo_load(xo, recsiz)
XO *xo;
int recsiz;
{
int fd, max;
+ xo_top = 0;
max = 0;
...
...
lseek(fd, (off_t) (recsiz * top), SEEK_SET);
- read(fd, xo_pool, recsiz * XO_TALL);
+ read(fd, xo_pool + xo_top * recsiz, recsiz * XO_TALL);
: xover.c:xo_cursor()
int
xo_cursor(ch, pagemax, num, pageno, pos, redraw)
int ch, pagemax, num;
int *pageno, *pos, *redraw;
{
+ xo_top = 0;
switch (ch)
─────────────────────────────────────
決定讓哪些看板置頂
: xover.c:xo_load()
if ((fd = open(xo->dir, O_RDONLY)) >= 0)
{
int pos, top;
struct stat st;
+ if (xo->key == XZ_MF)
+ {
+ MF mf;
+ /* 第一個板是 sysop 板 */
+ mf.mftype = MF_BOARD;
+ strcpy(mf.xname, "sysop");
+ memcpy(xo_pool + xo_top * recsiz, &mf, recsiz);
+ xo_top++;
+ /* 如果是板主,第二個板是 bm 板 */
+ if (HAS_PERM(PERM_BM))
+ {
+ mf.mftype = MF_BOARD;
+ strcpy(mf.xname, "bm");
+ memcpy(xo_pool + xo_top * recsiz, &mf, recsiz);
+ xo_top++;
+ }
+ }
fstat(fd, &st);
max = st.st_size / recsiz;
─────────────────────────────────────
其他小細節
: favor.c:mf_move() 置頂的看板不能被移動
MF *mf;
char *dir, buf[40];
int pos, newOrder;
+ if (xo->pos - xo_top < xo_top)
+ return XO_NONE;
pos = xo->pos;
mf = (MF *) xo_pool + (pos - xo->top);
--
□ 本文章由 itoc 從 pc512-2.EE.NCTU.edu.tw 發表