作者itoc, 信區: itoc
標題[修正] visio.c 按空白鍵可 match 所有字首開頭的 ID
時間02/10/17
作者: itoc (拯救一個靈魂) 看板: plan
標題: Re: 請問一下 站長的功能
時間: Tue Jul 30 00:17:47 2002 Updated: 2003/12/13
※ 引述《tbp (tbp)》之銘言:
> 如果我想讓站長在查詢使用者時
> 按Space就直接顯示出所有使用者
> 不用輸入首字母
> 請問這樣怎麼改呢
: visio.c:vget_match()
else if (op & GET_USER)
{
struct dirent *de;
DIR *dirp;
int cc;
+ int cd;
char fpath[16];
- if (len == 0)
- return 0;
+ if (len)
+ {
cc = *prefix;
if (cc >= 'A' && cc <= 'Z') /* 換成小寫 */
cc |= 0x20;
if (cc < 'a' || cc > 'z')
return 0;
+ cd = cc;
+ }
+ else
+ {
+ if (!HAS_PERM(PERM_ALLACCT)) /* 一般使用者要輸入一字才比對 */
+ return 0;
+ cc = 'a';
+ cd = 'z';
+ }
+ for (; cc <= cd; cc++)
+ {
sprintf(fpath, "usr/%c", cc);
dirp = opendir(fpath);
while (de = readdir(dirp))
{
data = de->d_name;
+ if (*data <= ' ' || *data == '.')
+ continue;
- if (str_ncmp(prefix, data, len))
+ if (len && str_ncmp(prefix, data, len))
continue;
if (!match++)
{
match_title();
strcpy(hit = fpath, data); /* 第一筆符合的資料 */
}
move(row, col);
outs(data);
col += IDLEN + 1;
if (col >= SCR_WIDTH - IDLEN - 1)
{
col = 0;
if (++row >= b_lines)
{
if (match_getch())
+ {
+ cc = 'z'; /* 離開 for 迴圈 */
break;
+ }
row = 3;
}
}
}
closedir(dirp);
}
+ }
else /* Thor.990203.註解: GET_LIST */
--
□ 本文章由 itoc 從 itoc.Dorm-GD2.NCTU.edu.tw 發表精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻