回精華區
作者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 */

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