[#15625] rb_hash_initialize — Takaaki Tateishi <ttate@...>
立石です.
22 messages
2002/01/04
[#15627] Re: rb_hash_initialize
— matz@... (Yukihiro Matsumoto)
2002/01/04
まつもと ゆきひろです
[#15628] Re: rb_hash_initialize
— Takaaki Tateishi <ttate@...>
2002/01/04
立石です.
[#15632] Re: rb_hash_initialize
— matz@... (Yukihiro Matsumoto)
2002/01/04
まつもと ゆきひろです
[#15634] Re: rb_hash_initialize
— Takaaki Tateishi <ttate@...>
2002/01/04
立石です.
[#15636] Re: rb_hash_initialize
— kjana@...4lab.to (YANAGAWA Kazuhisa)
2002/01/05
In message <200201042027.g04KR9VI015833@smtp16.dti.ne.jp>
[#15639] Re: rb_hash_initialize
— Takaaki Tateishi <ttate@...>
2002/01/05
At Sat, 5 Jan 2002 12:06:04 +0900,
[#15640] Re: rb_hash_initialize
— nobu.nakada@...
2002/01/05
なかだです。
[#15641] Re: rb_hash_initialize
— Takaaki Tateishi <ttate@...>
2002/01/05
At Sat, 5 Jan 2002 13:52:55 +0900,
[#15645] Enumerable#to_hash (Re: [ruby-talk:30339] Re: OT: Re: Sorting a Hash by value of integer stored in the Hash) — nobu.nakada@...
なかだです。
4 messages
2002/01/06
[#15649] Re: Enumerable#to_hash (Re: [ruby-talk:30339] Re: OT: Re: Sorting a Hash by value of integer stored in the Hash)
— matz@... (Yukihiro Matsumoto)
2002/01/07
まつもと ゆきひろです
[#15668] Re: [ruby-cvs] ruby, ruby/win32: * win32/resource.rb: Modify copyright in resource script. — nobu.nakada@...
なかだです。
7 messages
2002/01/10
[#15672] Re: [ruby-cvs] ruby, ruby/win32: * win32/resource.rb: Modify copyright in resource script.
— Takahiro Kambe <taca@...>
2002/01/10
余談です。
[#15685] undefined method `inherited' for false (NameError) — WATANABE Hirofumi <eban@...>
わたなべです。
13 messages
2002/01/15
[#15686] Re: undefined method `inherited' for false (NameError)
— nobu.nakada@...
2002/01/15
なかだです。
[#15688] Re: undefined method `inherited' for false (NameError)
— WATANABE Hirofumi <eban@...>
2002/01/16
わたなべです。
[#15689] Re: undefined method `inherited' for false (NameError)
— matz@... (Yukihiro Matsumoto)
2002/01/16
まつもと ゆきひろです
[#15690] Re: undefined method `inherited' for false (NameError)
— WATANABE Hirofumi <eban@...>
2002/01/16
わたなべです。
[#15691] Re: undefined method `inherited' for false (NameError)
— nobu.nakada@...
2002/01/16
なかだです。
[#15692] Re: undefined method `inherited' for false (NameError)
— WATANABE Hirofumi <eban@...>
2002/01/16
わたなべです。
[#15693] Re: undefined method `inherited' for false (NameError)
— matz@... (Yukihiro Matsumoto)
2002/01/16
まつもと ゆきひろです
[#15700] method cache — Takaaki Tateishi <ttate@...>
立石です.
9 messages
2002/01/17
[#15701] Re: method cache
— matz@... (Yukihiro Matsumoto)
2002/01/17
まつもと ゆきひろです
[#15704] Re: method cache
— Takaaki Tateishi <ttate@...>
2002/01/17
At Thu, 17 Jan 2002 18:23:40 +0900,
[#15703] SIG_IGN がひきつがれない — akira yamada / やまだあきら <akira@...>
8 messages
2002/01/17
[#15708] Re: SIG_IGN がひきつがれない
— matz@... (Yukihiro Matsumoto)
2002/01/17
まつもと ゆきひろです
[#15711] clearing method cache in rb_eval() — "K.Kosako" <kosako@...>
rb_eval()の中のNODE_CLASS, NODE_SCLASSの部分で、
5 messages
2002/01/18
[#15733] Win32API enhancement — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
7 messages
2002/01/21
[#15745] Win32OLE — Masaki Suketa <masaki.suketa@...>
助田です。
5 messages
2002/01/21
[#15757] 文字列→整数変換 — nobu.nakada@...
なかだです。
30 messages
2002/01/25
[#15758] Re: 文字列→整数変換
— matz@... (Yukihiro Matsumoto)
2002/01/25
まつもと ゆきひろです
[#15779] Re: 文字列→整数変換
— nobu.nakada@...
2002/01/27
なかだです。
[#15780] Re: 文字列→整数変換
— matz@... (Yukihiro Matsumoto)
2002/01/28
まつもと ゆきひろです
[#15781] Re: 文字列→整数変換
— nobu.nakada@...
2002/01/28
なかだです。
[#15782] Re: 文字列→整数変換
— matz@... (Yukihiro Matsumoto)
2002/01/28
まつもと ゆきひろです
[#15795] [PATCH] improve on \G — nobu.nakada@...
なかだです。
11 messages
2002/01/29
[#15801] Re: [PATCH] improve on \G
— matz@... (Yukihiro Matsumoto)
2002/01/29
まつもと ゆきひろです
[#15796] GC after load — Minero Aoki <aamine@...>
あおきです。
13 messages
2002/01/29
[#15799] Re: GC after load
— Minero Aoki <aamine@...>
2002/01/29
あおきです。舌足らずでした。
[#15802] Re: GC after load
— matz@... (Yukihiro Matsumoto)
2002/01/29
まつもと ゆきひろです
[#15806] Re: GC after load
— Minero Aoki <aamine@...>
2002/01/30
あおきです。
[#15807] Re: GC after load
— matz@... (Yukihiro Matsumoto)
2002/01/30
まつもと ゆきひろです
[#15810] racc fails on alpha-freebsd — Minero Aoki <aamine@...>
あおきです。
12 messages
2002/01/30
[#15812] Re: racc fails on alpha-freebsd
— matz@... (Yukihiro Matsumoto)
2002/01/30
まつもと ゆきひろです
[#15819] Re: racc fails on alpha-freebsd
— Minero Aoki <aamine@...>
2002/01/31
あおきです。
[#15830] [ 提案 ] puts, print 等を IO から分離 — UENO Katsuhiro <unnie@...>
うえのです。
14 messages
2002/01/31
[#15833] Re: [ 提案 ] puts, print 等を IO から分離
— matz@... (Yukihiro Matsumoto)
2002/02/01
まつもと ゆきひろです
[#15837] Re: [ 提案 ] puts, print 等を IO から分離
— Tanaka Akira <akr@...17n.org>
2002/02/01
In article <1012537417.431157.12483.nullmailer@ev.netlab.jp>,
[ruby-dev:15734] Re: win32/registry.rb (Re: [patch] resolv.rb for win32 platform)
From:
Tanaka Akira <akr@...17n.org>
Date:
2002-01-21 05:04:22 UTC
List:
ruby-dev #15734
In article <20020121132319.C46A.USA@osb.att.ne.jp>,
"U.Nakamura" <usa@osb.att.ne.jp> writes:
> これを踏まえて、resolv.rb へのパッチを末尾に。
> [ruby-dev:15573] との違いは、hosts を拾ってくるところと、いき
> なり win32/registry を require しないで RUBY_PLATFORM を見る
> ようにしたことです。
resolv.rb としては基本的には問題ありません。ただし、Unix 部分と
Windows 部分が非対称なのが気にいりません。対称にしたいんですが、こんな
のではどうでしょう?なお、Windows では /etc/resolv.conf は一切見なくな
ります。
# /etc/resolv.conf 以外のを指定できるようにする機能は中途半端だったと
# いうことで削除。
Index: lib/resolv.rb
===================================================================
RCS file: /src/ruby/lib/resolv.rb,v
retrieving revision 1.7
diff -u -r1.7 resolv.rb
--- lib/resolv.rb 2002/01/16 03:36:32 1.7
+++ lib/resolv.rb 2002/01/21 04:57:26
@@ -55,7 +55,7 @@
DNS stub resolver.
=== class methods
---- Resolv::DNS.new(resolv_conf='/etc/resolv.conf')
+--- Resolv::DNS.new
=== methods
--- Resolv::DNS#getaddress(name)
@@ -262,7 +262,24 @@
end
class Hosts
- DefaultFileName = '/etc/hosts'
+ if /cygwin|mingw|mswin32/ =~ RUBY_PLATFORM
+ require 'win32/registry'
+ Win32::Registry.open(Win32::Registry::HKEY_LOCAL_MACHINE,
+ 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters') do |reg|
+ type, data = reg.read('DataBasePath')
+ case type
+ when Win32::Registry::REG_EXPAND_SZ
+ path = data.gsub(/%([^%]+)%/) {ENV[$1]}
+ when Win32::Registry::REG_SZ
+ path = data
+ else
+ raise TypeError, "unexpected type #{type} (expect string)"
+ end
+ DefaultFileName = File.join(path.gsub(/\\/, '/'), 'hosts')
+ end
+ else
+ DefaultFileName = '/etc/hosts'
+ end
def initialize(filename = DefaultFileName)
@filename = filename
@@ -341,9 +358,9 @@
Port = 53
UDPSize = 512
- def initialize(config="/etc/resolv.conf")
+ def initialize(config=Config.new)
@mutex = Mutex.new
- @config = Config.new(config)
+ @config = config
@initialized = nil
end
@@ -562,7 +579,7 @@
@port = port
@sock = UDPSocket.new
@sock.connect(host, port)
- @sock.fcntl(Fcntl::F_SETFD, 1)
+ @sock.fcntl(Fcntl::F_SETFD, 1) if Fcntl.const_defined? :F_SETFD
@id = -1
@thread = Thread.new {
loop {
@@ -612,7 +629,7 @@
@port = port
@sock = TCPSocket.new
@sock.connect(host, port)
- @sock.fcntl(Fcntl::F_SETFD, 1)
+ @sock.fcntl(Fcntl::F_SETFD, 1) if Fcntl.const_defined? :F_SETFD
@id = -1
@senders = {}
@thread = Thread.new {
@@ -663,9 +680,8 @@
end
class Config
- def initialize(filename="/etc/resolv.conf")
+ def initialize
@mutex = Mutex.new
- @filename = filename
@initialized = nil
end
@@ -675,25 +691,13 @@
@nameserver = []
@search = nil
@ndots = 1
- begin
- open(@filename) {|f|
- f.each {|line|
- line.sub!(/[#;].*/, '')
- keyword, *args = line.split(/\s+/)
- next unless keyword
- case keyword
- when 'nameserver'
- @nameserver += args
- when 'domain'
- @search = [args[0]]
- when 'search'
- @search = args
- end
- }
- }
- rescue Errno::ENOENT
- end
+ if /cygwin|mingw|mswin32/ =~ RUBY_PLATFORM
+ initialize_win32
+ else
+ initialize_resolv_conf
+ end
+
@nameserver = ['0.0.0.0'] if @nameserver.empty?
unless @search
hostname = Socket.gethostname
@@ -703,9 +707,97 @@
@search = ['']
end
end
+
@initialized = true
end
}
+ end
+
+ DefaultResolvConf = '/etc/resolv.conf'
+ def initialize_resolv_conf
+ begin
+ open(DefaultResolvConf) {|f|
+ f.each {|line|
+ line.sub!(/[#;].*/, '')
+ keyword, *args = line.split(/\s+/)
+ next unless keyword
+ case keyword
+ when 'nameserver'
+ @nameserver += args
+ when 'domain'
+ @search = [args[0]]
+ when 'search'
+ @search = args
+ end
+ }
+ }
+ rescue Errno::ENOENT
+ end
+ end
+
+ def initialize_win32
+ require 'win32/registry'
+
+ Win32::Registry.open(Win32::Registry::HKEY_LOCAL_MACHINE,
+ 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters') do |reg|
+ begin
+ slist = reg.read_s('SearchList')
+ @search = slist.split(/,\s*/) unless slist.empty?
+ rescue Win32::Registry::Error
+ end
+
+ if add_search = @search.nil?
+ @search = []
+ begin
+ nvdom = reg.read_s('NV Domain')
+ unless nvdom.empty?
+ @search = [ nvdom ]
+ if reg.read_i('UseDomainNameDevolution') != 0
+ if /^[\w\d]+\./ =~ nvdom
+ devo = $'
+ end
+ end
+ end
+ rescue Win32::Registry::Error
+ end
+ end
+
+ Win32::Registry.open(reg, 'Interfaces') do |reg|
+ reg.each_key do |iface,|
+ Win32::Registry.open(reg, iface) do |regif|
+ begin
+ [ 'NameServer', 'DhcpNameServer' ].each do |key|
+ ns = regif.read_s(key)
+ unless ns.empty?
+ ns.split(/,\s*/).each do |ns|
+ @nameserver << ns unless @nameserver.include? ns
+ end
+ break
+ end
+ end
+ rescue Win32::Registry::Error
+ end
+
+ if add_search
+ begin
+ [ 'Domain', 'DhcpDomain' ].each do |key|
+ dom = regif.read_s(key)
+ unless dom.empty?
+ dom.split(/,\s*/).each do |dom|
+ @search << dom unless @search.include? dom
+ end
+ break
+ end
+ end
+ rescue Win32::Registry::Error
+ end
+ end
+ end
+ end
+ end
+ @search << devo if add_search and devo
+ end
+ @search = nil if @search.empty?
end
def single?
--
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)