[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:44322] Re: logファイルの日本語 文字化け



関根です。

debian でどうなってるかは分かりませんが、original の vsftpd 
で確認すると以下のような感じなので、SJIS は無理そうですね。
なぜ 177 を mask してるのか謎なのですが、これさえなければ
EUC-JP ならいけそう (だけど、多分 client の対応をチェックし
ないといけない) です。

logging.c:
  static void
  vsf_log_do_log_to_file(int fd, struct mystr* p_str)
  {
    if (!tunable_no_log_lock)
    {
      int retval = vsf_sysutil_lock_file(fd);
      if (vsf_sysutil_retval_is_error(retval))
      {
	return;
      }
    }
    str_replace_unprintable(p_str, '?');
(snip)
str.c:
  str_replace_unprintable(struct mystr* p_str, char new_char)
  {
    unsigned int i;
    for (i=0; i < p_str->len; i++)
    {
      if (!vsf_sysutil_isprint(p_str->p_buf[i]))
(snip)
sysutil.c:
  int
  vsf_sysutil_isprint(int the_char)
  {
    /* From Solar - we know better than some libc's! Don't let any potential
     * control chars through
     */
    unsigned char uc = (unsigned char) the_char;
    if (uc <= 31)
    {
      return 0;
    }
    if (uc == 177)
    {
      return 0;
    }
    if (uc >= 128 && uc <= 159)
    {
      return 0;
    }
    return isprint(the_char);
  }

-- 
SEKINE Tatsuo:
 tsekine@xxxxxxxxxx    System Design & Research Inst. Co.,Ltd.