回精華區
作者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);

--
□ 本文章由 itocpc512-2.EE.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻