[#39325] File.fnmatch の改良について — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
はじめまして、山本です。
18 messages
2004/03/05
[#39327] Re: File.fnmatch の改良について
— Minero Aoki <aamine@...>
2004/03/05
青木です。
[#39326] Re: File.fnmatch の改良について
— "U.Nakamura" <usa@...>
2004/03/05
こんにちは、なかむら(う)です。
[#39329] Re: File.fnmatch の改良について
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/03/05
山本です。
[#39331] Re: File.fnmatch の改良について
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/03/05
山本です。
[#39335] Re: File.fnmatch の改良について
— "U.Nakamura" <usa@...>
2004/03/05
こんにちは、なかむら(う)です。
[#39347] Windows上でRuby+MySQL — Dan Yamamoto <dango@...>
団と申します。
9 messages
2004/03/09
[#39348] Re: Windows上でRuby+MySQL
— とみたまさひろ <tommy@...>
2004/03/09
とみたです。
[#39349] Re: Windows上でRuby+MySQL
— Yamamoto Dan <dango@...>
2004/03/09
団です。
[#39352] 1.8 の irb/completion.rb の挙動の違い — Wataru Gotoh <gotow@...>
後藤@北の方と申します。
1 message
2004/03/09
[#39367] [ANN] Nora 0.0.20040310 released — MoonWolf <moonwolf@...>
MoonWolfです。
1 message
2004/03/10
[#39383] Re: win32ole でexcel が終了しない — g-1@...5.so-net.ne.jp
中です。
7 messages
2004/03/18
[#39401] rubyの関数定義について — "yokoyama" <yokoyama@...0038.net>
はじめましてyokoyamaと申します。
11 messages
2004/03/21
[#39403] Re: rubyの関数定義について
— rubikitch <rubikitch@...>
2004/03/21
From: "yokoyama" <yokoyama@mf.0038.net>
[#39423] 例えば "26" を "&" に変換したい(sub, hex, pack) — 若宮 修司 <gba02077@...>
皆さん、初めまして。
5 messages
2004/03/23
[#39427] require 'cal'をexe化すると終了時にアプリケーションエラー — katata@...
どうもTa3と申します。
4 messages
2004/03/23
[#39429] trial version of Ruby/Tk — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
18 messages
2004/03/23
[#39454] Re: trial version of Ruby/Tk
— "Shirai,Kaoru" <shirai@...>
2004/03/31
白井です。
[#39460] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/01
永井@知能.九工大です.
[#39465] Re: trial version of Ruby/Tk
— "Shirai,Kaoru" <shirai@...>
2004/04/01
白井です。
[#39466] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/01
永井@知能.九工大です.
[#39467] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/01
永井@知能.九工大です.
[#39469] Re: trial version of Ruby/Tk
— "Shirai,Kaoru" <shirai@...>
2004/04/01
白井です。
[#39474] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/02
永井@知能.九工大です.
[#39476] Re: trial version of Ruby/Tk
— "Shirai,Kaoru" <shirai@...>
2004/04/02
白井です。
[#39482] Re: trial version of Ruby/Tk
— Hidetoshi NAGAI <nagai@...>
2004/04/02
永井@知能.九工大です.
[#39431] 「RPGツクール」の最新版にRubyが使われているそうですね — cyross@...
お久しぶりです。
6 messages
2004/03/23
[#39440] Amritaで複数行(<tr>)を繰り返したい — ITO Asuka <asuka@...>
伊藤と申します。
5 messages
2004/03/25
[#39444] gethostbynameでホスト名が引けない — 堀川 久 <vzw00011@...>
こんにちは。
11 messages
2004/03/28
[#39446] Re: gethostbynameでホスト名が引けない
— matz@... (Yukihiro Matsumoto)
2004/03/28
まつもと ゆきひろです
[#39450] Re: gethostbynameでホスト名が引けない
— 堀川 久 <vzw00011@...>
2004/03/30
こんにちは。
[#39451] Re: gethostbynameでホスト名が引けない
— matz@... (Yukihiro Matsumoto)
2004/03/30
まつもと ゆきひろです
[#39448] [ANN] Rubyお花見@井の頭公園 — TAKAHASHI Masayoshi <maki@...>
高橋征義です。お花見のご案内です。
1 message
2004/03/29
[#39453] Re: int/int in Ruby2? — Masaaki Sakano <mas@...>
坂野 正明です。
36 messages
2004/03/31
[#39455] Re: int/int in Ruby2?
— NISHIMATSU Takeshi <t-nissie@...>
2004/03/31
西松と申します.
[#39470] Re: int/int in Ruby2?
— Masaaki Sakano <mas@...>
2004/04/01
坂野 正明です。
[#39473] Re: int/int in Ruby2?
— matz@... (Yukihiro Matsumoto)
2004/04/01
まつもと ゆきひろです
[#39484] Re: int/int in Ruby2?
— Masaaki Sakano <mas@...>
2004/04/03
坂野 正明です。
[#39514] Re: int/int in Ruby2?
— OOTANI TAKASHI <otn@...5.so-net.ne.jp>
2004/04/08
大谷と申します。
[#39528] Re: int/int in Ruby2?
— "T Akutsu" <locrian@...>
2004/04/09
あくつです。なんかわくわくしてきだぞ。(^^;)
[#39538] Re: int/int in Ruby2?
— "T Akutsu" <locrian@...>
2004/04/12
あくつです。
[ruby-list:39444] gethostbynameでホスト名が引けない
From:
堀川 久 <vzw00011@...>
Date:
2004-03-28 09:02:22 UTC
List:
ruby-list #39444
こんにちは。 Socket/TCPSocket.gethostbyname()で"123.123.123.123"形式でアドレスを与 えるとホスト名が引けませんでした。 FreeBSD 4.6.2-RELEASE-p2 です。 getnameinfo()でエラーになっているようだったので、これを回避するように しました。しかし、IPv4べったりになっています。どうするのが良いでしょう か? -- HORIKAWA Hisashi (in Kanji: 堀川 久) Netsphere Laboratories http://www.nslabs.jp/
Attachments (1)
socket-q1.diff
(2.98 KB, text/x-diff)
--- ruby-1.8.1-20040308.orig/ext/socket/socket.c 2004-01-27 11:09:34.000000000 +0900
+++ ruby-1.8.1-20040308-cur/ext/socket/socket.c 2004-03-28 17:50:50.764725384 +0900
@@ -1027,57 +1027,63 @@
#endif
static VALUE
-make_hostent(addr, ipaddr)
- struct addrinfo *addr;
- VALUE (*ipaddr) _((struct sockaddr*, size_t));
+make_hostent(
+ VALUE host,
+ VALUE (*ipaddr)(const char*, int))
{
- struct addrinfo *ai;
- struct hostent *h;
+ struct hostent* h;
+ in_addr_t ia;
VALUE ary, names;
char **pch;
+ const char* hostname = StringValueCStr(host);
ary = rb_ary_new();
- rb_ary_push(ary, rb_str_new2(addr->ai_canonname));
-#if defined(HAVE_GETIPNODEBYNAME)
- {
- int error;
- h = getipnodebyname(addr->ai_canonname, addr->ai_family, AI_ALL, &error);
- }
-#elif defined(HAVE_GETHOSTBYNAME2)
- h = gethostbyname2(addr->ai_canonname, addr->ai_family);
-#else
- h = gethostbyname(addr->ai_canonname);
-#endif
+ ia = inet_addr(hostname);
+ if (ia != (in_addr_t) -1)
+ h = gethostbyaddr(&ia, sizeof(ia), AF_INET);
+ else
+ h = gethostbyname(hostname);
+
if (h) {
+ rb_ary_push(ary, rb_str_new2(h->h_name));
names = rb_ary_new();
if (h->h_aliases != NULL) {
for (pch = h->h_aliases; *pch; pch++) {
rb_ary_push(names, rb_str_new2(*pch));
}
}
-#if defined(HAVE_GETIPNODEBYNAME)
- freehostent(h);
-#endif
}
else {
+ rb_ary_push(ary, rb_str_new2(hostname));
names = rb_ary_new2(0);
}
rb_ary_push(ary, names);
- rb_ary_push(ary, INT2NUM(addr->ai_family));
- for (ai = addr; ai; ai = ai->ai_next) {
- rb_ary_push(ary, (*ipaddr)(ai->ai_addr, ai->ai_addrlen));
+ rb_ary_push(ary, INT2NUM(h->h_addrtype));
+ for (pch = h->h_addr_list; *pch; pch++) {
+ rb_ary_push(ary, (*ipaddr)(*pch, h->h_length));
}
return ary;
}
VALUE
-tcp_sockaddr(addr, len)
- struct sockaddr *addr;
- size_t len;
+tcp_sockaddr(
+ const char* addr,
+ int len)
{
- return make_ipaddr(addr);
+ char buf[1024];
+ char* p = buf;
+ if (len > 0) {
+ for (; len > 0; len--) {
+ p += sprintf(p, "%d.", *(unsigned char*) addr);
+ addr++;
+ }
+ *(p - 1) = '\0';
+ }
+ else
+ buf[0] = '\0';
+ return rb_str_new2(buf);
}
static VALUE
@@ -1085,7 +1091,7 @@
VALUE obj, host;
{
rb_secure(3);
- return make_hostent(sock_addrinfo(host, Qnil, SOCK_STREAM, AI_CANONNAME), tcp_sockaddr);
+ return make_hostent(host, tcp_sockaddr);
}
static VALUE
@@ -1984,11 +1990,11 @@
}
VALUE
-sock_sockaddr(addr, len)
- struct sockaddr *addr;
- size_t len;
+sock_sockaddr(
+ const char* addr,
+ int len)
{
- return rb_str_new((char*)addr, len);
+ return rb_str_new(addr, len);
}
static VALUE
@@ -1996,7 +2002,7 @@
VALUE obj, host;
{
rb_secure(3);
- return make_hostent(sock_addrinfo(host, Qnil, SOCK_STREAM, AI_CANONNAME), sock_sockaddr);
+ return make_hostent(host, sock_sockaddr);
}
static VALUE