作者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 ]|[ ���O���� cpu.tfcis.org ]|[�搟說�﹎:]=
=[﹊:�摃�╱��:﹊Author ]|[118-161-224-232.dynamic.hi]|[���插�﹊:]=