回精華區
作者itoc.bbs@processor.tfcis.org (綠巨人好客?) 看板: plan
標題Re: [功能]能自訂看板分類顏色嗎
時間XEON (Tue, 15 Jul 2003 01:55:47 +0800 (CST)) Updated: 2005/06/17
: board.c:class_item()

- prints("%6d%c%s%-13s\033[1;3%dm%-5s\033[m%s %-*.*s %s %.*s\n",
+ prints("%6d%c%s%-13s\033[%sm%-4s\033[m %s %-*.*s %s %.*s\n",
    num, token, str, brd->brdname,
-   brd->class[3] & 7, brd->class,
+   class_color(brd->class), brd->class,
    brd->bvote ? "\033[1;33m投" :
    (brd->battr & BRD_NOTRAN ? ICON_NOTRAN_BRD : ICON_TRAN_BRD),
    brd->title, brd->BM);

: board.c:class_body()

        short *chx;
        char *img, *str;
+       char class[BCLEN + 1];

        img = class_img;
        chx = (short *) img + (CH_END - chn);
        str = img + *chx;
+       str_ncpy(class, str + BNLEN + 1, BCLEN + 1);
-       prints("%6d%c  %-13.13s\033[1;3%dm%-5.5s\033[m%s\n",
+       prints("%6d%c  %-13.13s\033[%sm%-5.5s\033[m%s\n",
          cnt, class_bits[-chn] & BRD_Z_BIT ? TOKEN_ZAP_BRD : ' ',
-         str, str[BNLEN + 4] & 7, str + BNLEN + 1, ...);
+         str, class_color(class), str + BNLEN + 1, ...);

: board.c:class_color() 加在 class_item() 前面

static char *       /* 回傳顏色 */
class_color(class)
  char *class;
{
  int i;
  char *str;
  extern FCACHE *fshm;

  for (i = 0; *(str = fshm->classtable[i]); i++)
  {
    if (!strcmp(class, str))
      break;
  }
  return fshm->colortable[i];
}

: cache.c

- static FCACHE *fshm;
+ FCACHE *fshm;

: global.h

#define FN_ETC_LOVELETTER "etc/loveletter"      /* 情書產生器文庫 */
+ #define FN_ETC_CLASS    "etc/class"           /* 看板分類顏色 */

: admutil.c:a_xfile()

#ifdef HAVE_LOVELETTER
    "情書產生器文庫",
#endif
+   "看板分類顏色",

  ...
  ...

#ifdef HAVE_LOVELETTER
    FN_ETC_LOVELETTER,
#endif
+   FN_ETC_CLASS,

: struct.h:FCACHE

typedef struct
{
  int shot[MOVIE_MAX];          /* Thor.980805: 合理範圍為 0..MOVIE_MAX - 1 */
  char film[MOVIE_SIZE];
+ char classtable[100][BCLEN + 1];
+ char colortable[100][20];
} FCACHE;

: camera.c:do_color() 加入 main() 前面

static void
do_color(fshm)
  FCACHE *fshm;
{
  int i;
  char msg[STRLEN], *str;
  FILE *fp;

  i = 0;

  if (fp = fopen(FN_ETC_CLASS, "r"))
  {
    for (; i < 99; i++)
    {
      if (!fgets(msg, STRLEN, fp))
        break;
      if (*msg == '#' || *msg == '\n')
        continue;
      if (str = strchr(msg, '\n'))
        *str = '\0';
      msg[BCLEN] = '\0';
      strcpy(fshm->classtable[i], msg);
      strcpy(fshm->colortable[i], msg + BCLEN + 1);
    }

    fclose(fp);
  }

  fshm->classtable[i][0] = '\0';
  strcpy(fshm->colortable[i], "1;37"); /* 在 list 裡面找不到時的預設顏色 */
}

: camera.c:main()

+ do_color(fshm);

  exit(0);
}

: etc/class 新增此檔案
: 或是從 BBS 站上 0Admin->Xfile 裡面改

# 井字開頭的是註解
# 格式是:   分類+一個空格+顏色控制碼
人文 1;35
文學 1;35
站務 1;34;41
個人 1;32
音樂 1;31
藝人 1;31
電影 1;31

--
| Origin |  MapleBBS-itoc 動力核心  processor.tfcis.org 
| Author | itoc.dorm11.nctu.edu.tw
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻