From: Tanaka Akira Date: 2003-07-12T06:30:33+09:00 Subject: [ruby-dev:20638] Re: iconv and MIME charset (Re: Re:rexmlのuconv依存) In article <200307111037.h6BAbHsS015027@sharui.nakada.kanuma.tochigi.jp>, nobu.nakada@nifty.ne.jp writes: > LGPLのものをそのまま配布物に含めることもまずいんでしたっけ? あ > とは生成されるコード自体がLGPLになるかどうかですが。 とりあえず 1.8 には他にも LGPL なのがあるから問題ないと思います。 でも、LGPL なのは減らす方向なんで気になりました。 生成されるコードについてはよくわかりません。 > サポートされる名前のリストを得ることはできても、そこにどうマッ > ピングするかを全部自動化するのはまた別問題のような気が。 順番から大体のあたりをつけて、あとは iconv と charset それぞれのドキュ メントを読んで確認かな。 > すでに「/linux|-gnu/なプラットフォームでは何もしない」というア > ドホックな対応が入ってます。まぁなんとかなるんでは。 考えてみると、このへんは API には影響を与えないので、後からどうにでも 変えられますね。 それはそれとして、とりあえず、MIME charset は case insensitive なので、 正規化しないといけません。 あと、仮引数に * なのがある場合の引数無しの super は仮引数を変更しても 変更してない引数で呼ぶようなので、明示的に引数を書かないといけないよう で。 うぅむ。extconf で生成するのはやっぱ変更-確認のサイクルがちょっと面倒... diff -u iconv-/extconf.rb iconv/extconf.rb --- iconv-/extconf.rb Sat Jul 12 06:22:07 2003 +++ iconv/extconf.rb Sat Jul 12 06:22:36 2003 @@ -29,7 +29,7 @@ open("iconv.rb", "w") do |f| f.puts(comments) f.puts("require 'iconv-sysdep'\nclass Iconv\n Sysdep = {") - map.each {|can, sys| f.puts(" '#{can}' => '#{sys}',")} + map.each {|can, sys| f.puts(" '#{can.downcase}' => '#{sys}',")} f.puts(" }\nend") end $INSTALLFILES = [["iconv-sysdep.rb", "$(RUBYLIBDIR)"], ["./iconv.rb", "$(RUBYARCHDIR)"]] diff -u iconv-/iconv-sysdep.rb iconv/iconv-sysdep.rb --- iconv-/iconv-sysdep.rb Sat Jul 12 06:22:07 2003 +++ iconv/iconv-sysdep.rb Sat Jul 12 06:23:09 2003 @@ -11,18 +11,18 @@ define_method(:iconv, iconv) } def initialize(to, from) - to = Sysdep.fetch(to) {to} - from = Sysdep.fetch(from) {from} + to = Sysdep.fetch(to.downcase) {to} + from = Sysdep.fetch(from.downcase) {from} super end def self.open(to, from) - to = Sysdep.fetch(to) {to} - from = Sysdep.fetch(from) {from} + to = Sysdep.fetch(to.downcase) {to} + from = Sysdep.fetch(from.downcase) {from} super end def self.iconv(to, from, *args) - to = Sysdep.fetch(to) {to} - from = Sysdep.fetch(from) {from} - super + to = Sysdep.fetch(to.downcase) {to} + from = Sysdep.fetch(from.downcase) {from} + super(to,from,*args) end end -- [田中 哲][たなか あきら][Tanaka Akira]