回文章列表
作者guessi.bbs@cpu.tfcis.org (沒) 看板: itoc
標題[功能] 使用文章代碼(AID)快速尋文
時間動力核心 (2009/06/10 Wed 23:14:42)
看到PTT看到這方便的功能 技癢之下就自己寫了一個同樣功能的函式

程式碼參考xover.c與xpost.c兩支程式的搜尋與游標控制功能的code

雖然不是創新 不過程式碼部分若與他站有雷同之處 存屬巧合 :p

歡迎討論與指教... 謝謝!


: src/maple/post.c  新增以下兩個函式於post_help之前

/* guessi.090610 顯示文章代碼(AID) */
int
post_aid_query(xo)
  XO *xo;
{
  HDR *hdr;
  char msg[64];
  hdr = (HDR *) xo_pool + (xo->pos - xo->top);
  sprintf(msg, "本文章代碼為: #%s", hdr->xname);
  vmsg(msg);
  return XO_FOOT;
}


/* guessi.090610 根據文章代碼(AID)找尋文章 */
static int
post_aid(xo)
  XO *xo;
{
  char *tag, *query, aid[9];
  int currpos, pos, max, match = 0;
  HDR *hdr;

  /* 保存目前所在的位置 */
  currpos = xo->pos;
  /* 紀錄看板文章總數;新貼文AID是未知的不可能在其中 */
  max = xo->max;

  /* 若沒有文章或其他例外狀況 */
  if (max <= 0)
    return XO_FOOT;

  /* 請求使用者輸入文章代碼(AID) */
  if (!vget(b_lines, 0, "請輸入文章代碼(AID): #", aid, sizeof(aid), DOECHO))
    return XO_FOOT;
  query = aid;

  for (pos = 0; pos < max; pos++)
  {
    xo->pos = pos;
    xo_load(xo, sizeof(HDR));
    /* 設定HDR資訊 */
    hdr = (HDR *) xo_pool + (xo->pos - xo->top);
    tag = hdr->xname;
    /* 若找到對應的文章,則設定match並跳出 */
    if (!strcmp(query, tag))
    {
      match = 1;
      break;
    }
  }

  /* 沒找到則恢復xo->pos並顯示提示文字 */
  if (!match)
  {
    zmsg("找不到文章,是不是找錯看板了呢?");
    xo->pos = currpos;  /* 恢復xo->pos紀錄 */
  }

  return post_load(xo);
}

: src/maple/post.c:post_cb[] 按鍵自訂 不要跟post.c xover.c xpost.c衝突到就好

+ '#', post_aid,                /* guessi.090610 以文章代碼(AID)快速尋文*/
+ 'W', post_aid_query,          /* guessi.090610 查詢文章代碼(AID) */
  'h', post_help


說穿了~ 其實就是利用檔案名稱必定不重複的特性去做的功能 :p



--
=[:摃��:﹎Origin ]|[  Ocpu.tfcis.org  ]|[�搟說:]=
=[:摃�╱�:Author ]|[118-161-224-232.dynamic.hi]|[�:]=
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻