[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[webdav-jp:0993] Re: mod_encoding 付き httpd の肥大化



  吉山です。

On Wed, 28 Apr 2004 22:34:08 +0900
Kenji Wakamiya <wkenji@xxxxxxxxxxxxxx> wrote:

> 若宮です。
> これは関連があるんじゃないか!?と思ってあちこちを調べていたら
> すっかり遅くなりました。(成果は上がりませんでした;)
> 
> >   じゃー、これでどうでしょう。
> 
> ありがとうございます(_ _)。このままだと通らなかったので、意味も調べずに
> 以下のようにしてみました。が、実行時に Segumentation fault の嵐となって
> しまい、ダメでした…。

  すいません。
  こちらで検証していない事がまるばれですな。

  iconv_hook.c では iconv_hook_t が↓の通り定義されています。
---
typedef struct {
  iconv_hook_module *cm;	// モジュール構造体
  iconv_t            cd;	// 記述子
} iconv_hook_t;
---
  iconv_hook_module は iconv_hook.h で↓の通り定義されています。
---
typedef struct iconv_hook_module_struct {
  size_t  (*iconv)(iconv_t cd,
                   char **src, size_t *srclen, char **outbuf, size_t *outlen);
  iconv_t (*iconv_open) (const char *ienc, const char *oenc);
  int     (*iconv_close)(iconv_t cd);
} iconv_hook_module;
---
  つまり、k=iconv_hook_open(..) の k では、
---
k->cm->iconv()	モジュールのiconv()処理
k->cm->iconv_open()	モジュールのiconv_open()処理
k->cm->iconv_close()	モジュールのiconv_close()処理
k->cd	モジュールの記述子
---
となります。これから考えると、
---
int
iconv_hook_close(iconv_t cd) {
  (*(cd->cm->iconv_close))(cd->cd);
  free((iconv_hook_t *)cd);
  return 0;
}
---
でいけるのではないでしょうか。

> >   最近の glibc だと、EUC-JP-MSや MS932 をサポートしている筈ですよ。
> >   Fedora 辺りにはありませんかね?
> > 	iconv  --list
> > で一覧に出るなら試してみて下さい。
> 
> 出ました。CP932 というのもありました。Web を検索すると、仰る通り Fedora
> Core 1 の glibc は「パッチ?」が当たっていて iconv_hook しなくても大丈夫
> という情報がありました。
> 
> たしかに glibc の iconv で、WinXP 相手でも 2000 相手でもほとんど問題なく
> 処理できているようなのですが、Win2000 の Web フォルダで "〜" 入りファイル
> を作成してしまうと、その部分が "?" に化け、自分でも削除等できなくなって
> しまいます。そのファイルを XP で見ると、"〜" の波が逆転した形の似て非なる
> 文字になります。しかし XP では、そのファイルも問題なく扱えました。
> 
> glibc の iconv は、これらごく一部の文字に未対応だがほぼ完全とと言われて
> いるのか、そんなことはなくて、やはり何か当方の作業ミスなのか、どうなんで
> しょうか(^^;。ちなみに Fedora で使用している glibc (RPM) のバージョンは、
> glibc-2.3.2-101.4 となっております。あと一歩なので、できれば glibc の
> iconv で解決したいところです〜。

  この件、何か分かります? > 森山さん

---
吉山あきら<yosshy@xxxxxxxxxxxx>