[#20525] [BigDecimal] changing rule of coerce — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

44 messages 2003/07/07
[#20527] Re: [BigDecimal] changing rule of coerce — "Shigeo Kobayashi" <shigeo@...> 2003/07/07

小林です。

[#20528] Re: [BigDecimal] changing rule of coerce — matz@... (Yukihiro Matsumoto) 2003/07/07

まつもと ゆきひろです

[#20570] Marshal upgrade — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

41 messages 2003/07/09
[#20575] Re: Marshal upgrade — Masatoshi SEKI <m_seki@...> 2003/07/09

咳といいます。

[#20583] Re: Marshal upgrade — matz@... (Yukihiro Matsumoto) 2003/07/09

まつもと ゆきひろです

[#21016] Re: Marshal upgrade — matz@... (Yukihiro Matsumoto) 2003/07/30

まつもと ゆきひろです

[#20804] add library — nobu.nakada@... 2003/07/23

なかだです。

[#20580] add library(Re:ruby-dev:20570) — たむらけんいち <sgs02516@...>

たむらです。

30 messages 2003/07/09
[#20656] Re: add library — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/07/14

なひです。

[#20658] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <038d01c349cb$eaad71d0$93222fc0@sarion.co.jp>,

[#20659] Re: add library — matz@... (Yukihiro Matsumoto) 2003/07/14

まつもと ゆきひろです

[#20660] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <1058171960.400840.10041.nullmailer@picachu.netlab.jp>,

[#20661] Re: add library — Takahiro Kambe <taca@...> 2003/07/14

話をそらしてしまうかもしれませんが、

[#20665] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <20030714.183104.09092354.taca@back-street.net>,

[#20666] Re: add library — Takahiro Kambe <taca@...> 2003/07/14

In message <20030715.013655.424936247.gotoyuzo@kotetsu.does.notwork.org>

[#20668] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/14

In message <20030715.025907.26217115.taca@back-street.net>,

[#20750] Re: add library — Takahiro Kambe <taca@...> 2003/07/21

In message <20030715.051853.968499478.gotoyuzo@kotetsu.does.notwork.org>

[#20751] Re: add library — GOTOU Yuuzou <gotoyuzo@...> 2003/07/21

In message <20030721.163444.09092937.taca@back-street.net>,

[#20655] frozen ThreadGroup — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

26 messages 2003/07/14
[#20671] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/14

まつもと ゆきひろです

[#20673] Re: frozen ThreadGroup — Hidetoshi NAGAI <nagai@...> 2003/07/15

永井@知能.九工大です.

[#20676] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/15

まつもと ゆきひろです

[#20677] Re: frozen ThreadGroup — Hidetoshi NAGAI <nagai@...> 2003/07/15

永井@知能.九工大です.

[#20681] Re: frozen ThreadGroup — matz@... (Yukihiro Matsumoto) 2003/07/15

まつもと ゆきひろです

[#20690] portable(?) UserID/GroupID control (Re: frozen ThreadGroup) — Hidetoshi NAGAI <nagai@...> 2003/07/16

永井@知能.九工大です.

[#20712] Re: portable(?) UserID/GroupID control — Hidetoshi NAGAI <nagai@...> 2003/07/17

永井@知能.九工大です.

[#20735] Re: portable(?) UserID/GroupID control — matz@... (Yukihiro Matsumoto) 2003/07/20

まつもと ゆきひろです

[#20736] Re: portable(?) UserID/GroupID control — Hidetoshi NAGAI <nagai@...> 2003/07/20

永井@知能.九工大です.

[#20737] Re: portable(?) UserID/GroupID control — matz@... (Yukihiro Matsumoto) 2003/07/20

まつもと ゆきひろです

[#20748] [BigDecimal] exception handling — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

20 messages 2003/07/21

[#20765] Re: [ruby-cvs] ruby/lib: * lib/tmpdir.rb: new library to get temporary directory path, — WATANABE Hirofumi <eban@...>

わたなべです。

9 messages 2003/07/21

[#20780] complex.rb — Masahiro TANAKA <masa@...>

complex.rb についての修正案を[ruby-math:00543]で提案しましたが、その後

25 messages 2003/07/22
[#20782] Re: complex.rb — matz@... (Yukihiro Matsumoto) 2003/07/22

まつもと ゆきひろです

[#20900] Re: complex.rb — Masahiro TANAKA <masa@...> 2003/07/25

At Tue, 22 Jul 2003 17:30:31 +0900, Yukihiro Matsumoto wrote:

[#20905] Re: complex.rb — matz@... (Yukihiro Matsumoto) 2003/07/25

まつもと ゆきひろです

[#20906] Re: complex.rb — keiju@... (石塚圭樹) 2003/07/25

けいじゅ@いしつかです.

[#20810] Rational 始めました。 — Shin-ichiro HARA <sinara@...>

原です。

13 messages 2003/07/23
[#20876] Re: Rational 始めました。 — keiju@... (石塚圭樹) 2003/07/24

けいじゅ@いしつかです.

[#20954] ruby 1.8.0 preview5 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2003/07/28

[#20957] [BigDecimal] conflict between Numeric#div and BigDecimal#div — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>

斎藤です。

29 messages 2003/07/28
[#20960] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — Masahiro TANAKA <masa@...> 2003/07/28

At Mon, 28 Jul 2003 18:26:20 +0900, Tadashi Saito wrote:

[#20962] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — matz@... (Yukihiro Matsumoto) 2003/07/28

まつもと ゆきひろです

[#20990] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — Masahiro TANAKA <masa@...> 2003/07/29

At Mon, 28 Jul 2003 21:16:08 +0900, Yukihiro Matsumoto wrote:

[#20992] Re: [BigDecimal] conflict between Numeric#div and BigDecimal#div — matz@... (Yukihiro Matsumoto) 2003/07/29

まつもと ゆきひろです

[ruby-dev:20620] Re: rexmlのuconv依存

From: nobu.nakada@...
Date: 2003-07-10 23:07:01 UTC
List: ruby-dev #20620
なかだです。

At Thu, 10 Jul 2003 17:20:04 +0900,
Tanaka Akira wrote:
> > 吸収したいのは山々なんですが、iconvで何が使えるのか調べる方法と
> > 対応付がシステム依存になってしまうというところで止まってます。
> 
> このへんはシステム毎にアドホックにやるしかないでしょうから、iconv.rb
> をつくってそっちを呼び出すようにすればいいんじゃないかと思ってます。
> 
> まぁ、システムによっては方法が無いかもしれませんが、最悪ハードコードで
> もいいじゃありませんか。

その辺はしょうがないと思いますが、そのハードコードの元データを
どうしようかと。

> >> ていて、Solaris については公式っぽい対応表を捜し出すところまではやった
> >> のですが...
> >
> > どんなものでしょう。
> 
> http://jp.sun.com/software/management/internet/sims/docs/rn/probs_rnotes.1.html
> 
> の最後の「IMAP4 検索でサポートされる文字セット」です。

http://www.ctan.org/tex-archive/macros/texinfo/texinfo/intl/config.charset
もほぼ同じですね。

> 結局、メール関係を iconv で扱おうとすれば、(iconv が直接 MIME charset
> を扱わない限り)どうしてもこういう対応表は必要になります。だから、メー
> ルを扱うシステムが提供されてればどっかにはあるはずです。まぁ、それが公
> 開されているかどうかはわかんないわけで、最悪、システム付属の MUA
> (Solaris なら dtmail) のバイナリを strings するなどといった必要がある
> かも知れませんが。

それははげしくいやーん。というかクロスのときには使えませんね。

とりあえずこんなのを作ってみました。上のconfig.charsetが必要で
す。


Index: ext/iconv/MANIFEST
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/iconv/MANIFEST,v
retrieving revision 1.2
diff -u -2 -p -r1.2 MANIFEST
--- ext/iconv/MANIFEST	18 Mar 2002 09:23:11 -0000	1.2
+++ ext/iconv/MANIFEST	10 Jul 2003 13:08:19 -0000
@@ -3,2 +3,4 @@ extconf.rb
 iconv.c
 depend
+iconv-sysdep.rb
+config.charset
Index: ext/iconv/extconf.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/iconv/extconf.rb,v
retrieving revision 1.2
diff -u -2 -p -r1.2 extconf.rb
--- ext/iconv/extconf.rb	18 Mar 2002 03:54:10 -0000	1.2
+++ ext/iconv/extconf.rb	10 Jul 2003 13:06:22 -0000
@@ -1,8 +1,42 @@
 require 'mkmf'
 
+# http://www.ctan.org/tex-archive/macros/texinfo/texinfo/intl/config.charset
+# at Fri, 30 May 2003 00:09:00 GMT
+
 dir_config("iconv")
 
+config_charset = with_config("iconv-config.charset", "#{$srcdir}/config.charset")
+
+def charset_alias(config_charset)
+  map = {}
+  os = CONFIG["target_os"]
+  unless /linux|-gnu/ =~ os
+    comments = []
+    shell = with_config("shell", CONFIG['/bin/sh'])
+    IO.popen("#{shell} #{config_charset} #{os}", "r") do |conf|
+      conf.each do |list|
+        next if /^\#/ =~ list
+        next unless /^(\S+)\s+(\S+)$/ =~ list
+        next if $1 == $2
+        map[$2] = $1
+      end
+    end
+  end
+  if map.empty?
+    File.rm_f("./iconv.rb")
+  else
+    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}',")}
+      f.puts("  }\nend")
+    end
+    $INSTALLFILES = [["iconv-sysdep.rb", "$(RUBYLIBDIR)"], ["./iconv.rb", "$(RUBYARCHDIR)"]]
+  end
+end
+
 if have_header("iconv.h")
   have_library("iconv")
+  charset_alias(config_charset)
   create_makefile("iconv")
 end
Index: ext/iconv/iconv.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/iconv/iconv.c,v
retrieving revision 1.6
diff -u -2 -p -r1.6 iconv.c
--- ext/iconv/iconv.c	4 May 2003 16:03:14 -0000	1.6
+++ ext/iconv/iconv.c	10 Jul 2003 13:10:16 -0000
@@ -64,4 +64,5 @@ static VALUE iconv_failure_failed _((VAL
 
 static iconv_t iconv_create _((VALUE to, VALUE from));
+static void iconv_dfree _((void *cd));
 static VALUE iconv_free _((VALUE cd));
 static VALUE iconv_try _((iconv_t cd, const char **inptr, size_t *inlen, char **outptr, size_t *outlen));
@@ -123,4 +124,18 @@ iconv_create
 }
 
+static void
+iconv_dfree
+#ifdef HAVE_PROTOTYPES
+(void *cd)
+#else /* HAVE_PROTOTYPES */
+    (cd)
+    void *cd;
+#endif /* HAVE_PROTOTYPES */
+{
+    iconv_close(VALUE2ICONV(cd));
+}
+
+#define ICONV_FREE iconv_dfree
+
 static VALUE
 iconv_free
@@ -137,6 +152,4 @@ iconv_free
 }
 
-#define ICONV_FREE (RUBY_DATA_FUNC)iconv_free
-
 static VALUE
 iconv_try
@@ -189,5 +202,5 @@ iconv_failure_initialize
 #endif /* HAVE_PROTOTYPES */
 {
-    if (!rb_ivar_defined(error, rb_mesg) || NIL_P(rb_ivar_get(error, rb_mesg)))
+    if (NIL_P(rb_attr_get(error, rb_mesg)))
 	rb_ivar_set(error, rb_mesg, rb_inspect(failed));
     if (env) {
@@ -479,4 +492,22 @@ iconv_s_iconv
 }
 
+static VALUE
+iconv_s_conv
+#ifdef HAVE_PROTOTYPES
+    (VALUE self, VALUE to, VALUE from, VALUE str)
+#else /* HAVE_PROTOTYPES */
+    (self, to, from, str)
+    VALUE self, to, from, str;
+#endif /* HAVE_PROTOTYPES */
+{
+    struct iconv_env_t arg;
+
+    arg.argc = 1;
+    arg.argv = &str;
+    arg.ret = rb_str_new(0, 0);
+    arg.cd = iconv_create(to, from);
+    return rb_ensure(iconv_s_convert, (VALUE)&arg, iconv_free, ICONV2VALUE(arg.cd));
+}
+
 
 /*
@@ -691,7 +722,13 @@ Init_iconv _((void))
 {
     VALUE rb_cIconv = rb_define_class("Iconv", rb_cData);
+    VALUE metaclass = RBASIC(rb_cIconv)->klass;
+
     rb_define_alloc_func(rb_cIconv, iconv_s_allocate);
     rb_define_singleton_method(rb_cIconv, "open", iconv_s_open, 2);
     rb_define_singleton_method(rb_cIconv, "iconv", iconv_s_iconv, -1);
+    rb_define_singleton_method(rb_cIconv, "conv", iconv_s_conv, 3);
+    rb_enable_super(metaclass, "open");
+    rb_enable_super(metaclass, "iconv");
+    rb_enable_super(metaclass, "conv");
     rb_define_method(rb_cIconv, "initialize", iconv_initialize, 2);
     rb_define_method(rb_cIconv, "close", iconv_finish, 0);
Index: ext/iconv/iconv-sysdep.rb
===================================================================
RCS file: ext/iconv/iconv-sysdep.rb
diff -N ext/iconv/iconv-sysdep.rb
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ext/iconv/iconv-sysdep.rb	10 Jul 2003 12:50:09 -0000
@@ -0,0 +1,28 @@
+require 'iconv.so'
+class Iconv
+  init = instance_method(:initialize)
+  open = method(:open)
+  iconv = method(:iconv)
+  include Module.new {
+    define_method(:initialize, init)
+  }
+  extend Module.new {
+    define_method(:open, open)
+    define_method(:iconv, iconv)
+  }
+  def initialize(to, from)
+    to = Sysdep.fetch(to) {to}
+    from = Sysdep.fetch(from) {from}
+    super
+  end
+  def self.open(to, from)
+    to = Sysdep.fetch(to) {to}
+    from = Sysdep.fetch(from) {from}
+    super
+  end
+  def self.iconv(to, from, *args)
+    to = Sysdep.fetch(to) {to}
+    from = Sysdep.fetch(from) {from}
+    super
+  end
+end


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread