[#39464] Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
25 messages
2004/04/01
[#39608] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/02
遅い反応&File.fnmatchは使った事ない&ruby-devの方では
[#39609] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/02
File.fnmatch(と Dir.glob)をちょっと使ってみたのですが、
[#39610] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/05/02
山本です。
[#39611] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— matz@... (Yukihiro Matsumoto)
2004/05/02
まつもと ゆきひろです
[#39613] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/02
From: matz@ruby-lang.org (Yukihiro Matsumoto)
[#39616] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— matz@... (Yukihiro Matsumoto)
2004/05/02
まつもと ゆきひろです
[#39620] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/03
From: matz@ruby-lang.org (Yukihiro Matsumoto)
[#39621] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— matz@... (Yukihiro Matsumoto)
2004/05/03
まつもと ゆきひろです
[#39622] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/03
From: matz@ruby-lang.org (Yukihiro Matsumoto)
[#39623] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— matz@... (Yukihiro Matsumoto)
2004/05/03
まつもと ゆきひろです
[#39624] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案
— pegacorn@...
2004/05/03
From: matz@ruby-lang.org (Yukihiro Matsumoto)
[#39485] RAA trouble and maintenance — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
5 messages
2004/04/04
[#39513] リファレンスマニュアルを使うには? — "yokoyama" <yokoyama@...0038.net>
yokoyamaともうします。
4 messages
2004/04/08
[#39542] open-uri takes wrong value for Host with proxy — Atsushi SHICHI <ats7@...>
しちと申します。
5 messages
2004/04/12
[#39550] NEW trial (RC?) version of Ruby/Tk — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
10 messages
2004/04/14
[#39566] Re: int/int in Ruby2? — gldwssr@...
I am making elliptic curve crypto.
1 message
2004/04/15
[#39570] RC version of the next Ruby/Tk — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
5 messages
2004/04/18
[#39576] [ANN] nadoka 0.1.0 — SASADA Koichi <ko1@...>
ささだです。
6 messages
2004/04/20
[#39578] [ANN] Algorithm-Diff 0.1 released — MoonWolf <moonwolf@...>
GPLではないdiffライブラリとしてAlgorithm-DiffというのをRAAにリリースしました。
8 messages
2004/04/21
[#39579] Re: 気象庁の... Re: uriってどう使うんでしょうか — Hideyuki Oya <h_oya@...>
oyaです。
10 messages
2004/04/22
[#39588] ruby-ver? 配列のランダム化 — shintani kiyonori <k_shin@...>
毎度、初歩的な質問で申し訳ありません。新谷と申します。
11 messages
2004/04/25
[#39590] Re: ruby-ver? 配列のランダム化
— "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
2004/04/25
山本です。
[ruby-list:39468] Re: gethostbynameでホスト名が引けない
From:
堀川 久 <vzw00011@...>
Date:
2004-04-01 12:41:27 UTC
List:
ruby-list #39468
こんにちは。 Yukihiro Matsumoto wrote on the <1080777873.492134.22819.nullmailer@picachu.netlab.jp> >|Rubyのバージョンは、ruby 1.8.1 (2004-03-08) です。 >|よろしくお願いします。 > >おかしいなあ。[ruby-dev:39452]にも書いたように再現しません。 >このバグは ごめんなさい。[ruby-list:39450] でのエラーメッセージはRuby 1.6で動かし たときのものでした。 とはいうものの、Ruby 1.8でもやはりエラーになるので、調べました。 添付のパッチで直りました。gethostbyname()にNULLを渡したときにエラーに なっていました。また、addrinfoの解放漏れもあったので、その修正もしてい ます。 よろしくお願いします。 -- HORIKAWA Hisashi (in Kanji: 堀川 久) Netsphere Laboratories http://www.nslabs.jp/
Attachments (1)
socket-q2.diff
(4.19 KB, text/x-diff)
*** ../../../ruby-1.8.1-20040308.orig/ext/socket/socket.c 2004-01-27 11:09:34.000000000 +0900
--- socket.c 2004-04-01 21:31:29.947830152 +0900
***************
*** 625,631 ****
VALUE host, port;
int socktype, flags;
{
! struct addrinfo hints, *hintsp, *res;
char *hostp, *portp;
int error;
char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV];
--- 625,632 ----
VALUE host, port;
int socktype, flags;
{
! struct addrinfo hints;
! struct addrinfo* res = NULL;
char *hostp, *portp;
int error;
char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV];
***************
*** 637,649 ****
socktype = SOCK_DGRAM;
}
- hintsp = &hints;
MEMZERO(&hints, struct addrinfo, 1);
! hints.ai_family = PF_UNSPEC;
! hints.ai_protocol = 0;
hints.ai_socktype = socktype;
hints.ai_flags = flags;
! error = getaddrinfo(hostp, portp, hintsp, &res);
if (error) {
if (hostp && hostp[strlen(hostp)-1] == '\n') {
rb_raise(rb_eSocket, "newline at the end of hostname");
--- 638,648 ----
socktype = SOCK_DGRAM;
}
MEMZERO(&hints, struct addrinfo, 1);
! hints.ai_family = AF_UNSPEC;
hints.ai_socktype = socktype;
hints.ai_flags = flags;
! error = getaddrinfo(hostp, portp, &hints, &res);
if (error) {
if (hostp && hostp[strlen(hostp)-1] == '\n') {
rb_raise(rb_eSocket, "newline at the end of hostname");
***************
*** 1027,1064 ****
#endif
static VALUE
! make_hostent(addr, ipaddr)
! struct addrinfo *addr;
! VALUE (*ipaddr) _((struct sockaddr*, size_t));
{
struct addrinfo *ai;
struct hostent *h;
VALUE ary, names;
char **pch;
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
! if (h) {
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 {
names = rb_ary_new2(0);
--- 1026,1055 ----
#endif
static VALUE
! make_hostent(
! VALUE host,
! struct addrinfo* addr,
! VALUE (*ipaddr)(struct sockaddr*, size_t))
{
struct addrinfo *ai;
struct hostent *h;
VALUE ary, names;
char **pch;
+ const char* hostp;
+ char hbuf[NI_MAXHOST];
+
+ hostp = host_str(host, hbuf, sizeof(hbuf));
ary = rb_ary_new();
! rb_ary_push(ary, rb_str_new2(addr->ai_canonname ? addr->ai_canonname : hostp));
! if (addr->ai_canonname && (h = gethostbyname(addr->ai_canonname))) {
names = rb_ary_new();
if (h->h_aliases != NULL) {
for (pch = h->h_aliases; *pch; pch++) {
rb_ary_push(names, rb_str_new2(*pch));
}
}
}
else {
names = rb_ary_new2(0);
***************
*** 1084,1091 ****
tcp_s_gethostbyname(obj, host)
VALUE obj, host;
{
rb_secure(3);
! return make_hostent(sock_addrinfo(host, Qnil, SOCK_STREAM, AI_CANONNAME), tcp_sockaddr);
}
static VALUE
--- 1075,1089 ----
tcp_s_gethostbyname(obj, host)
VALUE obj, host;
{
+ struct addrinfo* addr;
+ VALUE r;
+
rb_secure(3);
! addr = sock_addrinfo(host, Qnil, SOCK_STREAM, AI_CANONNAME);
! r = make_hostent(host, addr, tcp_sockaddr);
! freeaddrinfo(addr);
!
! return r;
}
static VALUE
***************
*** 1995,2002 ****
sock_s_gethostbyname(obj, host)
VALUE obj, host;
{
rb_secure(3);
! return make_hostent(sock_addrinfo(host, Qnil, SOCK_STREAM, AI_CANONNAME), sock_sockaddr);
}
static VALUE
--- 1993,2007 ----
sock_s_gethostbyname(obj, host)
VALUE obj, host;
{
+ struct addrinfo* addr;
+ VALUE r;
+
rb_secure(3);
! addr = sock_addrinfo(host, Qnil, SOCK_STREAM, AI_CANONNAME);
! r = make_hostent(host, addr, sock_sockaddr);
! freeaddrinfo(addr);
!
! return r;
}
static VALUE