[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>