[#26664] refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
山本です。
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
[#26711] --with-static-linked-extするとrequireできないライブラリがある — IWATSUKI Hiroyuki <don@...>
岩月と申します。
なかだです。
[#26721] TkVariable.new_hash 経由だと trace が発生しない — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26723] Fixnum演算メソッド中のcoerceの削減 — Tadashi Saito <shiba@...2.accsnet.ne.jp>
斎藤と申します。
[#26743] zsuper in a method with optional arg — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
[#26745] TkCheckbutton#variable as getter? — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
永井@知能.九工大です.
山本です。
永井@知能.九工大です.
[#26753] some questions about tcltklib.c — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
永井@知能.九工大です.
山本です。
[#26764] multi-thread and logger — Nobuhiro IMAI <nov@...>
いまいです。
[#26791] Failure: test_block_passing(TestIterator) — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
[#26800] reducing PUSH_TAG in rescue, and useless exceptions — nobu@...
なかだです。
[#26808] test/nkf/test_kconv.rb — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26817] test/socket/test_tcp.rb freeze on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
こんにちは、なかむら(う)です。
山本です。
山本です。
こんにちは、なかむら(う)です。
山本です。
こんにちは、なかむら(う)です。
山本です。返信が遅れてすみません。
[#26829] cannot check EOF of pipe on windows — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
山本です。
こんにちは、なかむら(う)です。
山本です。
なかだです。
山本です。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
山本です。
[#26840] [BUG] oniguruma + utf-8 — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
[#26851] ripper for 1.8 — Tanaka Akira <akr@...17n.org>
ruby-1.8 で動かす gonzui で、ruby code の解析をしたいという要望があっ
[#26872] irb -I/ruby -Iと$LOAD_PATH — akira yamada / やまだあきら <akira@...>
Debianユーザからruby -Iとirb -Iで
なかだです。
nobuyoshi nakada wrote:
けいじゅ@いしつかです.
けいじゅ@いしつかです.
なかだです。
けいじゅ@いしつかです.
まつもと ゆきひろです
けいじゅ@いしつかです.
[#26883] top level include on load(filename, true) — Shugo Maeda <shugo@...>
前田です。
[#26897] fail on make install — KIMURA Koichi <kimura.koichi@...>
木村です。
こんにちは、なかむら(う)です。
木村です。
木村です。
木村です。
こんにちは、なかむら(う)です。
木村です。
こんにちは、なかむら(う)です。
なかだです。
山本です。
なかだです。
なかだです。
山本です。
こんにちは、なかむら(う)です。
なかだです。
まつもと ゆきひろです
山本です。
なかだです。
[#26900] multiplying empty string — nobuyoshi nakada <nobuyoshi.nakada@...>
まつもと ゆきひろです
In article <1125327516.070646.12845.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1125356798.802509.8788.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1125369966.174424.13781.nullmailer@x31.priv.netlab.jp>,
[ruby-dev:26830] Re: cannot check EOF of pipe on windows
山本です。
>で、これでめでたしめでたしということでcommitしようかと思った
>のですが、bccwin32版にこのパッチを適用すると、mkexports.rbが
>Errno::EPIPE例外を発生してしまうようになりました。
>bccのCランタイムのソースを持ってないのでこれ以上追うのは困難
>なのですが、どなたか確認できる方はいらっしゃいませんか?
bcc32 では、win32/win32.c の 3209 行あたりですでに
#if defined __BORLANDC__ || defined _WIN32_WCE
#undef read
int
read(int fd, void *buf, size_t size)
{
int trap_immediate = rb_trap_immediate;
int ret = _read(fd, buf, size);
if ((ret < 0) && (errno == EPIPE)) {
errno = 0;
ret = 0;
}
rb_trap_immediate = trap_immediate;
catch_interrupt();
return ret;
}
#endif
という形で read の置き換えがされています。これが無効になった
ために EPIPE 問題が再発したのではないかと思います。
適当にマージしてみました。
Index: win32.c
===================================================================
RCS file: /src/ruby/win32/win32.c,v
retrieving revision 1.164
diff -u -w -b -p -r1.164 win32.c
--- win32.c 18 Aug 2005 02:07:28 -0000 1.164
+++ win32.c 19 Aug 2005 02:19:18 -0000
@@ -3286,22 +3286,26 @@ catch_interrupt(void)
CHECK_INTS;
}
-#if defined __BORLANDC__ || defined _WIN32_WCE
-#undef read
-int
-read(int fd, void *buf, size_t size)
+size_t
+rb_w32_read(int fd, void *buf, size_t size)
{
+ int oerr = errno;
int trap_immediate = rb_trap_immediate;
int ret = _read(fd, buf, size);
- if ((ret < 0) && (errno == EPIPE)) {
- errno = 0;
+#if defined __BORLANDC__ || defined _WIN32_WCE
+ if (ret < 0 && errno == EPIPE) {
+ errno = oerr;
+ ret = 0;
+ }
+#endif
+ if (ret < 0 && GetLastError() == ERROR_NETNAME_DELETED) {
+ errno = oerr;
ret = 0;
}
rb_trap_immediate = trap_immediate;
catch_interrupt();
return ret;
}
-#endif
#undef fgetc
int
Index: win32.h
===================================================================
RCS file: /src/ruby/win32/win32.h,v
retrieving revision 1.70
diff -u -w -b -p -r1.70 win32.h
--- win32.h 3 Aug 2005 01:21:20 -0000 1.70
+++ win32.h 19 Aug 2005 02:16:04 -0000
@@ -103,7 +103,6 @@ extern "C++" {
#define filelength(h) _filelength(h)
#define mktemp(t) _mktemp(t)
#define tell(h) _tell(h)
-#define unlink(p) _unlink(p)
#define write(h, b, l) _write(h, b, l)
#define _open _sopen
#define sopen _sopen
@@ -133,6 +132,8 @@ extern "C++" {
#define rmdir(p) rb_w32_rmdir(p)
#undef unlink
#define unlink(p) rb_w32_unlink(p)
+#undef read
+#define read(fd, buf, size) rb_w32_read(fd, buf, size)
#ifdef __MINGW32__
struct timezone {
@@ -200,6 +201,7 @@ extern int rb_w32_isatty(int);
extern int rb_w32_mkdir(const char *, int);
extern int rb_w32_rmdir(const char *);
extern int rb_w32_unlink(const char*);
+extern size_t rb_w32_read(int, void *, size_t);
#ifdef __BORLANDC__
extern int rb_w32_fstat(int, struct stat *);
これで bcc32 win32 ともにエラーにならなくなりました。
でも、何か HEAD と ruby_1_8 で挙動が違いますね・・・
HEAD で stdio を捨てた影響かと思って IO.popen('ruby', 'r+b')
としてみましたが同じでした。
E:\ruby-cvs\win32_1_8>ruby -v \z.rb
ruby 1.8.3 (2005-08-17) [i386-mswin32]
"1"
false
"\r"
false
"\n"
false
"x"
false
"y"
true
E:\ruby-cvs\win32>ruby -v \z.rb
ruby 1.9.0 (2005-08-18) [i386-mswin32]
"1"
false
"\r"
false
"\n"
true
p 1 のかわりに print 1 を使うと
E:\ruby-cvs\win32>ruby -v \z.rb
ruby 1.9.0 (2005-08-18) [i386-mswin32]
"1"
false
"x"
false
"y"
true
となるし、
IO.popen('ruby', 'r+'){|io|
io.write %q{
print 1
STDOUT.flush
print 'xy'
}
io.close_write
while c = io.read(1)
p c
p io.eof?
end
}
とすると
E:\ruby-cvs\win32>ruby -v \z.rb
ruby 1.9.0 (2005-08-18) [i386-mswin32]
"1"
true
途切れるので、flush が関係してるんでしょうか。