回精華區
作者weiyu.bbs@weiyu.twbbs.org (Andy) 看板: plan
標題Re: 中文帳號
時間王者之家 (2005/06/28 Tue 11:42:49) Updated: 2005/06/28
這篇主要是把之前的patch整理一下
並把已經發現的問題做個修正

首先先手動建立 ~/usr/中文 這個目錄
(雖然這樣對中文的搜尋效率並不好,不過如果這樣的帳號不是很多的話應該還好)

% mkdir ~/usr/中文

: lib/f_path.c: usr_fpath()

#if 0
  str_lower(buf, user);         /* lower case */
#endif
  /* Thor.981027: 防止 buffer overflow, 雖然 SunOS 4.1.x上無此情況, 以後再想好
的改法 */
  str_ncpy(buf, user, sizeof(buf));
- str_lower(buf, buf);
+ str_lowest(buf, buf);

+ if (buf[0] & 0x80)
+ {
+   strcpy(fpath, "中文");
+   fpath += 4;
+ }
+ else
+ {
    *fpath++ = *buf;
+ }
  mak_fpath(fpath, buf, fname);
}

: maple/bbsd.c : is_badid()
: util/mailpost.c: is_badid()

- if (!is_alpha(*userid))
+ if (!((*userid) & 0x80) && !is_alpha(*userid))
    return 1;

  ...
  ...

-   if (!is_alnum(ch))
+   if (!((*userid) & 0x80) && !is_alnum(ch))
      return 1;

--
  不過程式有些地方還是寫 sprintf(fpath, "usr/%c/%s/xxxx", *userid, userid);
  那麼就會出錯,要改為 usr_fpath(fpath, userid, "xxxx");

--
                        也許,人都會犯錯
                        但是真正值得注意的是
                        犯錯後表現的態度

                        如果有心去處理自己的錯誤
                        又何必害怕犯錯呢?

--
╭────╮ ╬ weiyu.csie.net ☆☆☆☆☆☆☆☆☆☆☆☆☆
家│ ╬ weiyu  ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
╰────╯ ╬ 發表於 weiyu.weiyu.csie.net  ☆☆☆☆☆☆☆
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻